Linux
通過 VPN 將流量路由到某個子網。Ping 正常,但沒有 TCP 流量返回
我有以下設置
- 伺服器(192.168.21.11、172.17.4.6),通過 OpenVPN 路由 10.10.10.0/24
- 客戶端 (192.168.21.9)
- 路由器 (192.168.21.1)$$ m0n0wall $$具有 10.10.10.0/24 到 192.168.21.11 的靜態路由
在伺服器上,啟用了 NAT 轉發:
/sbin/iptables -t nat -A POSTROUTING -d 10.10.10.0/24 -o tun0 -j MASQUERADE # cat /proc/sys/net/ipv4/ip_forward 1 # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
我能夠從客戶端到伺服器進行跟踪路由
# traceroute 10.10.10.10 traceroute to 10.10.10.10 (10.10.10.10), 30 hops max, 60 byte packets 1 (192.168.21.1) 0.283 ms 0.211 ms 0.165 ms ## Router 2 (192.168.21.11) 0.262 ms 0.249 ms 0.213 ms ## Server 3 (172.17.4.1) 40.356 ms 83.965 ms 83.915 ms ## OpenVPN Subnet 4 (10.10.10.10) 83.778 ms 83.626 ms 83.488 ms
但我不知何故無法從客戶端連接到伺服器。這是 tcpdump 報告的內容,當我嘗試通過 SSH 連接到伺服器時:
# tcpdump -i tun0 tcpdump: WARNING: arptype 65534 not supported by libpcap - falling back to cooked socket tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes 08:05:16.734848 IP 172.17.4.6.58710 > 10.10.10.10.ssh: S 2851123862:2851123862(0) win 5840 <mss 1460,sackOK,timestamp 597224955 0,nop,wscale 6> 08:05:16.776264 IP 10.10.10.10.ssh > 172.17.4.6.58710: S 658436853:658436853(0) ack 2851123863 win 5792 <mss 1366,sackOK,timestamp 296951268 597224955,nop,wscale 5> 08:05:20.986415 IP 10.10.10.10.ssh > 172.17.4.6.58710: S 658436853:658436853(0) ack 2851123863 win 5792 <mss 1366,sackOK,timestamp 296952321 597224955,nop,wscale 5> 08:05:26.985854 IP 10.10.10.10.ssh > 172.17.4.6.58710: S 658436853:658436853(0) ack 2851123863 win 5792 <mss 1366,sackOK,timestamp 296953821 597224955,nop,wscale 5>
似乎來自伺服器的數據包沒有路由回客戶端。
好吧,這不是 iptables 問題。問題是我使用 m0n0wall 作為路由器,並通過 m0n0wall 設置路由。由於 m0n0wall 通過防火牆推送這些路由,因此必須啟用“繞過同一介面上的流量的防火牆規則”規則以阻止 m0n0wall 停止數據包。
問題非常類似於: http: //forum.m0n0.ch/index.php?topic=381.0