第一步:确认内核是否支持

    在这里提供两种检测方法,请注意,满足其中的任何一个都表示可以内核支持

    1. 检查系统内核是否支持 MPPE 补丁
      modprobe ppp-compress-18 &&echo success

    显示 success 说明系统支持 MPPE 补丁,如果不支持,需要先安装 kernel-devel

    1. yum install kernel-devel
    1. 检查系统是否开启 TUN/TAP 支持
      cat /dev/net/tun

    如果这条指令显示结果为下面的文本,则表明通过:
    cat: /dev/net/tun: File descriptor in bad state #系统为英文版本
    cat: /dev/net/tun: 文件描述符处于错误状态 # 系统为简体中文版本
    如果没有,需要 VPS 服务商开通 TUN/TAP 功能,一般 VPS 默认都开启此功能

    第二步:安装所需的软件包——ppp

    1. yum 源安装
      yum install ppp
    2. 确认 ppp 版本,需要在 2.4.2 以上
      rpm -qa|grep ppp

    ppp-2.4.5-10.el6.x86_64

    1. 检查 PPP 是否支持 MPPE
      strings ‘/usr/sbin/pppd’ |grep -i mppe | wc -l

    以上命令输出为 “0” 则表示不支持,输出为 “30” 或更大的数字则支持。

    第三步:安装 pptpd

    1. 可以从http://poptop.sourceforge.net/yum/stable/packages/中找到合适的版本,用 wget 下载
      wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.rhel5.x86_64.rpm
    2. rpm 安装
      rpm -ivh pptpd-1.4.0-1.rhel5.x86_64.rpm

    3. 配置 IP 池

    在 /etc/pptpd.conf 加入以下设定,用于配置客户端可用 IP:

    1. localip 192.168.0.1
    2. remoteip 192.168.0.200-238,192.168.0.250
    1. 配置 pptpd 选项

    编辑 /etc/ppp/options.pptpd,加入:

    1. ms-dns 8.8.8.8
    2. ms-dns 8.8.4.4
    1. 配置登录用户名和密码
      编辑 / etc/ppp/chap-secrets,按下面的格式输入:
      ‘admin’ pptpd ‘admin’ *

    其中,第一列为登陆用户名,第二列为 PPP 服务名,第三列为登陆密码,第四列为允许客户端访问 IP 范围。

    请注意:用户名和密码必须加引号,否则链接的时一直会出现 619

    1. 配置内核参数,允许 IP 转发
      把 /etc/sysctl.conf 中的 net.ipv4.ip_forward 修改为 1:
      vim /etc/sysctl.conf |grep ip_forward
      net.ipv4.ip_forward = 1

    然后执行 sysctl -p 激活

    1. 配置 iptables 防火墙放行和转发规则

    —to-source 后面跟着你的公网 IP

    1. service iptables save
    2. service iptables restart
    3. service pptpd start
    1. 查看端口 PPTP 使用的 1723 端口侦听
      netstat -ntpl
    2. 设置为开机启动
      chkconfig —level 35 iptables on
      chkconfig —level 35 pptpd on

    至此,VPN 就搭建完成了。

    下面是一些常见的报错:

    1. 重启防火墙出现 “Setting chains to policy ACCEPT: security raw nat[FAILED]filter

    解决办法如下:

    编辑 / etc/init.d/iptables 文件,在”case “$i” in” 行下面加上下面的脚本:

    1. security)
    2. $IPTABLES -t filter -P INPUT $policy \
    3. && $IPTABLES -t filter -P OUTPUT $policy \
    4. && $IPTABLES -t filter -P FORWARD $policy \
    5. || let ret+=1
    6. ;;

    Linux搭建pptpVPN - 图1

    编译后,如下图所示,然后保存,再重启,就不在出现 “Setting chains to policy ACCEPT: security raw nat[FAILED]filter” 错误信息了。问题就得到解决了。
    https://blog.zxluck.cn/post/38.html