Ubuntu16.04搭建PPTP服务&&TP-link端口映射
检测服务器是否支持MPPE模块
sudo modprobe ppp-compress-18 && echo MPPE is ok
如果输出:MPPE is ok,则说明服务器的linux内核支持MPPE模块,否则请升级linux内核到2.6.15以上版本
安装PPTP
sudo apt-get update
sudo apt-get install pptpd
配置PPTP
编辑pptpd.conf文件(以下操作基本都需要sudo,建议sudo -s临时取得管理员权限后操作)
sudo vim /etc/pptpd.conf
找到下图的内容,取消注释,修改ip(或者直接参照下面的说明在末尾直接添加)
这一步的作用是配置VPN虚拟网络的主机ip(网关)和这个虚拟主机分配给其他设备的虚拟ip 段。
注意这个VPN虚拟ip主机和我们的服务器的ip没有关系,可以任意设置,ABC三类的内网地址都可以。而且最好避免和服务器所在网段内的其他设备ip冲突。
里面有两个参数:localip 和 remoteip
localip 192.168.88.1 ---(要填内网ip)表示分配给服务器的内部网关地址。
Remoteip 192.168.88.2-255 ----当客户机通过pptp连接到后所能 拿到的ip地址范围,默认从第一个开始分配给客户
修改chap-secrets文件,添加可以登录的用户
sudo vim /etc/ppp/chap-secrets
# client server secret IPaddresses ---标题
name pptpd password * ---如果不指定ip,用*表示
红色字根据自己喜好填写。分别是指用户名和密码。在登录账号时要用到
下面是一个测试的示例
设置DNS解析
sudo vim /etc/ppp/pptpd-options
找到ms-dns,取消注释,并修改相应的dns(南京电信dns:218.2.135.1)
ms-dns 218.2.135.1
开启转发功能(必须,否则无法连接外网)
sudo vim /etc/sysctl.conf
取消以下内容的注释(打开内核ip转发)
net.ipv4.ip_forward=1
更新配置
sudo sysctl -p
安装iptable
sudo apt-get install iptables
开启gre协议并打开服务器47,1723号端口
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转发(请先看红色注意部分)
sudo iptables -t nat -A POSTROUTING -s 192.168.88.1/24 -o eno1 -j MASQUERADE
注意:上面指令中ip要填写部署pptp步骤中设置的localip,也就是虚拟的主机的ip,上面设置的是192.168.2.1,192.168.2.1/24和192.168.2.1-255等价
eno1表示当前服务器的网卡,这里不同机器可能不一样,可以通过ifconfig指令进行查询,之后修改成对应的设备名称即可
POSTROUTING参数表示,指定当数据包离开服务器的时候,对数据包进行处理
MASQUERADE这个参数的意思就是即将从服务器封包出去(-o)的那块网卡上的IP
iptables永久生效
sudo iptables-save
重启服务生效
service pptpd restart
添加开机自启
sudo vim /etc/rc.local
在exit 0 之前添加service pptpd restart
使用pptp
linux:
在网络选项中add一个新网络,选择Point-to-Point Tunneling Protocol(PPTP)
此处connect name随意填写
Gatway填写的IP地址或者绑定的域名
user name、password填写前面chap-secrets文件设置的即可
填写完还需要设置Advanced,将弹出页面的Use Point-to-Point encryption(MPPE)勾选上