(Ubuntu 16.0.4)记一次VPN搭建记录

(Ubuntu 16.0.4)记一次VPN搭建记录

九月 26, 2019
当前设备屏幕尺寸过小,推荐使用PC模式浏览。
  • 在Ubuntu 16.04下经过测试,以下命令均在root权限下进行测试。

① 安装pptpd

1
apt update && apt install pptpd

② 对虚拟专用网络进行IP段分配

1
vim /etc/pptpd.conf

添加/修改字段:

1
2
localip <VPS的IP,如117.123.123.123>
remoteip 172.16.1.120-200 # 客户端要分配的网段

③ 指定DNS写入文件末尾即可

1
vim /etc/ppp/pptpd-options
1
2
3
4
5
6
# 国际DNS
ms-dns 8.8.8.8
ms-dns 114.114.114.114
# 阿里云DNS
ms-dns 223.6.6.6
ms-dns 223.5.5.5

④ 配置用户名和密码

1
vim /etc/ppp/chap-secrets

按照以下提示进行填写:

1
2
3
# Secrets for authentication using CHAP
# client server secret IP addresses
<客户端用户名> pptpd <客户端密码> *

若分配的IP地址标记为*时会在上文给定的字段里自动给客户端划分IP;但是测试的时候发现偶有给客户端分发了同一IP的情况,因此还是手动给不同客户端指定IP为宜。

  • 另外要注意几个字段间的空格要在一个以上。

⑤ 开启IP转发

1
vim /etc/sysctl.conf
1
# 将“net.ipv4.ip_forward = 0”改为“net.ipv4.ip_forward = 1”

使其生效:

1
sysctl -p

⑥ 配置转发策略以及开放常用的端口

1
2
3
4
5
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT

或者直接开放所有端口:

1
2
3
iptables -P INPUT ACCEPT            # 允许所有入口流量
iptables -P FORWARD ACCEPT # 允许所有出口流量
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE # 添加NAT转发规则

执行iptables-save保存配置。

注意: 服务器重启后会重置这些内容,导致连上VPN后无法上网。

  • 在root权限下执行语句iptables-save > /etc/iptables.up.rules写出规则脚本,用iptables-restore < /etc/iptables.up.rules再导入脚本。可以尝试配合/etc/rc.local文件使用。

⑦ 启动或重启pptpd服务

1
service pptpd start

注意:服务器重启后会关闭pptpd服务,需要再次启动。

  • 把该语句写入/etc/rc.local以开机自启。(rc.local为Ubuntu默认的开机自启内容配置项)

一些杂项

  • Linux系统在连接VPN时要开启MPPE,否则无法连接。
  • 如果Win报错端口已关闭,还需要执行chmod 777 /dev/ppp
  • 如果ssh出现Socket error Event: 32 Error: 10053,可以尝试/etc/sshd_config中的ClientAliveInterval字段设为60。(好像是因为国外服务器延迟比较高,不把这个值调高容易直接掉线)