今天在測試 VPN Passthrough,發現找不到 ip_conntrack_pptp.ko。google 了半天也找不到資料,在 linux menuconfig 也找不到相關設定,最後只找到一個 PPTP protocol support,死馬當活馬醫,結果編出來變成 nf_conntrack_pptp.ko。最後去 google nf_conntrack_pptp.ko+ip_conntrack_pptp.ko 才知道兩者是一樣的東西,主要是 net/netfilter/Kconfig 的名稱變成 CONFIG_NF_CONNTRACK 而不是 CONFIG_NF_CONNTRACK_SUPPORT,所以造成抓錯檔了。

  • [*] Networking support --->
  •   Network options --->
  •     [*] Network packet filtering framework (Netfilter) --->
  •       [*] Advanced netfilter configuration
  •       Core Netfilter Configuration --->
  •         [*] Netfilter connection tracking support
  •         [M] PPTP protocol support
修改 user/rt2880_app/scripts/vpn-passthru.sh --- user-old/rt2880_app/scripts/vpn-passthru.sh 2015-07-31 14:31:13.158474337 +0800 +++ user/rt2880_app/scripts/vpn-passthru.sh 2015-07-31 14:31:49.765942167 +0800 @@ -9,7 +9,7 @@ # note: they must be removed in order -if [ "$CONFIG_NF_CONNTRACK_SUPPORT" = "y" ]; then +if [ "$CONFIG_NF_CONNTRACK" = "y" ]; then rmmod nf_nat_pptp 1>/dev/null 2>&1 rmmod nf_conntrack_pptp 1>/dev/null 2>&1 rmmod nf_nat_proto_gre 1>/dev/null 2>&1 @@ -20,7 +20,7 @@ fi if [ "$pptp_pt" = "1" -o "$l2tp_pt" = "1" -o "$ipsec_pt" = "1" ]; then -if [ "$CONFIG_NF_CONNTRACK_SUPPORT" = "y" ]; then +if [ "$CONFIG_NF_CONNTRACK" = "y" ]; then insmod -q nf_conntrack_proto_gre insmod -q nf_nat_proto_gre

另外因為 VPN Passthrough 全都是用 nf_conntrack_proto_gre.ko 及 nf_nat_proto_gre.ko 來管理,所以只要開啟一個等於三個全都通。要單獨開啟一個選項,就變成要從 firewall 去禁止另一個 portocol。

if [ "$pptp_pt" = "1" -o "$l2tp_pt" = "1" -o "$ipsec_pt" = "1" ]; then if [ "$l2tp_pt" = "0" ]; then iptables -A INPUT -p udp --dport 1701 -j DROP fi if [ "$ipsec_pt" = "0" ]; then iptables -A INPUT -p udp --dport 500 -j DROP fi fi

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()