如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
来源:互联网 发布:淘宝new balance正品店 编辑:程序博客网 时间:2024/05/21 12:50
很多公司出于商业资料安全性的考虑,要求员工在移动办公过程中使用 VPN 接入互联网。目前国内用户比较熟悉的 VPN 接入方式是 PPTP,但有时你或许需要用安全性更强的 L2TP / IPSec 方式接入。
本站的 Rio 最近在一台 Ubuntu 和一台 Debian 主机上配置了 L2TP / IPSec VPN,并在自己的博客上做了记录。原文以英文写就,我把它大致翻译了一下,结合我和 Rio 在设置过程中的通信,成文如下,希望能帮到有需要的朋友。以下文字的全部版权归 Rio 所有,如有错误,责任完全归我。—— 编者
首先解释一个问题:在 iPhone 的 VPN 设置介面里(Settings >> General >> Network >> VPN),你可以看到三个标签:L2TP, PPTP, IPSec。但上面我们又讲本次介绍的 VPN 方式叫「L2TP / IPSec」,这两者究竟是什么关系?
这三个标签确实令人混淆,准确的写法应该是:L2TP over IPSec, PPTP, Cisco IPSec。PPTP 跟另外两者关系不大,且大家较为熟悉,暂且不提,L2TP 和 IPSec 的区别如下。
L2TP:一个「包装」协议,本身并不提供加密和验证的功能。
IPSec:在 IP 数据包的层级提供加密和验证功能,确保中间人无法解密或者伪造数据包。
本来,只用 IPSec 就可以实现 VPN,Mac OS X 和 Linux 都支持。但是 Mac OS X 和 iPhone OS 都推荐使用 L2TP over IPSec,在两者的图形介面上也只能设置这个。L2TP / IPSec 是业界标准,微软也支持。而只用 IPSec 的常见于 Linux-to-Linux 的应用,比如将两个位于不同地区的办公室网络安全地连在一起。这多是固定 IP 路由器到固定 IP 路由器级别的连接,只需保证数据包不被中途截获或者伪造就可以,故使用 L2TP 的意义不大。L2TP / IPSec 主要是实现所谓「Road Warrior」的设置,即用变动的客户端连固定的服务器。
Cisco 的 VPN 用的也是 IPSec 加密,但那是一套不同于 L2TP 的私有包装协议,用于提供用户管理之类的功能,因此一般都需要用 Cisco 自家的 VPN 客户端连接。iPhone / iPad 的 VPN 设置介面中的 IPSec 标签里有 Cisco 的标识,就是这个原因。
以下是在 Ubuntu 和 Debian 主机上架设 L2TP / IPSec VPN 的步骤,一共十四步。你需要有服务器的 root 权限(所以 DreamHost, BlueHost, MediaTemple 这些服务供应商帮你把一切打点周到的主机就无缘了),也需要一些基本的 Linux 知识。不然的话,我们还是推荐您找一位比较熟技术的朋友帮忙。
一、安装 IPSec。如上所述,IPSec 会对 IP 数据包进行加密和验证。这意味着你的电脑 / 移动设备与服务器之间传输的数据无法被解密、也不能被伪造。我推荐用 openswan 这个后台软件包来跑 IPSec。
用以下命令安装 openswan:
sudo aptitude install openswan
二、用文字编辑器打开 /etc/ipsec.conf,改成这样:
version 2.0config setup nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 oe=off protostack=netkeyconn L2TP-PSK-NAT rightsubnet=vhost:%priv also=L2TP-PSK-noNATconn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=YOUR.SERVER.IP.ADDRESS leftprotoport=17/1701 right=%any rightprotoport=17/%any
三、用文字编辑器打开 /etc/ipsec.secrets,改成这样:
YOUR.SERVER.IP.ADDRESS %any: PSK "YourSharedSecret"
(别忘了把「YOUR.SERVER.IP.ADDRESS」这部分换成你的服务器的 IP 地址,把「YourSharedSecret」部分换成随便一个字串,例如你喜欢的一句话,等等。)
四、运行以下命令:
for each in /proc/sys/net/ipv4/conf/*do echo 0 > $each/accept_redirects echo 0 > $each/send_redirectsdone
五、检查一下 IPSec 能否正常工作:
sudo ipsec verify
如果在结果中看到「Opportunistic Encryption Support」被禁用了,没关系,其他项 OK 即可。
六、重启 openswan:
sudo /etc/init.d/ipsec restart
七、安装 L2TP。常用的 L2TP 后台软件包是 xl2tpd,它和 openswan 是同一帮人写的。
运行以下命令:
sudo aptitude install xl2tpd
八、用文字编辑器打开 /etc/xl2tpd/xl2tpd.conf,改成这样:
[global]ipsec saref = yes[lns default]ip range = 10.1.2.2-10.1.2.255local ip = 10.1.2.1;require chap = yesrefuse chap = yesrefuse pap = yesrequire authentication = yesppp debug = yespppoptfile = /etc/ppp/options.xl2tpdlength bit = yes
这里要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。
九、安装 ppp。这是用来管理 VPN 用户的。
sudo aptitude install ppp
十、检查一下 /etc/ppp 目录里有没有 options.xl2tpd 这个文件,没有的话就建一个,文件内容如下:
require-mschap-v2ms-dns 208.67.222.222ms-dns 208.67.220.220asyncmap 0authcrtsctslockhide-passwordmodemdebugname l2tpdproxyarplcp-echo-interval 30lcp-echo-failure 4
注意 ms-dns 两行我填的是 OpenDNS。如果你想用其他的 DNS 服务器(例如谷歌的公共 DNS),请自行更换。
十一、现在可以添加一个 VPN 用户了。用文字编辑器打开 /etc/ppp/chap-secrets:
# user server password iptest l2tpd testpassword *
如果你之前设置过 PPTP VPN,chap-secrets 文件里可能已经有了其他用户的列表。你只要把 test l2tpd testpassword * 这样加到后面即可。
十二、重启 xl2tpd:
sudo /etc/init.d/xl2tpd restart
十三、设置 iptables 的数据包转发:
iptables --table nat --append POSTROUTING --jump MASQUERADEecho 1 > /proc/sys/net/ipv4/ip_forward
十四、因为某种原因,openswan 在服务器重启后无法正常自动,所以我们可以在 /etc/rc.local 文件里写入如下语句:
iptables --table nat --append POSTROUTING --jump MASQUERADEecho 1 > /proc/sys/net/ipv4/ip_forwardfor each in /proc/sys/net/ipv4/conf/*do echo 0 > $each/accept_redirects echo 0 > $each/send_redirectsdone/etc/init.d/ipsec restart
到这里,设置工作已经基本完成。你可以用 iPhone 或 iPad 试着连一下。记得在「Secret」中填入你在上述第三步里填的 YourSharedSecret。
如果连接成功,上网也没问题的话,恭喜你,大功告成。如果连不上,恐怕还得多做一步。
Ubuntu 9.10 自带的 openswan 版本是 2.6.22, Debian Lenny 带的版本是 2.4.12。这两个版本的 openswan 都有问题。我们的测试结果表明,2.6.24 版的 openswan 可以在上述两版的 Linux 操作系统下正常工作。所以如果做完以上十四步还是连不上的话,请考虑从源码编译 openswan 2.6.24 :
sudo aptitude install libgmp3-dev gawk flex bisonwget http://www.openswan.org/download/openswan-2.6.24.tar.gztar xf openswan-2.6.24.tar.gzcd openswan-2.6.24make programssudo make install
编译需要一段时间。你的 Linux 内核版本需要高于 2.6.6。
然后可以删除原先通过 aptitude 安装的 openswan,并重启之:
sudo aptitude remove openswansudo /etc/init.d/ipsec restart
- 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
- 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
- Debian 7 下搭建 IPSEC + L2TP VPN 服务器
- Microsoft Azure 上架设 Windows Server 2012 VPN(SSTP、L2TP、IPsec、IKEv2)
- linux l2tp ipsec vpn服务器
- 在 Ubuntu Linux 上架设Web服务器
- 使用Linux L2TP/IPsec VPN 服务器
- 配置VPN服务器使用L2TP/IPSEC协议
- 配置VPN服务器中的L2TP/IPSEC
- VPN如何禁用自动 L2TP/IPSec 策略
- 在亚马孙EC2上建立L2TP VPN,Setup L2TP over IPSec VPN on Ubuntu Linux with Amazon EC2
- Debian/Ubuntu下L2TP VPN配置
- ubuntu下安装L2TP/IPSec服务器
- 在Ubuntu Linux 上架设Web服务器详解
- L2TP/IPSEC VPN服务器配置步骤(Windows Server 2003)
- Linux下架设L2TP IPSec VPN服务器(X509)
- CentOS Linux 5.9 32bit搭建L2TP ipsec VPN服务器
- CentOS6.X 配置L2TP For IPsec VPN服务器 详细步骤
- MSDOS.SYS
- win764 + python2.7.x + opencv 安装
- PL/SQL Developer在64位系统下连接Oracle
- 软件项目管理(CMMI成熟度)实践——之决策分析(1)
- TreeSer笔记
- 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
- TreeSet笔记02
- [Github] fatal: remote error: You can't push to git 解决办法
- HDU 1171 01背包
- TreeSet练习
- NTFS 與 FAT32 格式的選擇 (資料汰舊現已不太適用)
- untiy切换界面窗口代码
- 【Altium Designer/Protel】【精通在于细节】Altium Designer中对未布线的网络进行定位检查,漏线检查【原创】
- 【深入浅出IOS开发】彩票-去除图标的玻璃质感效果