Linux
使用網橋和靜態 IP 配置 iptables
我的伺服器設置了幾個公共 IP 地址,網路配置如下(帶有範例 IP):
eth0 \- br0 - 1.1.1.2 |- [VM 1 的 eth0] | |- 1.1.1.3 | \- 1.1.1.4 \- [VM 2 的 eth0] \- 1.1.1.5
我的問題是,如何為實際的物理伺服器和虛擬機設置不同規則的 iptables?我不介意讓虛擬機自己做 iptables,但我希望 br0 有一套不同的規則。現在我只能讓一切都通過,這不是理想的行為(因為 br0 暴露了)。
謝謝!
由於您已為 br0 分配了 IP 地址,因此它實際上是伺服器的“真實”網路介面。無論您的網路介面是命名為 br0 還是 eth0,您都可以在伺服器上創建同樣有效的 iptables 規則。也就是說,只需編寫伺服器的防火牆 iptables 規則,就好像您的網路介面是普通的 eth0(除了它被命名為 br0)。
不必擔心必須編寫 iptables 規則以顯式允許連接到橋接器 br0 的虛擬介面的流量,因為(這是一個關鍵點)**iptables 規則不能顯式過濾或影響橋接器上的流量。**原因是網橋在鏈路層(L2)執行,而 iptables(大部分情況下)在更高網路層(通常是 L3 和 L4)的數據包上執行。一個可能有用的心理圖是這樣的:一個網橋的功能幾乎就像一個網路集線器,所有的橋接介面都插入其中。
如果您想過濾通過網橋的流量,您應該查看ebtables,但您不太可能需要。將網橋簡單地視為網路基礎設施的一部分(即,像集線器或交換機),並為網路上的每個主機(無論是真實的還是虛擬機)創建一個 iptables 防火牆腳本,會更加自然和方便。