Kvm-Virtualization
兩個 NAT 網路之間的 Libvirt 路由
我有以下兩個網路,
<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.64
從192.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),我們需要向該
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_FWI
orLIBVIRT_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
讓這些規則持久化是一項練習,因為具體如何做到這一點因分佈和防火牆管理工具而異。