Ubuntu中使用锐捷+L2TP协议VPN拨号上网全攻略

06.09 Update 把忘记的压缩包补上了,以及标明了一些不同网络环境下需要修改的地方

这段时间实在是事情一大堆,所以虽然19号就搞定了Ubuntu下面的VPN拨号上网,但是隔了这么久才写这篇文章。

在Ubuntu 6.10出来的时候,就装上了,但是在搞定了锐捷,能上内网之后,就搞不定用VPN拨号上外网了,所以就一直没怎么用Ubuntu。在160G的硬盘坏之后,就更没条件去尝试Ubuntu上网了。一个阳光灿烂的下午,去把硬盘换了个新的回来之后,过了一天Ubuntu 7.04的CD就到了,刚好,听说Ubuntu 7.04 Fesity在VPN支持方面做得比较好了,就把Ubuntu给装上了。但是学校的VPN拨号是用L2TP协议,而不是PPTP,因此找到许多文章都没有用,只能自己摸索,某天晚上,弄到3点钟,终于让我撞大运,给弄出来了。

好了,废话不多,开始正事。

1. 准备工作

首先要做的是把本机的IP给设定好,在“系统>系统管理>网络”里进行设置,选择“Wired conection”,然后属性,设置Configuration为静态IP方式,然后把IP、子网掩码和网关按网络中心给的设置设置好。

接着,切换到DNS选项卡,把网络中心给DNS服务器给添加进去。

2. Ubuntu中的锐捷认证

虽然锐捷官方也出了Linux下面的Linux认证工具,但是那个工具是会检测代理服务器,因此在Ubuntu认证完成之后,过一段时间会莫名奇妙的断掉,所以我们需要寻找能代替官方认证工具的认证工具(呃,有些拗口)。

万幸,已经有牛人也是用的锐捷认证,并且破解了官方的认证工具,使它不再检测代理服务器,这个认证名字叫做myxrgsu,我已经放在文章末尾的压缩包了。运行myxrgsu之后,输入用户名和密码,并选择自己的认证方式就可以认证成功了。注意,运行myxrgsu需要root权限。

XRGSupplicant 1.1.1
Ruijie Network CopyRight 2004-2005
Please input your user name:{用户名}
Please input your password:{密码}
Use DHCP,1-Use,0-UnUse(Default: 0):
Use default auth parameter,0-Use 1-UnUse(Default: 0):
Searching server...
Connecting server...
Authenticating...
{认证成功时的服务器消息}
Authenticate SUCCESSFULLY!
Please input 'unauth' to LogOff:

在锐捷认证完成之后,就可以上内网了。

3. 安装L2TP协议的VPN拨号工具xl2tpd及配置

在Linux使用L2TP协议的VPN拨号,可以使用xl2tpd,它的源代码可以在http://www.xelerance.com/software/xl2tpd/下载。

要使用xl2tpd,需要先编译,刚装好Ubuntu时,编译xl2tpd会提示缺少头文件,这个时候用别人的电脑下载一个linux头文件的包安装一下就行了,包的名字叫linux-kernel-headers_2.6.18-7_i386.deb,当然版本号可能不同。如果不高兴编译,也可以下载文章末尾的压缩,里面包含了我编译好了xl2tpd,把它复制到/usr/local/bin,并用chmod 777 xl2tpd把它改成可执行的。

安装完xl2tpd之后修改以下几个文件:

/etc/xl2tpd/xl2tpd.conf

在/etc/xl2tpd/xl2tpd.conf中添加一个lac段。

[lac zstubras]
lns=61.130.10.217
redial=yes
redial timeout=15
max redials=5
require pap=yes
require chap=yes
require authentication=yes
name=这里改成你的用户名
ppp debug=no
pppoptfile=/etc/ppp/options.l2tpd

其中61.130.10.217是VPN拨号服务器,name是用户名,用网络中心给的就行。

使用require pap=yes开关是因为我用chap协议认证总是连接不上,而使用pap就行了。

/etc/ppp/options.l2tpd

接着修改/etc/ppp/options.l2tpd,这个文件里保存了拨号时的一些选项,如果没有这个文件可以新建一个,将文件内容改成以下内容:

noauth
proxyarp
defaultroute

/etc/ppp/pap-secrets

这里保存了使用pap协议认证时的用户名和密码,注意用户名需要与xl2tpd.conf中的name对应。在文件的最后加上一行:

username    *    password    *

其中username和password是VPN拨号的用户名和密码。

/etc/ppp/chap-secrets

同上,这个是使用chap协议认证时所用的用户名和密码,保险起见,两个认证方式我们都加上用户名和密码。

username    *    password    *

4. 配置拨号脚本

在配置完xl2tpd之后,还需要写一个拨号脚本,来控制xl2tpd进行VPN拨号。

将以下脚本存为/usr/local/sbin/bras-ctrl,可以使用命令sudo gedit /usr/local/sbin/bras-ctrl来创建。

如果直接复制过去保存后运行出现错误的话,那就可能因为换行符的问题,你需要自己把这些输入进去了。

注意:脚本中GATEWAY对应网关,route命令中的路由添加需要根据自己的网络环境来设置,还有拨号服务器的地址也要修改。

#!/bin/sh
case $1 in
route)
GATEWAY=10.9.232.1
{
route $2 -net 220.189.211.160 netmask 255.255.255.224 gw $GATEWAY
route $2 -net 218.108.82.160 netmask 255.255.255.240 gw $GATEWAY
route $2 -net 10.0.0.0 netmask 255.0.0.0 gw $GATEWAY
route $2 -net 172.16.0.0 netmask 255.240.0.0 gw $GATEWAY
route $2 -net 192.168.0.0 netmask 255.255.0.0 gw $GATEWAY
route $2 -net 210.32.24.0 netmask 255.255.252.0 gw $GATEWAY
route del default
if [ "$2"=="add" ]
then
# 此处host为拨号服务器地址
route add -host 61.130.10.217 eth0
fi
if [ "$2"=="del" ]
then
route add -net default gw $GATEWAY
fi
}&>/dev/null
modprobe ip_nat_ftp
;;
start)
mkdir /var/run/xl2tpd
echo ' > /var/run/xl2tpd/l2tp-control
xl2tpd
sleep 5
echo 'c zstubras' > /var/run/xl2tpd/l2tp-control
;;
stop)
echo 'd zstubras' > /var/run/xl2tpd/l2tp-control
;;
*)
echo 'Please specify your action: route add/del | start | stop'
;;
esac

5. 使用bras-ctrl拨号

在使用bras-ctrl之前,同样需要root权限,你可以用sudo bras-ctrl来运行,也来可以先用sudo -i切换到root。那么我假定已经切换到root,首先添加路由:

bras-ctrl route add

接着发送一个连接zstubras的命令给xl2tpd:

bras-ctrl start

稍等片刻,可以试着在终端中运行ping www.google.com,如果能正常ping通,那么恭喜,你已经连上internet了,enjoy it!

如果ping不通,呃,那么你需要再检查一遍以上步骤是否正确,

6. 参考资料

  1. 配置Linux下的l2tp客户端(debian和FC下) (by hellwolf)
  2. Arch Linux 下的BRAS配置方法 (by CloudiDust)

7. 相关附件

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>