![封包不跨越 IP 表 當源自外部 IP 時進行後路由](https://rvso.com/image/38663/%E5%B0%81%E5%8C%85%E4%B8%8D%E8%B7%A8%E8%B6%8A%20IP%20%E8%A1%A8%20%E7%95%B6%E6%BA%90%E8%87%AA%E5%A4%96%E9%83%A8%20IP%20%E6%99%82%E9%80%B2%E8%A1%8C%E5%BE%8C%E8%B7%AF%E7%94%B1.png)
我試圖將來自互聯網的流量反映到我只想進行本地訪問的內部設備。我的 DMZ 中有一台主機,我正在嘗試將 DNAT 流量傳送到該內部設備,並且使用 SNAT,因此不需要網路路由。
在測試中,我能夠從本機電腦到此代理主機進行 DNAT/SNAT 並存取內部設備上的資源。然而,當存取路由器上的連接埠時,我可以看到請求透過 tcpdump 到達代理主機,並且我看到它們增加了 iptables DNAT 規則計數器,但沒有建立連接。此外,更多本地測試會增加 DNAT 和 SNAT 規則計數器,但外部流量僅增加 DNAT 計數器。
代理主機僅出於此目的而啟動,沒有其他服務。有一個介面具有兩個 IP .254 和 .253,傳入流量應到達 .254,並在流向內部設備的途中從 .253 進行 SNAT。核心 IPv4 轉送也已啟用。
下面是我的 iptables 設定:
# Generated by iptables-save v1.4.7 on Sun Jun 22 22:49:18 2014
*filter
:INPUT ACCEPT [32:4832]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14:1016]
-A INPUT -p tcp -m tcp --dport 443 -j MARK --set-mark 7
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i admin -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i admin -p udp -m state --state NEW -m udp --dport 161 -j ACCEPT
-A INPUT -i local -p tcp -m state --state NEW -m tcp --dport 5308 -j ACCEPT
-A INPUT -i admin -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
-A FORWARD -d 10.254.254.1/32 -p tcp -m state --state NEW,RELATED,ESTABLISHED -mm
tcp --dport 443 -j ACCEPT
-A FORWARD -j ACCEPT
-A INPUT -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Sun Jun 22 22:49:18 2014
# Generated by iptables-save v1.4.7 on Sun Jun 22 22:49:18 2014
*mangle
:PREROUTING ACCEPT [73:6562]
:INPUT ACCEPT [33:4290]
:FORWARD ACCEPT [18:972]
:OUTPUT ACCEPT [18:1408]
:POSTROUTING ACCEPT [27:1624]
-A INPUT -s 173.214.161.60 -j MARK --set-xmark 0x6/0xffffffff
-A FORWARD -s 173.214.161.60 -j MARK --set-xmark 0x5/0xffffffff
-A POSTROUTING -s 173.214.161.60 -j MARK --set-xmark 0x4/0xffffffff
-A PREROUTING -s 173.214.161.60 -j MARK --set-xmark 0x3/0xffffffff
-A OUTPUT -s 173.214.161.60 -j MARK --set-xmark 0x2/0xffffffff
COMMIT
# Completed on Sun Jun 22 22:49:18 2014
# Generated by iptables-save v1.4.7 on Sun Jun 22 22:49:18 2014
*nat
:PREROUTING ACCEPT [31:3139]
:POSTROUTING ACCEPT [14:1016]
:OUTPUT ACCEPT [14:1016]
-A PREROUTING -d 10.254.254.254/32 -i dmz -j DNAT --to-destination 10.254.254.2
-A POSTROUTING -o dmz -j SNAT --to-source 10.254.254.253
COMMIT
# Completed on Sun Jun 22 22:49:18 2014