Iptables 與 libnetfilter NATing 問題

Iptables 與 libnetfilter NATing 問題

我將 ip 表與網路過濾器隊列結合使用,以便以程式設計方式更改封包。

我在ubuntu 實驗室上使用iptables 規則,有2 個網卡eth0 連接到互聯網,eth1 連接到LAN 我使用了眾所周知的iptables 規則進行NAT,並在eth0 上進行偽裝Sudo iptables --table nat --append POSTROUTING - o eth0 -j MASQUERADE sudo iptables -append FORWARD -i eth1 -j 接受。 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 ip 位址作為來源位址退出eth0 到網際網路(使用MASQUERADE NAT 規則的效果)。對於所有資料包都是如此,除了:icmp ping 回應或 tcp ack 資料包。他們使用 LAN 裝置的私人 IP - 192.168.xx 退出互聯網,並使用此私人來源 IP 位址到達另一端。有任何想法嗎。謝謝。

答案1

我在ubuntu 實驗室上使用iptables 規則,有2 個網卡eth0 連接到互聯網,eth1 連接到LAN 我使用了眾所周知的iptables 規則進行NAT,並在eth0 上進行偽裝Sudo iptables --table nat --append POSTROUTING - o eth0 -j MASQUERADE sudo iptables -append FORWARD -i eth1 -j 接受。 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 ip 位址作為來源位址退出eth0 到網際網路(使用MASQUERADE NAT 規則的效果)。對於所有資料包都是如此,除了:icmp ping 回應或 tcp ack 資料包。他們使用 LAN 裝置的私人 IP - 192.168.xx 退出互聯網,並使用此私人來源 IP 位址到達另一端。有任何想法嗎。謝謝。

相關內容