iptables nat 表未更改 PREROUTING 中的目標 IP?

iptables nat 表未更改 PREROUTING 中的目標 IP?

好的,在普通 Ubuntu 14.04.2 安裝中,我執行以下命令:

sudo bash -c 'echo 1 > "/proc/sys/net/ipv4/ip_forward"'
sudo iptables -t nat -A PREROUTING -d 192.168.100.1 -j DNAT --to-destination 10.196.106.230
sudo tcpdump -i wlan0 icmp and icmp[icmptype]=icmp-echo -n

然後我192.168.100.1從另一個終端 ping。但是,我看到tcpdump向我展示了這個:

01:46:37.536354 IP 10.196.100.76 > 192.168.100.1: ICMP echo request, id 6635, seq 1, length 64

但是,如果我刷新 nat 表並運行這個命令反而:

sudo iptables -t nat -A OUTPUT -d 192.168.100.1 -j DNAT --to-destination 10.196.106.230

然後,tcpdump給出:

01:46:53.168639 IP 10.196.100.76 > 10.196.106.230: ICMP echo request, id 6638, seq 1, length 64

(ping 成功,另一台機器返回 pong 訊號。)

來自許多教程在線,我希望即使在 PREROUTING 鏈中目標 IP 也會發生變化,對吧?還是我錯過了什麼?

答案1

PREROUTING 鏈不會對本地進程產生的資料包進行評估。

您的第一條規則將適用於從網路介面進入的封包(嘗試從另一台電腦進行 ping 操作)。

也許這張圖可以闡明如何檢查資料包流:iptables 中的資料包過濾

來源:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-IPTables.html

相關內容