ubuntu linux 下建立 纯L2TP 服务端和客户端
以下是从网上摘下,并亲测可行的方法。
一。服务端
使用环境:
System:Ubuntu 10.04 Desktop
Package:xl2tpd
1. 安装所需软件包。
apt-get install xl2tpd(如需支持IP sec请自行安装)
2. 配置l2tp server
1) 配置PPP 连接的地址。
安装完xl2tpd,会在/etc/xl2tpd/目录下生成一个文件 xl2tpd.conf(由于这个文件里包含太多注释,导致运行的时候会出现一些奇怪的配置文件错误,如parse_config: line 13: data ‘n parameters:’ occurs with no context,于是我们可以将这个文件备份,重新创建一个xl2tpd.conf,配置如下内容:
[global] ipsec saref = no [lns default] ip range = 100.0.0.100-100.0.0.200 local ip = 100.0.0.10 require chap = yes require authentication = yes ppp debug = yes pppoptfile =/etc/ppp/options.xl2tpdlength bit = yes
2) 设置安全认证方式及DNS等信息。
打开文件/etc/ppp/options.xl2tpd,如果该文件不存在则创建之,并配置如下内容:
require-chap ms-dns 172.17.92.188 lcp-echo-interval 10 lcp-echo-failure 3auth
3) 添加L2TP连接的账户信息。
可以在/etc/ppp/chap-secrets 目录下添加用户名密码
如 test l2tpd 123456 *
或 test * 123456 *
第二个例子适用于所有ppp server(pppoe,pptp,l2tp)
另外,如果上一步指定的是需要pap认证方式, 则要在文件/etc/ppp/pap-secrets中添加相应的账户信息。
#####
运行:
Start: /etc/init.d/xl2tpd start
Stop: /etc/init.d/xl2tpd stop
Restart: /etc/init.d/xl2tpd restart
DEBUG: xl2tpd -D (debug 模式)
二。客户端
(1) 安装xl2tpd
apt-get install xl2tpd
(2) 修改/etc/xl2tpd/xl2tpd.conf,内容如下
[lac zhiwei] lns = 12.34.56.78 ppp debug = yes pppoptfile = /etc/ppp/options.l2tpd.client length bit = yes
修改12.34.56.78 为你自己的l2tp vpn服务器的Ip地址
(3) 还需要建立一个/etc/ppp/options.l2tpd.client,内容如下
ipcp-accept-local ipcp-accept-remote refuse-eap require-mschap-v2 noccp noauth idle 1800 mtu 1410 mru 1410 defaultroute replacedefaultroute usepeerdns debug lock connect-delay 5000 name my_user password my_pass
配置说明
defaultroute 添加一条默认路由记录到系统路由表,使用拨号服务器的内网IP作为网关
replacedefaultroute 代替默认的路由记录,默认的数据都从VPN通路走
usepeerdns 使用VPN拨号提供的DNS服务
mru 最大接收单元,对于VPN,设置为1410 mru范围在128-1500,
因为以太网的mru/mtu是1518,以太网的UDP包最大是 1472,L2TP包1460,L2TP上的TCP包为1420
请参看此文 http://huangdonghai.com/pptp-over-pppoe-mtu/
lock 应该在此串口上使用UUCP式的锁定以确 定对该设备为互斥(exclusive)存取。 防止别的程序写程序到这个串口,干扰PPP连接
noccp 禁止Compression Control Protocol 压缩控制协议的协商
noauth 不要求对方认证自己 (对客户端要设置这个选项,对服务端,应该配置auth,要求客户端来认证自己),并且Windows VPN服务器不会认证自己
crtscts 串口硬件流量控制,显然在VPN拨号中不应该使用
ipcp-accept-local pppd将会接受彼端对於本地IP位址 的意见,即使本地的IP位址已经在某个选项中指定。
ipcp-accept-remote pppd将会接受彼端对於它的IP位址 的意见,即使远端的IP位址已经在某个选项中指定。
对于客户端,IPCP的这两个选项是必要的
refuse-eap 拒绝使用eap,因为windows VPN服务器在对客户端进行认证时,会首先使用EAP
proxyarp 以对方的IP位址以及该系统的以太网路地址,增加一个条目到系统的ARP. 这样就让VPN中的内网地址,暴露在本地局域网内,这是不必要的
(4) 添加一条到你的VPN服务器的路由
ip ro ad 12.34.56.78 via 192.168.1.1
注意: 192.168.1.1 为我的局域网内的路由器的IP,12.34.56.78 是VPN服务器的IP
如果在配置中没有replacedefaultroute,或许需要添加
route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0
(5) 重启xl2tp服务
/etc/rc2.d/S18xl2tpd restart
或者
invoke-rc.d xl2tpd restart
(6)连接到指定lac
echo 'c zhiwei' > /var/run/xl2tpd/l2tp-control
注意,zhiwei就是/etc/xl2tpd/xl2tpd.conf中配置的lac名字
(7) 关闭l2tp连接
echo "d zhiwei" > /var/run/xl2tpd/l2tp-control
参考资料
http://www.jacco2.dds.nl/networking/Linux-l2tp.html
http://www.cublog.cn/u/8057/showart_83292.html
http://strongvpn.com/forum/viewtopic.PHP?id=788