Total Pageviews

Monday, 4 March 2013

彻底解决不能连上pptp vpn或连上了pptp vpn,不到5分钟就自动断开的问题

首先修改windows客户端。也就是Windows自带的VPN拨号,以管理员身份运行 regedit ,然后查找如下字段  TcpPortNumber  ,查找到了以后,用10进制编辑该项的值,修改成跟服务器端一样的端口号,比如1823.  注册表的项值在  项[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}] \0001的 下面,修改后即可。(我在vista下的注册表里找到了TcpPortNumber.tcpportnumber 在win7的注册表里的位置为[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}] \0003,所以在win7下,也可连上pptp vpn server.)
参考:http://superuser.com/questions/381362/change-pptp-control-connections-tcp-port-number
http://superuser.com/questions/562118/how-to-find-the-tcpportnumber-in-win7s-registry

服务器端的操作。  登录putty,输入命令:
iptables -t nat -I PREROUTING -p tcp --dport 1823 -j REDIRECT --to-ports 1723 (这个才是有效的命令)
 回车即可。
原理是本地windows机器的1823端口连接服务器的1823端口,服务器收到连接1823端口的请求后,把连接转发到服务器的1723端口。(pptp vpn server的1723端口是改不了的。)

这样就可顺利突破gfw封锁服务器的1723端口的卑鄙行径,从而成功连上pptp vpn server而翻墙。(如果连不上,或连上不到5分钟就断开了,就多连二三次,一旦连上并超过5分钟未断开,就可以一直保持连接状态了。我实测成功)
参考: http://askubuntu.com/questions/175449/what-types-of-vpn-virtual-servers-allow-to-change-default-port

建议把iptables -t nat -I PREROUTING -p tcp --dport 1823 -j REDIRECT --to-ports 1723 加到/etc/rc.local里面,免得重启vps后,又要手动运行一遍该命令 。

(还有人使用的iptables规则是:
# iptables -A INPUT -i eth0 -p tcp --dport xxxx -j ACCEPT
# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport xxxx -j REDIRECT --to-port 1723 )

网上有文章说“修改/etc/services这个配置文件,假如是想把pptp的默认端口号由原来的1723修改为1724的话,只需要添加如下两行即可:

pptp            1724/tcp

pptp            1724/udp",这是完全无效的,不必去/etc/services这个配置文件。


网上还有其他方法:
1.可以用socat监听vps上的某个端口,比如1823,然后把对1823端口的连接请求转发到pptpd的1723端口
2.用rinetd转发.
3.在本机做个端口转发软件 比如 访问 127.0.0.1:5110 ,自动转到pptpvpnserverIP:1723
(这个恐怕不行,因为pptp vpn客户端没有“设置前置代理”的选项。) 

第1种办法我还未尝试第2种方法我试过,是不行的。