公司上網環境是使用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部落格