公司上网环境是使用iptables+squid+goagent,提供代理上网,×××网关功能。
本来相安无事,但由于有特殊工作需求,需要拨入国外***(部分人不想使用goagent觉得麻烦)。

得到美国pptp ***帐号后客户端竟然无法拨入,提示619错误。
但由于本事该网关上装有pptp server,连接该***测试可以连接,偏偏这个***无法正常工作。
公司里面通过无线上网,遂考虑是否是刷入的dd-wrt固件中***穿越没有开启,经过检查已经全部开启。
所以问题可能还是出在网关上。
检查iptables策略后发现并无异常,也允许了1723端口和gre协议,但是均无效,依然619错误。
仔细一想,SNAT默认会有所有的流量全部进行转换,如果不设置***穿越可能无法正常工作。遂google之…

查阅资料后发现,iptables需要加载相对应模块才能实现***穿越:
 

   
   
   
   
  1. #modprobe ip_nat_pptp 
  2. #modprobe ip_nat_proto_gre 
  3. #modprobe ip_conntrack_pptp 


同样还有ftp穿越:
 

   
   
   
   
  1. #modprobe ip_nat_ftp 


#执行后可以用lsmod命令查看是否加载成功

备注:
 如果想让iptables自动加载以上模块,可以编辑/etc/sysconfig/iptables-config文件,在IPTABLES_MODULES=""字段中添加以上模块。
例如:
   
   
   
   
  1. IPTABLES_MODULES="ip_conntrack_pptp ip_conntrack_ftp ip_nat_pptp ip_nat_proto_gre ip_nat_ftp" 
重启iptables即可

执行以上命令后再测试,顺利连接成功!

但是让我郁闷的是,拨入其他***正常,唯独这个***需要加载以上模块,不知为何。

小技巧:
怎么判断是否是远端***异常,可以利用telnet工具, “telnet pptp服务器ip 远程端口”看是否连接上。

原文连接:Darren博客