参考了很多文章,发现网上写的没一个全对的,只好自己发一篇。其中最值得参考的一篇是:http://shitouququ.blog.51cto.com/24569/856774

分四个步骤:

  1. 检查配置和环境
  2. 安装
  3. 配置
  4. 测试

先说环境,如果环境不允许,无论后面怎么折腾,都不可能达到目的,所以这一步最重要。

  1. modprobe ppp-compress-18 && echo ok
    期待系统输出ok俩字,基本没遇到失败的。
  2. cat /dev/net/tun
    期待输出:cat: /dev/net/tun: File descriptor in bad state,如果不是,那么很可能需要母鸡管理员给你开权限(OpenVZ的VPS上经常遇到)。
  3. strings ‘/usr/sbin/pppd’ |grep -i mppe | wc –lines
    期待输出一个大于30的数字,我的环境中输出42。如果不是,那么需要安装mppe,参考下节。

 

然后聊一下安装,如果环境测试中1、2两步有一步失败,那就请先搞定权限等问题,要么后面的软件装了也搭不起来。

  1. yum install -y ppp iptables
  2. http://poptop.sourceforge.net/yum/stable/packages/ 下安装一个较新版本的,例如我装的是pptpd-1.3.4-2.el6.i686.rpm
  3. 第二步可以用“rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm ” 和“yum install pptpd ”替代。
  4. 可选,如果测试步骤3失败的话,需要安装DKMSMPPE

 

接下来是配置,pptp和ppp chap的配置不详说了,和教程里的一样。

  1. /etc/pptpd.conf:
    localip 192.168.1.241
    remoteip 192.168.20.9-238
  2. /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
  3. /etc/ppp/chap-secrets:
    test pptpd 1234 *
  4. /etc/sysctl.conf:
    net.ipv4.ip_forward=1
  5. 唯一不同的是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