• 测试环境:Ubuntu 16.04 x64

1. PPTPD的安装及配置

  • 安装pptpd
sudo apt-get install -y pptpd
  • 配置pptpd 修改/etc/pptpd.conf文件
sudo vim /etc/pptpd.conf
将文件末尾中的下面语句取消注释
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245
变成
localip PPTP服务器地址/本机地址,如10.1.1.104
remoteip 1.1.1.1-10,分配给远程连接的客户端的IP地址

2. 添加客户端用户

  • 修改/etc/ppp/chap-secrets,在文件末尾添加用户 client:连接用户名 server:连接的服务 secret:连接密码 IP addresses:可连接的IP,*表示所有
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
admin  pptpd  admin123  *

3. 修改远程连接用户的DNS

  • 修改/etc/ppp/pptpd-options文件
ms-dns 119.29.29.29
ms-dns 223.5.5.5

4. 开启网络转发功能

  • 修改/etc/sysctl.conf,找到**#net.ipv4.ip_forward=1**,将注释去掉
net.ipv4.ip_forward=1
sudo sysctl -p (立即生效)

5. 配置iptables

  • 配置iptables允许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
  • 开启NAT转发 此处的eth0不一定一致,按照自己机器的网卡名配置即可
sudo iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -o eth0 -j MASQUERADE
  • 防止上网慢
sudo iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356
  • 保存iptables规则
sudo iptables-save > /etc/iptables-rules
  • 打开网卡配置/etc/network/interfaces,在文件末尾添加如下内容
sudo vim /etc/network/interfaces/
pre-up iptables-restore < /etc/iptables-rules

6. 重启服务并测试

sudo service pptpd restart

创建一个×××连接,连接信息如下图 连接成功之后查看一下获取到的IP地址