注意本文转载自阿里云栖社区,仅供学习交流使用
前提条件
配置 PPTP VPN 需要使用 TCP 1723 通信端口。您需要 在安全组中放行 TCP 1723 端口。
配置 CentOS PPTP 服务端
安装软件
-
使用命令
installationyum install -y ppp pptpd
安装软件。
配置 pptpd 文件
- 运行
vi /etc/pptpd.conf
编辑配置文件,删除下列两行命令符前面的#
,保存后退出。
1. `#localip 192.168.0.1`
2. `#remoteip 192.168.0.234-238`
delete#
> localip 192.168.0.1 和 remoteip 192.168.0.2-200 分别是 VPN 的网关地址和 VPN 拨号获取地址段。您可以根据需要调整。
- 运行
vi /etc/ppp/options.pptpd
将 ms-dns 修改为 223.5.5.5 和 223.6.6.6。保存后退出。
1. `#ms-dns 10.0.0.1`
2. `#ms-dns 10.0.0.2`
3. `ms-dns 223.5.5.5`
4. `ms-dns 223.6.6.6`
delete#
> IP 地址 223.5.5.5 和 223.6.6.6 是阿里云的公共 DNS 服务器地址,您可以根据需要调整为其它公共 DNS 服务地址。
-
运行
vi /etc/ppp/chap-secrets
设置 pptpd 的用户名和密码。根据需要添加账号,一行只添加一个用户账号。按照用户名 pptpd 密码 IP地址
的格式输入,每一项用空格隔开。保存后退出。示例:test pptpd 123456 *
,其中*
表示所有IP。# Secrets for authentication using CHAP
# client server secret IP addresses
test pptpd 123456 *
-
运行
vi /etc/ppp/ip-up
设置最大传输单元 MTU,在命令符[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@”
后面添加ifconfig ppp0 mtu 1472
。
1. /etc/ppp/ip-up. ipv6to4 ${LOGDEVICE}
2.
3. [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
4.
5. ifconfig ppp0 mtu 1472
image
修改内核参数设置
-
运行
changecodingvi /etc/sysctl.conf
编辑配置文件,添加net.ipv4.ip_forward = 1
的配置,保存后退出。 -
运行
sysctl -p
使修改后的参数生效。
添加防火墙规则
-
运行
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
添加 iptables 转发规则。 -
运行
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source XXX.XXX.XXX.XXX
添加 NAT 转发规则,其中 XXX.XXX.XXX.XXX 为您的实例公网 IP 地址。 -
运行
iptables-save
保存设置。
配置 PPTP 服务
-
运行
systemctl restart pptpd
重启 PPTP 服务。注意:
此时 PPTP 还未成功运行,所以当您使用重启 PPTP 服务时,系统会提示Shutting down pptpd [FAILED]
,并发出警告。您可以忽略提示和警告,再次使用以上命令重启 PPTP 服务,警告信息就会消失。 -
运行
systemctl restart iptables
重启 iptables。 -
运行如下命令设置 pptpd 和 iptables 自启动。
systemctl enable pptpd.service
systemctl enable iptables.service
至此,您的 PPTP VPN 服务端安装结束了。您可以在 Windows 客户端的 网络和共享中心 设置新的连接或网络,即可通过 VPN 访问网络。
配置 CentOS PPTP 客户端
此处以 CentOS 7.4 为例配置 PPTP 客户端。
-
运行
installation installationyum install -y ppp pptp pptp-setup
安装软件包。 -
运行
pptpsetup --create test --server IP --username 用户名 --password 密码 --encrypt --start
连接 VPN 服务端。注意:
您需要填写实际配置 VPN 服务端的 IP 地址、用户名和密码。 -
当系统提示已经被分配了 192.168.0.234 的客户端地址时,运行
performcodingifconfig | grep -A 10 ppp
可以看到 ppp0 网卡。 -
运行
newdefaultrouteip route replace default dev ppp0
增加默认路由。
增加路由后,您就可以访问 VPN 服务器了。
常见问题
浏览器无法打开网页
-
现象:搭建 PPTP VPN 后,测试可以连接,可以 ping 通网站域名,但浏览器无法打开网页。
unsbletoopenweb -
分析:一般是 MTU 设置不正确导致的。
-
方案A:在配置 VPN 的 CentOS 服务器中运行
performcodingifconfig ppp0 mtu 1472
。注意:
上述解决方案可以临时生效,如果您需要长期生效的方案,参考方案 B。 -
方案B:
-
运行
vi /etc/ppp/ip-up
在 /etc/ppp/ip-up 文件中增加ifconfig ppp0 mtu 1472
。/etc/ppp/ip-up. ipv6to4 ${LOGDEVICE}
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
ifconfig ppp0 mtu 1472
-
-
测试:
testing
获取到错误的 IP 地址
-
现象:客户端成功连接上 VPN 后,获取到错误的地址。获取的地址不是 VPN 服务端分配的地址,而是云服务器 ECS 的内网网卡地址,如图:
IpAddress -
分析:如果出现这种情况,假设配置的 VPN 客户端配置名称是 testvpn,可以参照如下步骤尝试处理。
-
方案:
-
在 ppp 客户端配置文件 /etc/ppp/peers/testvpn 中添加 noipdefault 参数。
Reason -
使用如下命令重启客户端。重新连接后通常可获取到正确的 IP 地址。
poff testvpn
pon testvpn
-
注意:
重启客户端时,noipdefault
参数可能会被服务端传递过来的参数覆盖掉。如果noipdefault
被覆盖,您需要检查服务端的配置。
网友评论