.png)
我遇到以下情況:
由 IP 位址 192.168.1.x (I1) 標識的一個介面(設備)透過任何服務連接到 IP 192.168.1.y (I2) 的另一個介面到連接埠 (P2)同一個區域網路。現在我想將從 I1 發送到 I2:P2 的所有幀/封包(一般資料)重定向到同一 LAN 上 IP 位址 192.168.1.z (I3) 和連接埠 (P3) 的另一台裝置上。
我嘗試過的:
我進行了調查iptables
,但最終發現它們(特別是 nat 表)僅適用於進入外部網路 (WAN) 的資料包。一個例外是,當在連接設備 (I1) 上設定規則時,這些 shell 命令會完成這項工作:
iptables -t nat -A OUTPUT -p tcp -d I2 --dport P2 -j DNAT --to I3:P3
iptables -t nat -A INPUT -p tcp -s I3 --sport P3 -j SNAT --to I2:P2
由於我想在本地路由器上應用這些規則,因此我嘗試查看 I1 和 I2 之間的通訊是否通過它:
iptables -t raw -I PREROUTING -s I1 -d I2 -j LOG
可能不是,因為我找不到這兩個 IP 的任何日誌(日誌檔案位於/var/日誌/訊息)。
我開始意識到 LAN 通訊是使用 MAC 位址透過交換器進行的,並且無法在那裡捕獲,這是真的嗎?我認為“交換器”在物理上與路由器在同一個盒子中。
最後,我想我可能甚至不需要重定向,只需在 I2(這是虛擬介面)上運行所需的服務,但這不是問題。
所以我的主要問題是:
是否可以重定向來自的流量(修改資料包)Ⅰ1到I2:P2在裡面交換器/路由器它正在經過,所以目的地是I3:P3然後 I3 可以以同樣的方式做出回應(偽裝成 I2:P2)而 I1 卻沒有註意到?
我想這可能是不可能的,而此級別的重定向與(虛擬)橋有關。如果是這樣,其他方式是否可以達到相同的結果?我只能修改交換器和 I2、I3 介面(不能修改 I1)。
答案1
您顯然位於同一網段,正如您所猜測的那樣 - 在這種情況下,流量沒有通過路由器。
您可以在兩個地方進行必要的調整:
您只需對傳出資料包進行 DNAT 的原始裝置 (I1):
iptables -t nat -A OUTPUT -p tcp -d I2 --dport P2 -j DNAT --to I3:P3
第二個裝置 (I2),您需要 DNAT 和 SNAT,並且必須啟用資料包轉送:
iptables -t nat -A PREROUTING -p tcp -s I1 -d I2 --dport P2 -j DNAT --to-destination I3:P3 iptables -t nat -A POSTROUTING -p tcp -s I1 -d I3 --dport P3 -m conntrack --ctstate DNAT -j SNAT --to-source I2
答案2
您只能在您的I1
裝置上並使用 iptables NAT 或類似裝置進行此修改。
如果您在目前的 LAN 中設定單獨的 IP 子網,使得 和位於x
不同y
的子網路中,那麼您可以在路由器中執行此目的地操作,因為封包將穿過路由器。