默认情况下,通过虚拟网络连接的来宾可以进行任何他们喜欢的传出网络连接。允许来自主机以及连接到同一 libvirt 网络的其他来宾的传入连接,但所有其他传入连接都会被 iptables 规则阻止。
但我希望客人能够接受来自“外部”的传入连接。
问题是 libvirt 自动设置的这些 iptables 规则:
*filter
:INPUT DROP [22:4523]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [606:91824]
...
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
如何配置 libvirt 以NEW
在第一个中包含状态FORWARD
规则中包含状态?或者摆脱拒绝规则或类似的规则。
我知道我可以自己手动将这样的规则添加到 iptables 中,但我很好奇是否可以通过更改 libvirt 配置来完成。我可以访问一台已经以这种方式配置的服务器,但我找不到如何配置(即使通过 diffing /etc
)。
我在 Debian 8.5 Jessie 上使用 libvirt 1.2.9-9+deb8u2。我使用default
网络:
$ sudo virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
$ sudo virsh net-dumpxml default
<network connections='6'>
<name>default</name>
<uuid>aafc9c08-98b2-499c-9058-8eb6fce47ab6</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
答案1
如果您希望访客能够完全透明地访问您网络的其余部分,请不要使用默认 NAT 网络。就我而言,我也禁用了它:
virsh net-list
Name State Autostart
-----------------------------------------
在我的文件中/etc/network/interfaces
,我有一个这样的定义,它br0
在我的 NIC 上配置一个桥接设备eth0
,我可以将其用于我的来宾:
########################################################################
# The network interface
# 192.168.1.0/24
#
#allow-hotplug eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.1.253
netmask 255.255.255.0
gateway 192.168.1.254
bridge_ports eth0
bridge_fd 0
bridge_maxwait 0
然后,我可以在定义来宾时将之前定义的网桥指定为共享设备:
virsh dumpxml myguest
...
<interface type='bridge'>
<mac address='52:54:00:3c:75:30'/>
<source bridge='br0'/>
<target dev='vnet5'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
</interface>
...