iptables
我與隊列結合使用,net-filter
以便以程式設計方式更改資料包。
我iptables
在 ubuntu 實驗室上使用規則,其中 2 個 NIC eth0 連接到互聯網,eth1 連接到 LAN 我使用了眾所周知的 iptables 規則進行 NAT,並在 eth0 上進行偽裝。
sudo iptables --table nat --append POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -append FORWARD -i eth1 -j ACCEPT.
sudo iptables -t mangle -A PREROUTING -j NFQUEUE --queue-num 0
sudo iptables -t mangle -A OUTPUT -j NFQUEUE
這 4 條規則用於幫助我捕獲程式內的資料包並修改資料包或刪除我想要使用的內容nfq_set_verdict
。
事實上一切都按照我的預期進行,那就是三種協定類型icmp
,tcp
資料udp
包被修改並重新註入。然後在佇列中將 eth0 退出到互聯網,以 eth0 ip 位址作為來源位址(使用 MASQUERADE NAT 規則的效果)。
對於所有資料包都是如此,除了:ICMP ping回覆或 TCP確認數據包。
他們使用 eth1 上的 LAN 設備的私人 IP - 192.168.xx 退出到互聯網,並使用此私人來源 IP 位址到達另一端。
有任何想法嗎。謝謝。