好在想起学校以前架设的L2TP VPN,应该可以支持Linux,于是便一通谷歌百度,然而发现搜到的这些文章,要么十分繁琐,要么无法配通,因此就写了这篇博文,一则方便以后检索,二则也能给有这方面需要的兄弟提供一个方便。
一、安装XL2TPD
安装xl2tpd很简单,至少在Ubuntu上是这样:
- sudo apt-get install xl2tpd
二、配置XL2TPD
配置xl2tpd,需要修改它的配置文件(/etc/xl2tpd/xl2tpd.conf),如下所示:
-
sudo vi /etc/xl2tpd/xl2tpd.conf
-
[global]
-
port = 1701
-
access control = no
-
[lac testvpn]
-
lns = x.x.x.x ;您VPN服务器的IP地址或域名
-
redial = yes
-
redial timeout = 15
-
max redials = 5
-
require chap = yes
-
refuse pap = yes
-
require authentication = yes
-
name = name@your.org
-
pppoptfile = /etc/ppp/options.l2tpd.testvpn
-
ppp debug = no
其中比较关键的配置如下:
- 05行:[lac testvpn]是将VPN连接的名字设置为testvpn,您可以把它改成任何您想要的名字
- 06行:lns的内容填入您VPN服务器的IP地址或域名
- 10行:要求使用使用chap质询握手认证协议
- 13行:name的内容需要填入您的用户名
- pppoptfile的内容则是您接下来要生成的选项文件名,具体创建过程如下:
-
sudo vi /etc/ppp/options.l2tpd.testvpn
-
asyncmap 0
-
noauth
-
crtscts
-
lock
-
hide-password
-
modem
-
netmask 255.255.255.0
-
proxyarp
-
lcp-echo-interval 30
-
lcp-echo-failure 4
-
ipcp-accept-local
-
ipcp-accept-remote
-
noipx
然后再配置一下chap认证所需的用户名和密码即可:
-
sudo vi /etc/ppp/chap-secrets
-
# Secrets for authentication using CHAP
-
# client server secret IP addresses
-
name@your.org * mypassword *
其中name@your.org是用户名,它同xl2tp.conf配置文件中的name语句中的内容是一致的,而mypassword是该用户使用的密码。这样就配置好了xl2tpd了。
三、连接VPN
配置好了xl2tpd之后,为了要让它生效需要重启该服务:
- sudo /etc/init.d/xl2tpd restart
然后使用下列命令连接VPN:
- sudo -u root -H sh -c "echo 'c wzuvpn' > /var/run/xl2tpd/l2tp-control"
四、接下来的工作:
上述命令使用之后,并没有任何提示是否连接成功,为了检查连接是否成功,就需要使用以下指令来查看:
-
ifconfig
-
...
-
ppp0 Link encap:点对点协议
-
inet 地址:10.63.1.2 点对点:10.63.1.1 掩码:255.255.255.255
-
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 跃点数:1
-
接收数据包:4 错误:0 丢弃:0 过载:0 帧数:0
-
发送数据包:5 错误:0 丢弃:0 过载:0 载波:0
-
碰撞:0 发送队列长度:3
-
接收字节: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这个网段,这样就避免了访问家里网络的冲突:
-
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来访问内网及内网服务器,这样查看机器上的路由如下所示:
-
route
-
内核 IP 路由表
-
目标 网关 子网掩码 标志 跃点 引用 使用 接口
-
default dir-605 0.0.0.0 UG 0 0 0 eth0
-
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
-
link-local * 255.255.0.0 U 1000 0 0 eth0
-
192.168.0.0 * 255.255.128.0 U 0 0 0 ppp0
-
192.168.254.0 * 255.255.255.0 U 1 0 0 eth0
注意接口为ppp0的路由,千万不要象有些文章中写得那样,使用下列语句:
-
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连接可以用以下语句来实现:
- sudo -u root -H sh -c "echo 'd wzuvpn' > /var/run/xl2tpd/l2tp-control"
这样整个L2TP VPN的连接配置就介绍完了。
当然上述操作最好可以使用脚本来完成,由于没几句语句,所以就偷懒不写了,什么时候勤快了或更懒了,兴许会写出来,到时再更新吧!当然如果有兄弟看不下去,帮我写了那就最为完美了。一笑!
另:如果有部分服务连接不上的话,可以修改/etc/ppp/options.l2tpd.testvpn文件,通过添加mtu 1400来解决(当然1400这个值比较保守,要精确大小的话,可以通过分析该服务的包来计算精确值,这个比较复杂在这里就不详细说明了。
分享到:
相关推荐
ubuntu 11.10 设置固定ip,需要vi /etc/network/interfaces。
ubuntu+11.10+安装过程详解 能快捷安装
ubuntu11.10环境搭建,tftp,nfs,samba,vmtool等的配置;
ubuntu11.10安装及网络配置,其中包括安装说明和网络配置两份文件
ubuntu11.10 图文全攻略 linux
Ubuntu 11.10 安装方法全程记录
完全原创,Ubuntu 11.10系统安装,手把手带你安装每一步
本文档介绍在windows7上使用Win7+Ubuntu11.10(EasyBCD硬盘安装)来安装双系统,需要的朋友可以下载看看
ubuntu11.10安装教程及设置,本人自己照此安装,非常详细!
详细介绍了ubuntu的安装过程,并且附有安装过程的照片
默认的 ubuntu 安装后对本地化的支持是不完整的,这很正常,ubuntu 的软件工程师们已经替我们做了绝大部分的工作,我们需要做的只是一点点细小的工作,来使我们的 ubuntu 更利于使用。以下所有软件都可以通过在...
针对Ubuntu下乱码问题,提出以下解决方案,实测成功。
Ubuntu 11.10 H3C iNode 客户端 H3C iNode 客户端 for Ubuntu 11.10
VMware下安装Ubuntu 11.10 全程图解
Ubuntu11.10 libxml2-dev 安装包 libxml2_2.7.8.dfsg-4_i386.deb libxml2-dev_2.7.8.dfsg-4_i386.deb python-libxml2_2.7.8.dfsg-4_i386.deb zlib1g_1.2.3.4.dfsg-3ubuntu3_i386.deb zlib1g-dev_1.2.3.4.dfsg-3...
ubuntu11.10下安装VMwareTools图解,详细匹配,更容易理解。
ubuntu11.10 安装gnome3 和美化
android ubuntu 11.10 32 编译源码
比较详细,可以学习,安装的时候的硬盘分区和在window下的安装
成功实现Ubuntu11.10下安装Hadoop0.20.2(单机伪分布式)。涉及内容:1. 安装虚拟机VMware Workstation v7.1.4 2. 在虚拟机上安装ubuntu11.10 3. 为ubuntu11.10安装vmware tool 4. 安装JAVA6 5. 在ubuntu中安装ssh 6...