Kvm-Virtualization

兩個 NAT 網路之間的 Libvirt 路由

  • September 4, 2022

我有以下兩個網路,

<network>
 <name>subsys-network</name>
 <bridge name="virbr1"/>
 <forward mode="nat"/>
 <ip address="192.168.72.1" netmask="255.255.255.128">
   <dhcp>
     <range start='192.168.72.2' end='192.168.72.126'/>
   </dhcp>
 </ip>
</network>
<network>
 <name>gw-frontend-network</name>
 <bridge name="virbr2"/>
 <forward mode="nat"/>
 <ip address="172.22.10.1" netmask="255.255.255.128">
   <dhcp>
     <range start='172.22.10.2' end='172.22.10.126'/>
   </dhcp>
 </ip>
</network>

cat /proc/sys/net/ipv4/ip_forward返回1

我可以找到使用路由網路的選項,但沒有 NAT 用於外部網路訪問。

如何配置路由以使兩個網路上的 VM 可以相互通信?

目前正在嘗試172.22.10.64192.168.72.56以下返回中 ping 通,

PING 172.22.10.64 (172.22.10.64) 56(84) bytes of data.
From 192.168.72.1 icmp_seq=1 Destination Port Unreachable
From 192.168.72.1 icmp_seq=2 Destination Port Unreachable
From 192.168.72.1 icmp_seq=3 Destination Port Unreachable
From 192.168.72.1 icmp_seq=4 Destination Port Unreachable

您可以手動添加必要的防火牆規則以允許這兩個網路之間的通信。您需要進行兩項更改:

  1. 禁用兩個網路之間的偽裝,以及
  2. 允許在兩個網路之間轉發

要修復 (1),我們需要向該nat POSTROUTING鏈添加一對規則(在呼叫鏈之前LIBVIRT_PRT)。所以也許:

iptables -t nat -I POSTROUTING 1 -s 192.168.72.0/25 -d 172.22.10.0/25 -j ACCEPT
iptables -t nat -I POSTROUTING 1 -s 172.22.10.0/25 -d 192.168.72.0/25 -j ACCEPT

要修復 (2),我們需要filter FORWARD在呼叫LIBVIRT_FWIorLIBVIRT_FWO鏈之前在鏈中添加規則:

iptables -I FORWARD 1 -s 172.22.10.0/25 -d 192.168.72.0/25 -j ACCEPT
iptables -I FORWARD 1 -s 192.168.72.0/25 -d 172.22.10.0/25 -j ACCEPT

讓這些規則持久化是一項練習,因為具體如何做到這一點因分佈和防火牆管理工具而異。

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