在Ubuntu上配置L2TP/IPsec VPN

之前在工作的时候就被安排了一个任务是配置VPN,但是当时弄了一阵之后发现连接总是会出现问题(可以连上,但一访问外网,过一会儿就断线了o(╯□╰)o当时也没有测试手机连接VPN,现在搭建的这个我是按着网上的一些教程一步一步来的,但是,还是会出现同样的问题,不过在Android/iPhone上却可以很好的工作,不知道是个什么问题,还希望了解的大神能帮忙解释)

下面是在搭建/配置L2TP/IPsec VPN的过程中整理出来的一键配置shell脚本,有Ubuntu下的,也有CentOS下的。都是我在Zeddicus大牛的脚本(现在已经打不开下载地址了)基础上,结合网上的其他教程进行修改后而成的(主要在于OpenSwan的版本以及将一些需要开机启动的操作写入/etc/rc.local),先看Ubuntu版本:

总体过程就是:

一、安装 IPSec。因为 IPSec 会对 IP 数据包进行加密和验证。这意味着你的电脑 / 移动设备与服务器之间传输的数据无法被解密、也不能被伪造。这里推荐用 openswan 这个后台软件包来跑 IPSec。

二、编辑 /etc/ipsec.conf 。

三、编辑 /etc/ipsec.secrets 。

四、开启端口转发:
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

五、检查一下 IPSec 能否正常工作:
sudo ipsec verify
如果在结果中看到「Opportunistic Encryption Support」被禁用了,没关系,其他项 OK 即可。

六、重启 openswan:
sudo /etc/init.d/ipsec restart

七、安装 L2TP。常用的 L2TP 后台软件包是 xl2tpd,它和 openswan 是同一帮人写的。

八、编辑 /etc/xl2tpd/xl2tpd.conf 。
需要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。

九、安装 ppp。这是用来管理 VPN 用户的。

十、编辑 /etc/ppp/options.xl2tpd 这个文件,没有的话就建一个。

十一、添加 VPN 用户。编辑 /etc/ppp/chap-secrets。

十二、重启 xl2tpd:
sudo /etc/init.d/xl2tpd restart

十三、设置 iptables 的数据包转发:
iptables –table nat –append POSTROUTING –jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

十四、因为某种原因,openswan 在服务器重启后无法正常自动,所以需要编辑 /etc/rc.local 文件。
到这里,设置工作已经基本完成。你可以用 Android 或 iPhone/iPad 试着连一下。

如果连接成功,上网也没问题的话,恭喜你,大功告成。如果连不上,慢慢排查问题吧(比如可以使用命令:xl2tpd -D,进行调试)。


注意:openswan 的版本对于配置能否成功有很大的影响,所以请多尝试。如果做完以上十四步还是连不上的话,请考虑从源码编译 openswan :

sudo apt-get install -y libgmp3-dev gawk flex bison
wget http://www.openswan.org/download/openswan-2.6.24.tar.gz
tar xf openswan-2.6.24.tar.gz
cd openswan-2.6.24
make programs
sudo make install
编译需要一段时间。你的 Linux 内核版本需要高于 2.6.6。


附上一些不错的参考资料:

声明: 除非注明,CrazyOf.me文章均为原创,转载请以链接形式标明本文地址,谢谢!
http://crazyof.me/blog/archives/610.html

《在Ubuntu上配置L2TP/IPsec VPN》有2个想法

  1. 在CentOS上一键安装IPSec VPN

    # yum update && shutdown -r now
    # wget https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/vpnsetup_centos.sh
    # vim vpnsetup_centos.sh
    [Replace with your own values: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD]
    # sh vpnsetup_centos.sh

发表评论

电子邮件地址不会被公开。 必填项已用*标注