服务端
1. 安装pptp
sudo apt-get install pptpd
2. 修改pptpd.conf中的配置信息
sudo vim /etc/pptpd.conf
在末尾增加下面两行,或者打开的内容里面找到这两行,取消掉注释
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
分别为创建pptp时的主机ip和连接pptp的其他主机使用的ip段,可以自行修改。
注意,这里的ip并不是指外网ip或者当前局域网ip,而是指创建(虚拟专用网络)会分配的ip地址。一般这个可以不用修改。
3. 修改chap-secrets配置
连接pptp 所需要的账号和密码,修改配置文件/etc/ppp/chap-secrets
sudo vim /etc/ppp/chap-secrets
在末尾添加以下内容
#用户名 pptpd 密码 *
neo pptpd 123456 *
末尾的表示可以使用任意IP连入,如果你要设置指定IP才能连接,可以将替换成对应的IP。支持添加多个账号。
4. 设置ms-dns
配置使用的dns,修改配置文件
sudo vim /etc/ppp/pptpd-options
在末尾增加下面两行,或者打开的内容里面找到这两行,取消掉注释
# 这是谷歌的DNS 可以根据实际填写
ms-dns 8.8.8.8
ms-dns 8.8.4.4
5. 开启转发
修改配置文件
sudo vim /etc/sysctl.conf
在末尾增加下面内容,或者打开的内容里面找到这一行,取消掉注释
net.ipv4.ip_forward=1
保存之后执行
sudo sysctl -p
6. 配置iptables
若未安装iptables 执行脚本安装
sudo apt-get install iptables
tips:若之前安装pptp失败的。执行以下脚本;如果是第一次安装可忽略以下内容(目的为了清除iptables里旧的规则)
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
然后,允许GRE协议以及1723端口、47端口:
sudo iptables -A INPUT -p gre -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT
7.下一步,开启NAT转发:
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eno33 -j MASQUERADE
注意,上面的eno33
是连接网络的网卡的名称,不同机器这个可能是不一样的。可以在终端输入ifconfig来查看。例如
neo@ubuntu:~$ ifconfig
ens33 Link encap:Ethernet HWaddr 00:0c:29:37:79:85
inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.xxx Mask:255.255.255.0
inet6 addr: xxxx::20c:29ff:fe37:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:293 errors:0 dropped:0 overruns:0 frame:0
TX packets:211 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26801 (26.8 KB) TX bytes:41763 (41.7 KB)
8 重启pptp服务
sudo service pptpd restart
ubuntu客户端
1. 安装pptp客户端
sudo apt-get install pptp-linux
2. 初始化一个连接通道:mypptp
使用服务端设置的账号密码neo/6yhn^YHN
sudo pptpsetup --create mypptp --server xxx.xxx.xxx.xxx --username neo --password 6yhn^YHN --encrypt --start
xxx.xxx.xxx.xxx
是pptp mypptp服务端的ip地址 根据实际情况填写(以下示例)
root@ubuntu:~# sudo pptpsetup --create mypptp --server 172.31.1.112 --username neo --password 6yhn^YHN --encrypt --start
Using interface ppp0
Connect: ppp0 <--> /dev/pts/2
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
local IP address 192.168.0.234
remote IP address 192.168.0.1
3. 查看连接是否成功
root@ubuntu:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:xx:86:5f brd ff:ff:ff:ff:ff:ff
inet .31.1.113/24 brd xxx.31.1.2xxx5 scope global ens33
valid_lft forever preferred_lft forever
inet6 fxx0::20c:29ff:fxx3e:8xxf/64 scope link
valid_lft forever preferred_lft forever
8: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1496 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 192.168.0.234 peer 192.168.0.1/32 scope global ppp0
valid_lft forever preferred_lft forever
也可以在pptp 服务端查看
neo@ubuntu:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 xxx.xxx.1.1 0.0.0.0 UG 0 0 0 ens33
xxx.xxx.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.0.234 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
4. 断开重启pptp客户端
断开连接
poff mypptp
重接mypptp
pon mypptp
5. 处理错误
LCP: timeout sending Config-Requests
执行:sudo modprobe nf_conntrack_pptp
异常处理
1.PPTP连接后无法打开网页,但QQ等软件又能使用的原因和解决方案
PPTP连接后,能正常PING通局域网IP,DNS的IP,也能PING通百度这些网站的IP,但是网站偏偏打不开。直接PING域名,发现DNS也能解析域名,证明不是DNS出现的问题。
在CMD里输入
netsh interface ipv4 show subinterfaces
发现PPTP连接“鹏泰机房”的MTU值是1400。而其它的连接都是1500。会不会是MTU没有自动协商造成了网络拥堵。
参照下面这篇文章的方法PPTP拨入成功后在CMD里输入
netsh interface ipv4 set subinterface "鹏泰机房" mtu=1400 store=persistent
把pptp连接MTU固定修改为1400后。如飞的页面又能打开了。
2.如果还是有些网页打不开
服务器端执行
iptables -I FORWARD -p tcp --syn -i ppp0 -j TCPMSS --set-mss 1356
或iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356
参考资料
- ubuntu 16.04 pptp搭建服务端和客户端:https://blog.csdn.net/yanghao937170/article/details/105953256
- 分析PPTP连接后无法打开网页,但QQ等软件又能使用的原因和解决方案:https://zhuanlan.zhihu.com/p/250068405
- PPTP MTU值设置导致主机无法上网问题解决:http://www.361way.com/pptp-mtu-mss/5173.html
评论 (0)