libvirt guests: aceita conexões de rede externa

2

Em documentação do libvirt :

By default, guests that are connected via a virtual network with can make any outgoing network connection they like. Incoming connections are allowed from the host, and from other guests connected to the same libvirt network, but all other incoming connections are blocked by iptables rules.

Mas quero que os convidados possam aceitar conexões de entrada de "fora".

O problema são estas regras do iptables que são configuradas automaticamente pelo libvirt:

*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

Como eu configuro o libvirt para incluir o estado NEW na primeira regra FORWARD ? Ou para me livrar das regras de rejeição ou algo similar.

Eu sei que posso adicionar essa regra ao iptables manualmente, mas estou curioso para saber se isso pode ser feito apenas alterando a configuração do libvirt. Tenho acesso a um servidor onde já está configurado dessa forma, mas não consegui encontrar como (mesmo por diffing /etc ).

Eu estou usando libvirt 1.2.9-9 + deb8u2 no Debian 8.5 Jessie. Eu uso a rede 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>
    
por Messa 02.07.2016 / 14:29

1 resposta

2

Se você deseja que seus convidados tenham acesso total e transparente ao restante de sua rede, não use a rede NAT padrão. No meu caso, eu o desativei também:

virsh net-list
Name                 State      Autostart
-----------------------------------------

No meu /etc/network/interfaces eu tenho uma definição como essa, que configura um dispositivo de ponte br0 no meu NIC eth0 que eu posso usar para meus convidados:

########################################################################
# 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

Eu posso especificar essa ponte definida anteriormente como o dispositivo compartilhado ao definir um convidado:

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>
    ...
    
por 02.07.2016 / 15:23