用xl2tpd建立L2TP协议的VPN连接

过眼云烟 posted @ 2011年3月20日 07:24 in Linux应用 with tags linux vpn L2TP , 40029 阅读

    在Linux中用xl2tpd建立L2TP协议的VPN连接需要两个配置文件,一个是给xl2tpd的配置文件,一个是给pppd的配置文件(xl2tpd会调用pppd)。

    为说明方便,我们假设我们要建立的VPN连接的名字为testvpn,连到的l2tp服务器地址为xxx.xxx.xxx.xxx,用户名为someone,密码为passwordstring。那么该xl2tpd的配置文件应该如下所示:

[global]
access control = no
port = 1701

[lac testvpn]
name = someone
lns = xxx.xxx.xxx.xxx
pppoptfile = /etc/ppp/peers/testvpn.l2tpd
ppp debug = no

    实际使用中,我们一般只需要修改四处:

  1. [lac testvpn]这一句将VPN连接的名字设置为testvpn,你应该把它改成你想要的名字
  2. name = someone这一句将您的用户名配置为someone,你应该把它改成你想要的名字
  3. lns = xxx.xxx.xxx.xxx这一句说明你要连接的服务器的地址为xxx.xxx.xxx.xxx
  4. pppoptfile = /etc/ppp/peers/testvpn.l2tpd告诉xl2tpd为该VPN连接调用pppd时,pppd的配置文件的路径为/etc/ppp/peers/testvpn.l2tpd,你应该把它改成你真正建立的pppd的名字

    以上这个文件被您修改并保存后,假设放在/etc/xl2tpd目录,名字为testvpn.options。

    下面,我们还需要一个pppd的配置文件,也就是之前提到的/etc/ppp/peers/testvpn.l2tpd。

    为此,我们打开/etc/ppp/peers目录,在其中新建一个文件testvpn.l2tpd(如果你在xl2tpd的配置文件中pppd配置文件写的是/etc/ppp/peers/testvpn.l2tpd的话)。结合之前有关VPN连接的说明,该pppd配置文件应该如下所示:

remotename testvpn
user "someone"
password "passwordstring"
unit 0
lock
nodeflate
nobsdcomp
noauth
persist
nopcomp
noaccomp
maxfail 5
debug

    实际使用,您一般只需要修改以下三处:

  1. remotename testvpn,这一句将VPN连接的名字设为testvpn,您应该把它改成您想要的名字
  2. user "someone",这一句将VPN连接的用户名设为someone,您应该把它改成您真正的用户名
  3. password "passwordstring",这一句将VPN连接的密码设为passwordstring,您应该把它改成您真正的密码

    至此,所有准备工作都完成了,下面我们需要做几件事情:

  1.切换到root用户

     2. 检查目录/var/run/xl2tpd是否存在。不存在的话,手动新建一个。

  3.启动xl2tpd

    在终端中输入下列命令并回车:

xl2tpd -c /etc/xl2tpd/testvpn.options

    你需要把/etc/xl2tpd/testvpn.options改成你的真正的xl2tpd配置文件的绝对路径(未测试相对路径是否可以)。

    4.建立VPN连接。

        在终端中输入下列命令并回车:

echo 'c testvpn' >/var/run/xl2tpd/l2tp-control

        当然,你需要把testvpn改成你的VPN连接的名字(即xl2tpd的配置文件中,跟在lac后面的词语)。

    5.查看VPN连接是否成功建立:

    如果是Ubuntu的话,一般需查看/var/log/syslog文件,如果文件中pppd条目中出现succeeded等词语,说明连接成功,VPN连接已经成功建立

         如果是Fedora的话,一般需改成查看/var/log/message文件。

         事实上,查看的文件是由/etc/rsyslog.conf的内容决定的。

    6.如果顺利的话,至此VPN连接已经成功建立,但是如果想让默认连接都走VPN的话(这也是通常的情况),我们还需要修改路由配置。

         在终端中输入下列命令并回车:

route del default
route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0

         至此,所有配置都已完成。

    7.断开VPN连接

    在终端中输入下列命令并回车:

echo 'd testvpn' >/var/run/xl2tpd/l2tp-control

         当然,你需要把testvpn改成你的VPN连接的名字(即xl2tpd的配置文件中,跟在lac后面的词语)。

 

PS:如果你觉得以上这些难以理解的话,可以使用vpnpptp软件帮助你建立L2TP协议的VPN连接(全图形化界面,非常方便)

        项目地址:http://code.google.com/p/vpnpptp/

Avatar_small
brent 说:
2011年4月25日 02:27

发现用xl2tpd 不能修改 路由信息。无法连接内部服务器。
vpn可以拨号但是不能访问内部服务器

Avatar_small
过眼云烟 说:
2011年4月25日 04:06

@brent: 什么叫不能修改路由信息surprise,用route命令不行吗,或者你在pppd的配置文件里加入defaultroute和replacedefaultroute两项试试

Avatar_small
tolbKni 说:
2011年9月02日 08:57

忍受不了 L2TP 的速度最终还是倒向了 PPTP ,可惜我的Android手机 PPTP 连接不上,可能是配置不当。

Avatar_small
earp 说:
2013年6月30日 22:38

这里面不用配Pre Shared Secret吗?


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter