Debian/Ubuntu下L2TP VPN配置

galdys發表於2011-08-19

似乎有些ISP遮蔽了PPTP VPN,就想試試L2TP VPN,主要參考了在Debian上建立基於L2TP的VPN。記下基本步驟做備份。

安裝openswan

sudo apt-get install openswan

修改/etc/ipsec.conf,替換YOUR_SERVER_IP_ADDRESS為server地址

version 2.0
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=YOUR_SERVER_IP_ADDRESS
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

在/etc/ipsec.secrets新增shared secret

YOUR_SERVER_IP_ADDRESS %any: PSK "YOURPSK"

修改網路屬性,加iptables做nat

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
iptables --table nat --append POSTROUTING --jump MASQUERADE

需要的話加到啟動檔案裡,可以是系統的啟動檔案,或者網路介面的。

重啟ipsec,然後驗證

sudo /etc/init.d/ipsec restart
sudo ipsec verify

所有都OK,最後一項Opportunistic Encryption Support是Disabled就沒問題了,否則會給出錯提示。我之前就是沒改所有的accept_redirects和send_redirects,看提示改了就好了。

安裝xl2tpd

sudo apt-get install xl2tpd

修改/etc/xl2tpd/xl2tpd.conf,加ip池和server的ip資訊

[global]
ipsec saref = yes
 
[lns default]
ip range = 10.10.10.10-10.10.10.250
local ip = 10.10.10.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

/etc/ppp/options.xl2tpd中是server的一些基本連線配置資訊

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

在/etc/ppp/chap-secrets中加vpn使用者,原文中有誤,第二項是server的名字,和options.xl2tpd裡的name的值對應,這裡應該是l2tpd

tony l2tpd password *

據說有的主機不帶/dev/ppp,需要自己建立

mknod /dev/ppp c 108 0

碰到這種情況,server的syslog裡

May 24 16:08:45 localhost xl2tpd[4062]: control_finish: Peer requested tunnel 29 twice, ignoring second one.
May 24 16:08:46 localhost xl2tpd[4062]: Maximum retries exceeded for tunnel 44651.  Closing.

在openswan的郵件列表裡找到解決辦法,相關連結:1 2
在/etc/ipsec.conf裡的L2TP-PSK-noNAT中加上

dpddelay=40
dpdtimeout=130
dpdaction=clear

知其然而不知其所以然,以後有興趣再研究。

相關文章