歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

CentOS Linux VPS安裝IPSec+L2TP VPN

第二層隧道協議L2TP(Layer 2 Tunneling Protocol)是一種工業標准的Internet隧道協議,它使用UDP的1701端口進行通信。L2TP本身並沒有任何加密,但是我們可以使用IPSec對L2TP包進行加密。L2TP VPN比PPTP VPN搭建復雜一些。

一、安裝IPsec,Openswan是Linux系統上IPsec的一個實現。
官網:http://www.openswan.org/

1、安裝必備軟件:

yum install make gcc gmp-devel bison flex lsof

make,gcc我們都知道是干什麼用的了。
gmp-devel: Development tools for the GNU MP arbitrary precision library.
bison: A GNU general-purpose parser generator.
flex: A tool for creating scanners (text pattern recognizers).
看上去好像都和編譯器有關?

2、安裝Openswan:
由於更新源上的版本是2.6.21-5.el5_6.4較老,這裡使用源碼安裝,目前最新版是2.6.35。

cd /tmp
wget http://www.openswan.org/download/openswan-2.6.35.tar.gz
tar -zxvf openswan-2.6.35.tar.gz
cd openswan-2.6.35
make programs install

PS:進openswan-2.6.35目錄看到已經有Makefile文件了,閱讀目錄內的INSTALL寫著
Building userland:
make programs install

3、配置IPSec
編輯配置文件/etc/ipsec.conf:

cp /etc/ipsec.conf /etc/ipsec.conf.bak
vim /etc/ipsec.conf

查找protostack=auto,修改為:

protostack=netkey

在最後加入:

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=YOUR.SERVER.IP.ADDRESS
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

“YOUR.SERVER.IP.ADDRESS”換成VPS的外網IP。其中一些設置含義可以參考/etc/ipsec.d/examples/l2tp-psk.conf文件的內容。

4、設置共享密鑰PSK
編輯配置文件/etc/ipsec.secrets:

vim /etc/ipsec.secrets

輸入:

YOUR.SERVER.IP.ADDRESS %any: PSK "YourSharedSecret"

5、修改包轉發設置
復制以下兩段代碼在終端裡運行:

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

echo 1 >/proc/sys/net/core/xfrm_larval_drop

修改內核設置,使其支持轉發,編輯/etc/sysctl.conf文件:

vim /etc/sysctl.conf

將“net.ipv4.ip_forward”的值改為1。

使修改生效:

sysctl -p

6、重啟IPSec:

/etc/init.d/ipsec restart

查看系統IPSec安裝和啟動的正確性:

ipsec verify

沒有報[FAILED]就可以了。

我用的這個VPS結果顯示如下:

二、安裝L2TP(xl2tpd和rp-l2tp)
xl2tpd是由Xelerance Corporation維護的l2tpd應用。但是xl2tpd沒有l2tp-control,需要從rp-l2tp這個裡面提取。所以要裝這兩個軟件包。

1、安裝必備軟件:

yum install libpcap-devel ppp policycoreutils

2、安裝xl2tpd和rp-l2tp:

cd /tmp
wget http://sourceforge.net/projects/rp-l2tp/files/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz
tar -zxvf rp-l2tp-0.4.tar.gz
cd rp-l2tp-0.4
./configure
make
cp handlers/l2tp-control /usr/local/sbin/
mkdir /var/run/xl2tpd/
ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control

xl2tpd用的是目前最新的xl2tpd-1.3.0:

cd /tmp
wget http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.3.0.tar.gz
tar -zxvf xl2tpd-1.3.0.tar.gz
cd xl2tpd-1.3.0
make
make install

顯示安裝了如下一些內容:

3、建立xl2tpd配置文件:

mkdir /etc/xl2tpd
vim /etc/xl2tpd/xl2tpd.conf

加入:

[global]
ipsec saref = yes

[lns default]
ip range = 10.82.88.2-10.82.88.254
local ip = 10.82.88.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

4、配置ppp
建立options.xl2tpd文件:

vim /etc/ppp/options.xl2tpd

加入:

require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

5、設置撥號用戶名和密碼:

vim /etc/ppp/chap-secrets

6、添加iptables轉發規則:

iptables --table nat --append POSTROUTING --jump MASQUERADE

保存iptables轉發規則:

/etc/init.d/iptables save

重啟iptables:

/etc/init.d/iptables restart

7、以debug方式啟動l2tp,查看有無錯誤:

xl2tpd -D

顯示如下:
xl2tpd[9647]: Enabling IPsec SAref processing for L2TP transport mode SAs
xl2tpd[9647]: IPsec SAref does not work with L2TP kernel mode yet, enabling forceuserspace=yes
xl2tpd[9647]: setsockopt recvref[22]: Protocol not available
xl2tpd[9647]: This binary does not support kernel L2TP.
xl2tpd[9647]: xl2tpd version xl2tpd-1.3.0 started on myserver.localdomain PID:9647
xl2tpd[9647]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
xl2tpd[9647]: Forked by Scott Balmos and David Stipp, (C) 2001
xl2tpd[9647]: Inherited by Jeff McAdams, (C) 2002
xl2tpd[9647]: Forked again by Xelerance (www.xelerance.com) (C) 2006
xl2tpd[9647]: Listening on IP address 0.0.0.0, port 1701
說明已經在監聽端口了。現在可以在windows上建立L2TP撥號連接了。

三、設置開機啟動

vim /etc/rc.local

加入:

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

echo 1 >/proc/sys/net/core/xfrm_larval_drop

/etc/init.d/ipsec restart

/usr/local/sbin/xl2tpd

四、建立連接時遇到的問題
windows下新建一個VPN連接,屬性-網絡-VPN類型選擇L2TP IPSec VPN,安全-IPSec設置-輸入共享密鑰。

提示“錯誤 768:因為加密數據失敗連接嘗試失敗。”
IPSEC services被關掉了。開始-運行-輸入services.msc,然後在服務中啟用“IPSEC services”即可。

Copyright © Linux教程網 All Rights Reserved