参考了很多文章,发现网上写的没一个全对的,只好自己发一篇。其中最值得参考的一篇是:http://shitouququ.blog.51cto.com/24569/856774
分四个步骤:
- 检查配置和环境
- 安装
- 配置
- 测试
先说环境,如果环境不允许,无论后面怎么折腾,都不可能达到目的,所以这一步最重要。
- modprobe ppp-compress-18 && echo ok
期待系统输出ok俩字,基本没遇到失败的。 - cat /dev/net/tun
期待输出:cat: /dev/net/tun: File descriptor in bad state,如果不是,那么很可能需要母鸡管理员给你开权限(OpenVZ的VPS上经常遇到)。 - strings ‘/usr/sbin/pppd’ |grep -i mppe | wc –lines
期待输出一个大于30的数字,我的环境中输出42。如果不是,那么需要安装mppe,参考下节。
然后聊一下安装,如果环境测试中1、2两步有一步失败,那就请先搞定权限等问题,要么后面的软件装了也搭不起来。
- yum install -y ppp iptables
- 到 http://poptop.sourceforge.net/yum/stable/packages/ 下安装一个较新版本的,例如我装的是pptpd-1.3.4-2.el6.i686.rpm。
- 第二步可以用“rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm ” 和“yum install pptpd ”替代。
- 可选,如果测试步骤3失败的话,需要安装DKMS和MPPE。
接下来是配置,pptp和ppp chap的配置不详说了,和教程里的一样。
- /etc/pptpd.conf:
localip 192.168.1.241
remoteip 192.168.20.9-238
- /etc/ppp/options.pptpd
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
#idle 2592000 72个小时空闲断开
ms-dns 8.8.8.8 - /etc/ppp/chap-secrets:
test pptpd 1234 * - /etc/sysctl.conf:
net.ipv4.ip_forward=1 - 唯一不同的是iptables的配置,大部分配置无法帮助我完成使命,折腾了很久,使用了如下配置搞定:
# Generated by iptables-save v1.4.7 on Fri Jun 28 08:26:35 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [34:2069]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp –dport 1723 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 47 -j REJECT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A INPUT -p gre -j ACCEPT
-A FORWARD -d 192.168.230.0/24 -o ppp0 -j ACCEPT
-A FORWARD -s 192.168.230.0/24 -j ACCEPT
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Jun 28 08:26:35 2013
# Generated by iptables-save v1.4.7 on Fri Jun 28 08:26:35 2013
*nat
:PREROUTING ACCEPT [257:30040]
:POSTROUTING ACCEPT [2:120]
:OUTPUT ACCEPT [20:1306]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Jun 28 08:26:35 2013
让配置生效的命令:
sysctl -p
/etc/init.d/iptables restart
/etc/init.d/pptpd restart
#开机自动启动服务
chkconfig pptpd on
chkconfig iptables on