> Ubuntu >

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.xl2tpd
length bit = yes
 

2) 设置安全认证方式及DNS等信息。
打开文件/etc/ppp/options.xl2tpd, 如果该文件不存在则创建之,并配置如下内容:

require-chap
ms-dns 172.17.92.188
lcp-echo-interval 10
lcp-echo-failure 3
auth
 

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

修改myuser和mypass为实际的用户名和密码

配置说明
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



(责任编辑:IT)