文章

ubuntu·vps下如何搭建一个PPTP·vpn服务

文章目录

对于代理服务器要是一般用来**上网的话,其实我们有更好的选择shadowsocks。但这并不是唯一的选择,而且vpn的用途并不只限于此,在网络世界里vpn远不止我们所想的那么简单,即便已存在十几年但永不衰落,vpn仍旧是当今领先的网络技术,前沿技术的基石!

常见的vpn有PPTP、L2TP、IPSec、SSLVPN和OpenVpn,相对于其他vpn处于综合考虑pptp在这里是最好搭建安全性也较为可靠,所以一般来用会选择PPTP大多数客户端也都支持此协议。

何为PPTP

点对点隧道协议 (PPTP) 是由包括微软和3Com等公司组成的PPTP论坛开发的一种点对点隧道协,基于拨号使用的PPP协议使用PAP或CHAP之类的加密算法,或者使用 Microsoft的点对点加密算法MPPE。

其通过跨越基于TCP/IP的数据网络创建 VPN 实现了从远程客户端到专用企业服务器之间数据的安全传输。PPTP 支持通过公共网络(例如 Internet)建立按需的、多协议的、虚拟专用网络。PPTP 允许加密 IP 通讯,然后在要跨越公司 IP网络或公共 IP 网络(如 Internet)发送的 IP 头中对其进行封装。

搭建PPTP

啰嗦一点,网上有太多关于pptp的搭建教程,但从我经历来看很多因为环境等各种因素,导致人家能成功的方法在自己这里就不一定有效,特别是在最后设置转发的时候这关键一步。所以我写的方法不能100%保证你能成功,如果你遇到让你抓狂而找不到答案的时候,可留言因为我曾经也被这绊脚。

我用的搬瓦工的VPSubuntu 14.04LTS,用过搬瓦工的童鞋都知道,搬瓦工本身后台就有shadowsocks和openvpn你直接鼠标点击安装,然后设置下就能在客户端就能使用了。

1.安装pptp首先用ssh登录这里我用root用户,远程推荐用(putty、xshell)登录到vps后用命令安装pptpd服务

apt-get install pptpd

2.然后编辑pptp配置文件在 /etc/pptpd.conf

vi /etc/pptpd.conf

shift+G快捷键直接跳到文件末尾添加

localip 10.100.0.0
remoteip 10.100.0.2-10

意思是当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设,比个不恰当的例子我们连接路由器时候路由器会分配我们一个IP,10.100.0.0就是路由器的IP,而分给我们的IP地址范围在10.100.0.2-10之间(也可以更多根据你需要的数量),当然一般会设置192.168.0.0没关系的,你随便设置。编辑完后shift+: 然后wq保存退出。

3.编辑/etc/ppp/pptpd-options文件设置DNS解析

vi /etc/ppp/pptpd-options

找到ms-dns,取消掉注释#,并修改DNS地址

ms-dns 8.8.8.8
ms-dns 8.8.4.4

4.编辑/etc/ppp/chap-secrets文件添加pptp帐号

vi /etc/ppp/chap-secrets

client server secret IP addresses
mypptp pptpd 123456 *

client表示要设置的用户名随便写这里是mypptp 而server表示服务这里要写pptpd,那secret就是密码了, IP addresses表示分给客户端的IP,如果写*就是动态自动分配,你也可以手动指定比如10.100.0.3 (我们前面设置了范围10.100.0.2-10)注意每一项中间请用空格隔开!

保存之后用命令service pptpd restart来重启pptpd服务,其实到这一步你现在客户端用刚才的帐号登录是可以登录上的,但是仅仅是登录到这台vps上,你的信息能连接到这太vps但是不能连接到外网,这就需要我们设置转发,将信息发送到外网。

5.转发这里有两步,第一步是配置系统转发,接着是设置防火墙转发

a.编辑系统配置文件/etc/sysctl.conf 去掉net.ipv4.ip_forward = 1前面的#号注释保存,如果没有就自己添加。

net.ipv4.ip_forward = 1

接着用sysctl -p命令让转发生效。

sysctl -p

但是这一步有的童鞋会出现问题,如果没有就跳过到下一步。 执行sysctl -p 提示permission denied on key ‘net.nf_conntrack_max’ 的话用下面的命令解决。

rm -f /sbin/sysctl
ln -s /bin/true /sbin/sysctl

b.设置iptables转发,如果没有就用apt-gen install iptables安装后再设置搬瓦工默认有,依次添加下面的规则

iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -j SNAT --to-source 45.62.88.88
iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE

第一条的45.62.88.88这是我vps的IP地址也就vpn服务的外网地址,记得修改为自己的vps的IP,10.100.0.0是我们之前设置的vpn虚拟内网服务IP地址 如果前面你设置的不是10.100.0.0也记得改。

第二条是自动伪装IP,-o eth0 是vps的网卡但大多数都是 -o eth0,你可用ifconfig命令查看。有教程说任意一条都可以,但是我试了在我这里就不行,得把两条都加上vpn才能转发成功连接网络。

上面两条规则设置好后,如果没问题我们的vpn就可以使用,从客户端--vps--外网可以联通了。但这样我们要用vpn代理上网的话有时候打开网站会很慢,我们可以手动修改一下转发包的mss

iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --set-mss 1356

然后用iptables-save命令保存防火墙。运气好的话就可以开心的玩耍了,为什么说运气好你懂得,vpn这种东西有时候会受到一些干扰的(手动滑稽)

可能问题

如果你用iptables配置防火墙后发现连不上了,有可能是端口的问题,pptp服务用到1723端口,还有那个GRE协议47但你并不需要开启47端口,再继续添加下面两条规则iptables-save保存试试。

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p 47 -j ACCEPT

当然关于连接不上的问题还有很多可能,比如客户端到服务器的网络中有设备不支持GRE协议或NAT-T,有时候提示从客户端到vpn的连接被中断,我测试有时候你过一会儿又能连接上,这就是中间网路的问题。嗯还有就是有时候dns解析也会出现问题。

另外如果你是在内网,比如公司内部网络配置vpn那还需要设置网关转发,配置如下(如果你用代理自己电脑来连接vps上的vpn并不需要这个,还是贴上给需要的人 注意server_ip)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1723 -j DNAT --to SERVER_IP
iptables -t nat -A PREROUTING -i eth0 -p 47 -j DNAT --to SERVER_IP

写在最后

如果你按照这个过程成功了,很高兴能帮到你如果没有可以留言哈,当然如果你是一个人或者人不是太多不是服务什么大型网络和公司,只是想用代理上个国外知识网站,推荐用shadowsocks相对可靠稳定抗干扰强,在window、安卓、苹果等桌面和移动设备上都有客户端,嗯Linux上也有。

如果你嫌自己动手搭建代理麻烦,可以直接购买搬瓦工的vps后台直接开启就好,shadowsocks多用户的话还是需要自己动手搭建的。

发表评论