CentOS PPTP L2TP over IPSec
- font size decrease font size increase font size
- Print Email
转贴自 http://logicmd.net/2010/12/setup-pptp-and-l2tp-over-ipsec-on-centos/
CentOS上部署PPTP和L2TP over IPSec简要笔记
PPTP部署
安装 PPTP 需要 MPPE 和较高版本的 ppp ( > 2.4.3 ) 支持,不过 CentOS 5.0/RHEL 5 的 2.6.18 内核已经集成了 MPPE 和高版本的 ppp 。因此可以跳过安装配置 MPPE 和 ppp 的过程直接安装 PPTP。
如果需要检查 MPPE 是否存在可以使用以下命令:
shell> modprobe ppp-compress-18 && echo ‘MPPE found !’
1.安装 pptpd
1 2 3 4 | #确保安装了ppp 和 iptables yum install -y ppp iptables wget http: //acelnmp .googlecode.com /files/pptpd-1 .3.4-1.rhel5.1.i386.rpm rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm |
Notice:
- 官网http://poptop.sourceforge.net/已经删掉了1.3.4版的pptpd的RPM,所以只好在这个地方下载
- 判断CentOS系统是32位还是64位?
getconf LONG_BIT
2.配置文件编写
①.配置文件/etc/ppp/options.pptpd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | mv /etc/ppp/options .pptpd /etc/ppp/options .pptpd.bak cat >> /etc/ppp/options .pptpd<<EOF name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp lock nobsdcomp novj novjccomp nologfd idle 2592000 ms-dns 8.8.8.8 ms-dns 8.8.4.4 EOF |
name pptpd : pptpd server 的名称。
refuse-pap : 拒绝 pap 身份验证模式。
refuse-chap : 拒绝 chap 身份验证模式。
refuse-mschap : 拒绝 mschap 身份验证模式。
require-mschap-v2 : 在端点进行连接握手时需要使用微软的 mschap-v2 进行自身验证。
require-mppe-128 : MPPE 模块使用 128 位加密。
ms-dns 8.8.8.8
ms-dns 8.8.4.4 : ppp 为 Windows 客户端提供 DNS 服务器 IP 地址,第一个 ms-dns 为 DNS Master,第二个为 DNS Slave。
proxyarp : 建立 ARP 代理键值。
debug : 开启调试模式,相关信息同样记录在 /var/logs/message 中。
lock : 锁定客户端 PTY 设备文件。
nobsdcomp : 禁用 BSD 压缩模式。
novj
novjccomp : 禁用 Van Jacobson 压缩模式。
nologfd : 禁止将错误信息记录到标准错误输出设备(stderr)。
②.配置文件/etc/ppp/chap-secrets
1 2 | mv /etc/ppp/chap-secrets /etc/ppp/chap-secrets .bak vi /etc/ppp/chap-secrets |
输入以下内容
1 2 3 | # Secrets for authentication using CHAP # client server secret IP addresses myusername pptpd mypassword * |
③.配置文件/etc/pptpd.conf
1 2 3 4 5 6 7 8 | mv /etc/pptpd .conf /etc/pptpd .conf.bak cat >> /etc/pptpd .conf<<EOF #pptpd.conf option /etc/ppp/options .pptpd logwtmp localip 10.82.18.1 remoteip 10.82.18.2-254 EOF |
注:为拨入VPN的用户动态分配10.82.18.2~10.82.18.254之间的IP
④.配置文件/etc/sysctl.conf(修改内核转发参数)
如上一篇博文所述,可以sysctl -w net.ipv4.ip_forward=1
,也可以
1 2 | sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl .conf sysctl -p |
直接替换/etc/sysctl.conf
的内容。这样写的好处在于不必在启动脚本/etc/rc.local
中添加sysctl -w net.ipv4.ip_forward=1
,一劳永逸。
IPSec+L2TP部署
这部分部署方法已经有现成的一键脚本,怕麻烦的用户可以直接拿去跑。但是本着不求甚解的原则还是一步步列出。
L2TP (Layer 2 Tunneling Protocol) 是VPN隧道协议的一种,它使用UDP的1701端口进行通信。L2TP本身并没有任何加密,但是我们可以使用IPSec对L2TP包进行加密。更多关于L2TP的理论知识可以访问这个Wiki
因为联通和移动陆续封掉了 PPTP 数据包,所以L2TP是移动设备VPN几乎唯一选择(OpenVPN配置稍显麻烦)。
在Linux环境下,有很多方法配置L2TP;一个选项是采用openl2tpd
,但是他对老版本的ppp隧道支持不好。更重要的是在CentOS环境下,它要求内核需要patch,我想没多少人希望没事给内核patch吧。
基于这个原因,本文选择了xl2tpd & rp-l2tpd,xl2tpd 是由 Xelerance Corporation 维护的l2tpd应用。但是xl2tpd 没有l2tp-control,需要从rp-l2tp这个里面提取。
1.安装OpenSwan
经典的2.6.24这个版本和最新的2.6.32都可以。
1 2 3 4 5 6 | #安装依赖 yum install make gcc gmp-devel bison flex wget http: //www .openswan.org /download/openswan-2 .6.32. tar .gz tar zxvf openswan-2.6.32. tar .gz cd openswan-2.6.32 make programs install |
①.修改配置文件/etc/ipsec.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | mv /etc/ipsec .conf /etc/ipsec .conf.bak cat >> /etc/ipsec .conf<<EOF #ipsec.conf version 2.0 config 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=netkey conn L2TP-PSK-NAT rightsubnet=vhost:%priv also=L2TP-PSK-noNAT conn 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 EOF |
②.设置 PSK
1 2 3 4 | rm -r /etc/ipsec .secrets cat >> /etc/ipsec .secrets<<EOF YOUR.SERVER.IP.ADDRESS %any: PSK "YourSharedSecret" EOF |
③.修改包转发设置
1 2 3 4 5 6 7 8 | for each in /proc/sys/net/ipv4/conf/ * do echo 0 > $each /accept_redirects echo 0 > $each /send_redirects done #若PPTP部分设置过,则下面不必在设置 sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl .conf sysctl -p |
重新启动 ipsec,并测试运行效果
1 2 | service ipsec restart ipsec verify |
若无FAIL即为正常。
这个时候 ipsec 部分完成了,可以测试一下,新建一个 ipsec+l2tp 的连接,填好服务器地址和 SharedKey,点连接。在服务端
1 2 3 | tail -f /var/log/secure #若出现以下内容,这代表IPSec一切正常 #pppd[3624]: IPSec connection established |
2.安装xl2tpd和rp-l2tp
①.下载编译安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #安装依赖 yum install libpcap-devel ppp #rp-l2tp wget http: //downloads .sourceforge.net /project/rp-l2tp/rp-l2tp/0 .4 /rp-l2tp-0 .4. tar .gz tar zxvf rp-l2tp-0.4. tar .gz cd rp-l2tp-0.4 . /configure make cp handlers /l2tp-control /usr/local/sbin/ mkdir /var/run/xl2tpd/ ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control #xl2tpd cd .. wget http: //ywko .googlecode.com /files/xl2tpd-1 .2.4. tar .gz tar zxvf xl2tpd-1.2.4. tar .gz cd xl2tpd-1.2.4 make install |
官网的xl2tpd已经404,所以…
②.写配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | mkdir /etc/xl2tpd rm -f /etc/xl2tpd/xl2tpd .conf cat >> /etc/xl2tpd/xl2tpd .conf<<EOF #/etc/xl2tpd/xl2tpd.conf [global] ipsec saref = yes [lns default] ip range = 10.82.88.2-10.82.88.254 local ip = 10.82.88.1 refuse chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options .xl2tpd length bit = yes EOF rm -f /etc/ppp/options .xl2tpd cat >> /etc/ppp/options .xl2tpd<<EOF #/etc/ppp/options.xl2tpd require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 asyncmap 0 auth crtscts lock hide-password modem debug name l2tpd proxyarp lcp- echo -interval 30 lcp- echo -failure 4 EOF |
③.设置密码/etc/ppp/chap-secrets
输入以下内容
1 2 3 | # Secrets for authentication using CHAP # client server secret IP addresses myusername l2tpd mypassword * |
服务启动
1.配置防火墙iptables
1 2 3 4 5 6 | service iptables start #可以考虑 #iptables -t nat -A POSTROUTING -o eth0 -s 10.82.18.0/24 -j MASQUERADE #iptables -t nat -A POSTROUTING -o eth0 -s 10.82.88.0/24 -j MASQUERADE #考虑到之后还要配置L2TP,直接一下倒显得更加简便 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
OpenVZ用户将eth0换成venet0即可。
2.启动
1 2 3 4 | service pptpd start ipsec verify service ipsec restart xl2tpd |
3.配置自启动脚本,添加以下内容到/etc/rc.local
1 2 3 4 5 6 7 8 | iptables --table nat --append POSTROUTING --jump MASQUERADE for each in /proc/sys/net/ipv4/conf/ * do echo 0 > $each /accept_redirects echo 0 > $each /send_redirects done /etc/init .d /ipsec restart /usr/local/sbin/xl2tpd |
参考资料:
Notice: Only variables should be assigned by reference in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/item.php on line 478
back to top