读书人

ubuntu 11.10设立vpn l2tp

发布时间: 2012-08-03 00:12:14 作者: rapoo

ubuntu 11.10设置vpn l2tp

好在想起学校以前架设的L2TP VPN,应该可以支持Linux,于是便一通谷歌百度,然而发现搜到的这些文章,要么十分繁琐,要么无法配通,因此就写了这篇博文,一则方便以后检索,二则也能给有这方面需要的兄弟提供一个方便。

一、安装XL2TPD

安装xl2tpd很简单,至少在Ubuntu上是这样:

  1. sudo?apt-get?install?xl2tpd?

二、配置XL2TPD

配置xl2tpd,需要修改它的配置文件(/etc/xl2tpd/xl2tpd.conf),如下所示:

  1. sudo?vi?/etc/xl2tpd/xl2tpd.conf?[global]?
  2. port?=?1701?access?control?=?no?
  3. [lac?testvpn]?lns?=?x.x.x.x?;您VPN服务器的IP地址或域名?
  4. redial?=?yes?redial?timeout?=?15?
  5. max?redials?=?5?require?chap?=?yes?
  6. refuse?pap?=?yes?require?authentication?=?yes?
  7. name?= name@your.org pppoptfile?=?/etc/ppp/options.l2tpd.testvpn?
  8. ppp?debug?=?no?

其中比较关键的配置如下:

05行:[lac testvpn]是将VPN连接的名字设置为testvpn,您可以把它改成任何您想要的名字 06行:lns的内容填入您VPN服务器的IP地址或域名 10行:要求使用使用chap质询握手认证协议 13行:name的内容需要填入您的用户名 pppoptfile的内容则是您接下来要生成的选项文件名,具体创建过程如下:
  1. sudo?vi?/etc/ppp/options.l2tpd.testvpn?asyncmap?0?
  2. noauth?crtscts?
  3. lock?hide-password?
  4. modem?netmask?255.255.255.0?
  5. proxyarp?lcp-echo-interval?30?
  6. lcp-echo-failure?4?ipcp-accept-local?
  7. ipcp-accept-remote?noipx?

然后再配置一下chap认证所需的用户名和密码即可:

  1. sudo?vi?/etc/ppp/chap-secrets?#?Secrets?for?authentication?using?CHAP?
  2. #?client????????server??secret??????????????????IP?addresses?name@your.org *?????? mypassword??????? *?

其中name@your.org是用户名,它同xl2tp.conf配置文件中的name语句中的内容是一致的,而mypassword是该用户使用的密码。这样就配置好了xl2tpd了。

三、连接VPN

配置好了xl2tpd之后,为了要让它生效需要重启该服务:

  1. sudo?/etc/init.d/xl2tpd?restart?

然后使用下列命令连接VPN:

  1. sudo?-u?root?-H?sh?-c?"echo?'c?wzuvpn'?>?/var/run/xl2tpd/l2tp-control"?

四、接下来的工作:

上述命令使用之后,并没有任何提示是否连接成功,为了检查连接是否成功,就需要使用以下指令来查看:

  1. ifconfig?...?
  2. ppp0??????Link?encap:点对点协议?????????????inet?地址:10.63.1.2??点对点:10.63.1.1??掩码:255.255.255.255?
  3. ??????????UP?POINTOPOINT?RUNNING?NOARP?MULTICAST??MTU:1500??跃点数:1???????????接收数据包:4?错误:0?丢弃:0?过载:0?帧数:0?
  4. ??????????发送数据包:5?错误:0?丢弃:0?过载:0?载波:0???????????碰撞:0?发送队列长度:3??
  5. ??????????接收字节:40?(40.0?B)??发送字节:61?(61.0?B)?

如下所示,使用ifconfig命令之后,如果看到有ppp0,则说明该VPN连接成功,否则请查看xl2tpd是否正常启动(这个常在重启机器后出现)。

VPN连接成功之后,并不能正常工作,它还缺乏两个关键的内容,一是到内网的路由,二是内网内部服务器的解析。比如我学校的服务器使用192.168.0.0/255.255.128.0这个网段,而内网地址分配则使用整个10网段,因此我将我家中的路由设置为192.168.254.0/24这个网段,这样就避免了访问家里网络的冲突:

  1. sudo route add -net?192.168.0.0?netmask?255.255.128.0?dev?ppp0?sudo route add -net?10.0.0.0?netmask?255.0.0.0?dev?ppp0?

上述两句表明通过ppp0来访问内网及内网服务器,这样查看机器上的路由如下所示:

  1. route?内核?IP?路由表?
  2. 目标????????????网关????????????子网掩码????????标志??跃点???引用??使用?接口?default?????????dir-605?????????0.0.0.0?????????UG????0??????0????????0?eth0?
  3. 10.0.0.0????????*???????????????255.0.0.0???????U?????0??????0????????0?ppp0?10.63.1.1???????*???????????????255.255.255.255?UH????0??????0????????0?ppp0?
  4. link-local??????*???????????????255.255.0.0?????U?????1000???0????????0?eth0?192.168.0.0?????*???????????????255.255.128.0???U?????0??????0????????0?ppp0?
  5. 192.168.254.0???*???????????????255.255.255.0???U?????1??????0????????0?eth0?

注意接口为ppp0的路由,千万不要象有些文章中写得那样,使用下列语句:

  1. sudo route?del?default?sudo route?add?-net?0.0.0.0?netmask?0.0.0.0?dev?ppp0?

想象一下,01行一执行,默认路由被删除,VPN连接就不可能不断了。

那么对内网服务器的解析如何来处理呢?如果只需要访问几个地址的话,可以直接在/etc/hosts文件中直接解析,如果需要访问很多地址的话,可以修改/etc/resolv.conf文件中的DNS服务器,在顶部添加新的内网DNS服务器即可。

五、断开VPN连接

断开VPN连接可以用以下语句来实现:

  1. sudo?-u?root?-H?sh?-c?"echo?'d?wzuvpn'?>?/var/run/xl2tpd/l2tp-control"?

这样整个L2TP VPN的连接配置就介绍完了。

当然上述操作最好可以使用脚本来完成,由于没几句语句,所以就偷懒不写了,什么时候勤快了或更懒了,兴许会写出来,到时再更新吧!当然如果有兄弟看不下去,帮我写了那就最为完美了。一笑!

另:如果有部分服务连接不上的话,可以修改/etc/ppp/options.l2tpd.testvpn文件,通过添加mtu 1400来解决(当然1400这个值比较保守,要精确大小的话,可以通过分析该服务的包来计算精确值,这个比较复杂在这里就不详细说明了。

读书人网 >其他相关

热点推荐