~에서libvirt 문서:
기본적으로 가상 네트워크를 통해 연결된 게스트는 원하는 대로 나가는 네트워크 연결을 만들 수 있습니다. 동일한 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
NEW
첫 번째 포함 상태 FORWARD
규칙 에 상태를 포함 하도록 libvirt를 어떻게 구성합니까 ?또는 거부 규칙이나 유사한 규칙을 제거하세요.
나는 그러한 규칙을 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
-----------------------------------------
내 파일에는 게스트에 사용할 수 있는 NIC의 브리지 장치를 구성하는 다음 /etc/network/interfaces
과 같은 정의가 있습니다 .br0
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>
...