MiKing233
104 天前
我跟你一樣, 剛折騰完解決這個問題, 遇到的問題就是 IP 動態僞裝要勾選, 不勾選網路就不通(當然因爲 NAT 問題), 不過勾選之後經過轉發外網訪問的 IP 地址就變成了 OpenWrt 自身, 看不到真實地址, 解決方案如下:
版本 OpenWrt 18.06-k5.4 AArch64 5.4.203
在"防火墙 - 区域设置"中, 確保 lan:lan:以太网适配器: "eth1" ⇒ vpn wan 中的"IP 动态伪装"勾選
在"防火墙 - 自定义规则"中, 添加以下 iptables 規則:
iptables -t nat -A POSTROUTING -o br-lan -j MASQUERADE ! -i 10.128.0.0/16
iptables -t nat -A POSTROUTING -s 10.128.0.0/16 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -d 10.128.0.0/16 -o br-lan -j ACCEPT
其中網段根據你的網路環境修改, 第二條中的 eth1 也根據實際情況修改
在這種 OP 只有一個 LAN 連接上級 Gateway 作爲旁路 Gateway 存在的情況下, 關鍵問題在於 NAT 處理哪一段的數據, 如果是處理整個 br-lan 中的數據包, 那麽端口轉發后到達目標設備的 IP 地址必然會變成 OP 自己, 在這三條規則中, 第一條折騰過的肯定不陌生, 重要是下面兩條, 首先是對整個 eth1 出去的數據包進行 NAT 處理, 但要再加上一條通過接口 br-lan 時跳過 NAT 處理, 這樣就可以讓端口轉發后到達目標設備的 IP 地址為外部源地址, 但又不影響其他需要正常被 NAT 的數據, 從而完美解決這個問題, 看了一圈似乎都沒有對這方面的回答, 希望能幫到各位