1.首先需要确定你的VPS是否支持PPTPD协议的VPN
modprobe ppp-compress-18 && echo ok |
假如返回OK,则支持。否则进行下一步
cat /dev/net/tun |
如返回
cat: /dev/net/tun: File descriptor in bad state |
那就可以了。假如这两条都不可以,那你就只能向服务商发个ticket了。问一下他们能不能帮你启用TUN/TAP/PPP 模块,不过感觉上可能性不大。:D
2.安装PPTP。不建议编译安装,没有多大意义,得不偿失。命令如下
apt-get -y update
apt-get -y install pptpd |
3.编辑 pptpd.conf
localip 是 VPN 服务器 IP,可任意指定。
remoteip 是可分配给 vpn 客户端 IP。
为避免冲突,localip、remoteip 最好不要与服务器当前内网或经常拨入的客户端内网地址在同一网段。
cat >>/etc/pptpd.conf<<EOF
localip 10.10.10.1 remoteip 10.10.10.2-245 EOF |
4.编辑 pptpd-options
cp /etc/ppp/pptpd-options /etc/ppp/pptpd-options.bak |
cat>etc/ppp/pptpd-options<<EOF
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp nodefaultroute debug lock nobsdcomp EOF |
name pptpd(pptpd服务名,可以随便填写。)
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 (ppp 为 Windows 客户端提供 DNS 服务器 IP 地址。)
proxyarp (建立 ARP 代理键值。)
nodefaultroute(不替换默认路由)
debug(开启调试模式,相关信息记录在 /var/logs/message 中。)
lock(锁定客户端 PTY 设备文件。)
nobsdcomp (禁用 BSD 压缩模式。)
5.添加 VPN 用户
chap-secrets 文件为4段,分别是:用户名、服务器名称、密码、分配给客户端的IP。
服务器名可以是pptpd或今后的l2tpd,*号代表全部。
密码以明文填写,不需进行加密。
最后的*号代表从remoteip指定的IP段随机分配
cat >/etc/ppp/chap-secrets<<EOF
user * 123456 * EOF |
6.配置数据包转发
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p
开启iptables转发:
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source "1.1.1.1"
7.重启pptpd服务将1.1.1.1替换成你VPS的公网IP
/etc/init.d/pptpd restart
netstat -lntp |
8.常见vpn错误处理
错误800:修改/etc/ppp/pptpd-options文件,#号注释掉 require-mppe-128
错误619:
mknod /dev/ppp c 108 0 |
然后重启 pptpd 服务。