废话不多说,先上脚本地址:Centos7一键pptp
使用:
wget http://files.cnblogs.com/files/wangbin/CentOS7-pptp-host1plus.shchmod +x ./CentOS7-pptp-host1plus.sh ./CentOS7-pptp-host1plus.sh -u your_username -p your_password
wget http://files.cnblogs.com/files/wangbin/vpn_centos.sh
chmod +x ./vpn_centos.sh
./vpn_centos.sh
可在-u、-p后随意更改自己的登录用户名和密码。但密码长度必须大于8个 ASCII字符,否则为了安全,脚本将会随机生成密码。
配置CentOS PPTP服务端
按照如下操作步骤,配置CentOS PPTP服务端。
远程登录ECS实例。
具体操作,请参见连接方式概述。
执行如下命令,完成PPTP服务端安装。
JavaScript
yum install -y ppp pptpd
回显如下图所示,表示PPTP服务端安装成功。
配置pptpd文件。
执行vi /etc/pptpd.conf命令, 编辑配置文件,删除下列两行命令符前面的“#”,使下列两行命令可以执行。输入:wq命令保存退出。
JavaScript
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
回显如下图所示,表示成功配置pptpd文件。
说明
localip和remoteip分别是VPN的网关地址和VPN拨号时获取的地址段。您可以根据需要调整。
执行vi /etc/ppp/options.pptpd命令,将ms-dns修改为223.5.5.5和223.6.6.6。输入:wq命令保存退出。
JavaScript
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
ms-dns 223.5.5.5
ms-dns 223.6.6.6
说明
IP地址223.5.5.5和223.6.6.6是阿里云的公共DNS服务器地址,您可以根据需要调整为其它公共DNS服务地址。
回显如下图所示,表示ms-dns修改成功。
执行vi /etc/ppp/chap-secrets命令,设置pptpd的用户名和密码。根据需要添加账号,一行只添加一个用户账号。按照用户名 pptpd 密码 IP地址格式输入,每一项用空格隔开。输入:wq命令保存退出。
说明
示例:test pptpd 123456 ,其中“*”表示所有IP。
JavaScript
# Secretsfor authentication using CHAP
# client server secret IP addresses
test pptpd 123456 *
回显如下图所示,表示pptpd用户和密码设置成功。
执行vi /etc/ppp/ip-up命令,设置最大传输单元MTU。在命令符[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@”下方添加 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
回显如下图所示,表示最大传输单元MTU设置成功。
内核参数设置。
执行vi /etc/sysctl.conf命令,编辑配置文件,添加net.ipv4.ip_forward = 1配置,输入:wq命令保存退出。
回显如下图所示,表示配置成功。
执行sysctl -p命令,使修改后的参数生效。
添加防火墙规则。
执行如下命令,添加iptables转发规则。重要重要重要!!!
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
执行如下命令,添加NAT转发规则,其中XXX.XXX.XXX.XXX为您的实例公网IP地址。重要重要重要!!!
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source XXX.XXX.XXX.XXX
执行如下命令,保存设置。
service iptables save
配置PPTP服务
执行如下命令,重启PPTP服务。
说明
此时PPTP还未成功运行,所以当您重启PPTP服务时,系统会提示Shutting down pptpd [FAILED],并发出警告。您可以忽略提示和警告,再次使用以下命令重启PPTP服务,警告信息就会消失。
systemctl restart pptpd
执行如下命令,重启iptables。
systemctl start iptables
执行如下命令,设置pptpd和iptables自启动。
chkconfig --add pptpd
chkconfig pptpd on
chkconfig --add iptables
chkconfig iptables on
至此,您的PPTP VPN服务端已安装结束。您可以在Windows客户端的网络和共享中心设置新的连接或网络,即可通过VPN访问网络。
配置CentOS PPTP客户端
执行如下命令,安装PPTP软件包。
yum install -y ppp pptp pptp-setup
回显如下图所示,表示PPTP安装成功。
执行如下命令, 连接VPN服务端。
pptpsetup --create test --server [$IP] --username [$User] --password [$Password] --encrypt --start
说明
[$IP]、[$User]、[$Password]为VPN服务端的IP地址、用户名和密码。
回显如下图所示,表示已成功连接VPN服务端。
当系统提示已经被分配了192.168.0.234的客户端地址时,执行如下命令,可以看到ppp0网卡。
ifconfig | grep -A 10 ppp
回显如下图所示,表示命令执行成功。
执行如下命令,增加默认路由。
ip route replace default dev ppp0
回显如下图所示,表示命令执行成功。
增加路由后,您就可以访问VPN服务器。
常见问题
浏览器无法打开网页
搭建PPTP VPN后,测试可以连接,可以PING通网站域名,但浏览器无法打开网页。一般是MTU设置不正确导致的。请参考以下方案解决问题。
方案一
登录连接配置VPN的CentOS服务器。
输入执行ifconfig ppp0 mtu 1472命令。
通过浏览器测试是否能打开网页。当出现类似如下返回信息时,表示问题已经解决。
说明
此方案可以临时生效,如果您需要长期生效的方案,请完成方案二。
方案二
登录连接配置VPN的CentOS服务器。
输入执行vi /etc/ppp/ip-up命令,进入/etc/ppp/ip-up文件中。
在/etc/ppp/ip-up文件中添加ifconfig ppp0 mtu 1472 命令。
回显如下图所示,表示命令添加成功。
通过浏览器测试是否能打开网页。
当出现类似如下返回信息时,表示问题已经解决。
获取到错误的IP地址
客户端成功连接VPN后,获取到错误的地址。获取的地址不是VPN服务端分配的地址,而是云服务器ECS实例的内网网卡地址。如果出现这种情况,假设配置的VPN客户端配置名称是testvpn,可以参照如下步骤尝试处理。
操作步骤
登录连接配置VPN的CentOS服务器。
输入执行vi /etc/ppp/peers/testvpn命令,进入ppp客户端/etc/ppp/peers/testvpn配置文件中。在如下图位置上添加noipdefault参数。
执行如下命令重启客户端。重新连接后通常可获取到正确的IP地址。
poff testvpn
pon testvpn
说明
重启客户端时,noipdefault参数可能会被服务端传递过来的参数覆盖。如果noipdefault参数被覆盖,您需要检查服务端的配置。