Linux

通過 vSwitch 的兩台主機之間的防火牆/IP 規則問題

  • May 4, 2022

我這裡有兩台伺服器,一台是 Qemu VM 主機,另一台是某種儲存盒。

它們是 hetzner 機器,我通過 vSwitch 將它們連接起來。

Server1 vSwitch 介面:

3: local@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 10:7b:44:b1:5b:7d brd ff:ff:ff:ff:ff:ff
   inet 192.168.100.1/24 brd 192.168.100.255 scope global local
      valid_lft forever preferred_lft forever

Server1(VM主機)ip路由:

default via <redacted-public-ip> dev eth0 proto static metric 100 
<redacted-public-ip> dev eth0 proto static scope link metric 100 
192.168.10.0/24 dev virbr0 proto kernel scope link src 192.168.10.254 metric 425 <-- virbr0 network
192.168.10.253 via 192.168.100.2 dev local <-- srv02 IP to fit in virbr0 net space

Server2 vSwitch 介面:

3: local@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UP group default qlen 1000
   link/ether 08:60:6e:44:d6:2a brd ff:ff:ff:ff:ff:ff
   inet 192.168.100.2/24 brd 192.168.100.255 scope global local
      valid_lft forever preferred_lft forever
   inet 192.168.10.253/24 brd 192.168.10.255 scope global local
      valid_lft forever preferred_lft forever

Server2 ip路由:

default via <redacted-public-ip> dev eth0 proto static metric 100 
<redacted-public-ip> dev eth0 proto static scope link metric 100 
192.168.10.0/24 dev local proto kernel scope link src 192.168.10.253  <-- to access virbr0 via vSwitch

我猜我的路由設置是正確的——因為在firewalld服務關閉的情況下一切正常。

但是,如果我打開它,問題就開始了。

這些是 Server1 上的防火牆區域(當我禁用 firewalld 時,一切正常)

libvirt (active)
 target: ACCEPT
 icmp-block-inversion: no
 interfaces: virbr0
 sources: 
 services: dhcp dhcpv6 dns ssh tftp
 ports: 
 protocols: icmp ipv6-icmp
 forward: no
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 
   rule priority="32767" reject


public (active)
 target: default
 icmp-block-inversion: no
 interfaces: eth0 local
 sources: 
 services: cockpit dhcpv6-client ssh
 ports: 
 protocols: 
 forward: no
 masquerade: no
 forward-ports: 
 source-ports: 
 icmp-blocks: 
 rich rules: 

我曾嘗試同時在其中的每一個上打開偽裝,但無濟於事。我正在使用從 Server2 到 virbr0 上的一個虛擬機的簡單 ping 來“測試”它

我在這裡有什麼明顯的遺漏嗎?

謝謝大家。

我已經設法解決了這個問題,在 QEMU 主機上使用以下兩個規則

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -o local -i virbr0 -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -o virbr0 -i local -j ACCEPT

引用自:https://serverfault.com/questions/1098929