首先是基本拓樸:
Internet
|
Gateway
|
Workstation---eth0---virbr0
|
+-----+-----+
| | |
vm1 vm2 vm3
我需要測試在我的工作站上執行的流量分析器,監聽 eth0 上的某個連接埠(例如 8990)。
[我認為]我想要的規則是「任何離開 virbr0 到連接埠 80 的任何封包都必須轉到 eth0 上的連接埠 8990」。我在連接埠 8990 上執行的軟體會自行檢查 NAT 封包損壞,以便在檢查封包後推送封包。
我一直在思考這個問題,有不同的變體:
iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j DNAT \
--to 10.0.0.10:8990
我嘗試了更通用的方法,將mangle
表與
--set-mark
and一起使用ip rule add fwmark
,但我沒有得到它。
我想讓我困惑的是所有東西都在同一個盒子上運行。
感謝您的任何指導。
答案1
事實證明這個問題毫無意義。 Tcpdump 顯示虛擬機器的子網路 192.168.122.0/24 甚至從未出現在核心路由決策中。我猜 libvirtd 在移交給內核網路堆疊之前會進行自己的網路處理。
回到繪圖板。