
好的,在普通 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 操作)。