l2tp vpn搭建總結(linode ubuntu)

galdys發表於2011-08-12
 

前段時間開始,公司的vpn開始不太好用了,因此我也逐步感覺到牆的力量。

恰好@Zealot有一個linode的vps,之前他搭了一個pptp的vpn,但是聯通3g又不能使用pptp vpn,於是嘗試自己搗鼓一個l2tp的vpn,斷斷續續嘗試了幾次,終於在今天成功了。

參考了很多網上的文章,發現網上的文章都沒有涵蓋到我碰到的種種問題,因此在這裡針對我的案例,寫一篇總結性的文章。

首先,按照apple4us的文章,安裝一系列軟體,寫配置:

sudo aptitude install openswan

vim /etc/ipsec.conf

config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    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=222.222.222.222
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

注意,ipsec.conf對格式要求很嚴格,縮排一定要有。

vim /etc/ipsec.secrets

222.222.222.222 %any: PSK “fan1qiang”

這裡的psk要解釋一下,這個是你在連線l2tp vpn時,需要填寫的secret。
此外,別忘記把222.222.222.222替換成你自己伺服器的ip(一共兩處)。繼續:

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

然後檢查ipsec是否ok了

sudo ipsec verify

下面是我最終的結果:

Version check and ipsec on-path [OK]
Linux Openswan U2.4.12/K2.6.18.8-linode22 (netkey)
Checking for IPsec support in kernel [OK]
NETKEY detected, testing for disabled ICMP send_redirects [OK]
NETKEY detected, testing for disabled ICMP accept_redirects [OK]
Checking for RSA private key (/etc/ipsec.secrets) [DISABLED]
ipsec showhostkey: no default key in “/etc/ipsec.secrets”
Checking that pluto is running [OK]
Two or more interfaces found, checking IP forwarding [OK]
Checking NAT and MASQUERADEing
Checking for ‘ip’ command [OK]
Checking for ‘iptables’ command [OK]
Opportunistic Encryption Support [DISABLED]

其中需要注意兩項:Checking for RSA private key和Opportunistic Encryption Support,第一項其實你大可不必管他,disable或者ok都行。如果你實在要解決,可以:

ipsec newhostkey –file /root/tmpkey
cat /root/tmpkey >> /etc/ipsec.secrets
rm /root/tmpkey

第二項DISABLED是正常狀態。

出了問題不要被這兩項迷惑,不是他們導致的。

接下來啟動:

sudo /etc/init.d/ipsec restart

如果出現錯誤,按照他指出的行數自己看看。接下來是l2tpd。

sudo aptitude install xl2tpd

vim /etc/xl2tpd/xl2tpd.conf

[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

然後安裝、配置ppp:

sudo aptitude install ppp

vim /etc/ppp/options.xl2tpd

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

新增一個vpn使用者:

vim /etc/ppp/chap-secrets

test l2tpd testpassword *

啟動l2tpd:

sudo /etc/init.d/xl2tpd restart

設定iptables轉發:

iptables –table nat –append POSTROUTING –jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

修改包轉發設定

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

vi /etc/sysctl.conf
修改 net.ipv4.ip_forward = 1
sysctl –p

好了,如果一切順利,你的l2tp應該裝好了,嘗試用iphone或者android連線一下。如果還有問題,請繼續。

第一個問題是執行sudo /etc/init.d/xl2tpd restart時,無法看到執行狀態,因此很多時候其實服務沒有起來。你可以用ps aux | grep l2tp確認一下,如果發現的確沒有這個程式,請使用

xl2tpd -D

開啟debug模式啟動。

如果你碰見了一些很莫名其妙的配置檔案錯誤提示,比如:

parse_config: line 13: data ‘n parameters:’ occurs with no context

而實際上你這一行並沒有錯誤,請檢查一下/etc/xl2tpd/xl2tpd.conf 裡面是不是有一行很長的註釋,把這些註釋分成多行或者刪除。

第二個問題,如果你啟動了xl2tpd,但是一連線iphone就提示“l2tp-vpn server did not respond”,或者android提示”challenge failed”,那請看看你的openswan 是不是 2.6.22或2.4.12:

dpkg -l | grep openswan

如果是,請重新編譯安裝:

sudo aptitude install libgmp3-dev gawk flex bison
wget http://www.openswan.org/download/openswan-2.6.24.tar.gz
tar xf openswan-2.6.24.tar.gz
cd openswan-2.6.24
make programs
sudo make install

如果你還有其他問題,歡迎在下面留言,我會嘗試幫你解決。

參考文章:
https://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html
http://b.gkp.cc/posts/setup-ipsec-l2tp-on-centos-55.html
http://suoluo.org/2010/04/4/ (上面三篇文章是全面介紹安裝過程的)
http://lists.openswan.org/pipermail/users/2006-November/011029.html (介紹如何fix Checking for RSA private key)
http://lifegoo.pluskid.org/?p=65 (指出xl2tpd.conf的註釋問題)

相關文章