由于CentOS下的yum远不如apt好用,于是花了两个晚上的时间把Linode上的系统从CentOS换成了Ubuntu。昨天重新搭了wordpress、git,今天把L2TP搞定了,参考了很多文章,主要有这篇这篇,综合并整理了一下,贴在这里

Tips:在Linode上两个系统间迁移时,因为每次只能启动一个系统,原先以为得把文件从CentOS下到本地再传到Ubuntu,估计会很慢。后来想到能把原先的CentOS的磁盘直接在Ubuntu里mount,便能直接拷贝了

安装所需包

我用的Ubuntu是11.10,貌似下来xl2tpd是依赖于openswan和ppp的,于是直接安装xl2tpd

apt-get install xl2tpd

配置

IPSec

编辑/etc/ipsec.conf,改成

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

注意缩进,并替换${your.server.ip.address}为服务器公网IP地址

编辑/etc/ipsec.secrets,改成

${your.server.ip.address}    %any:    PSK    "${your.shared.secret}"

替换IP地址和共享密钥

修改/etc/sysctl.conf,添加

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

执行

sysctl -p

令修改生效

XL2TPD

修改/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
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

PPP

修改/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

修改/etc/ppp/chap-secrets添加密码,格式:

<用户名>  <名称,对应上面的name>  <密码>

添加iptables规则

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

并添加至/etc/rc.local

启动

service ipsec restart
service xl2tpd restart

OK,连接成功,let's break the damn wall!