De acordo com documentação do libvirt :
Bridge to LAN
This is the recommended config for general guest connectivity on hosts with static wired networking configs.
Provides a bridge from the VM directly to the LAN. This assumes there is a bridge device on the host which has one or more of the hosts physical NICs enslaved. The guest VM will have an associated tun device created with a name of vnetN, which can also be overridden with the element (see overriding the target element). The tun device will be enslaved to the bridge. The IP range / network configuration is whatever is used on the LAN. This provides the guest VM full incoming & outgoing net access just like a physical machine.
Usando o virsh para criar ponte
De acordo com a Documentação do RHEL , você pode usar virsh
para criar uma ponte, por exemplo br0
bridge com base na interface eth0
:
# virsh iface-bridge eth0 br0
Se você quiser / precisar remover a ponte, faça
# virsh iface-unbridge br0
Criando initscripts de rede
Se isso não funcionar da maneira que você precisa, crie / edite os scripts init em /etc/sysconfig/network-scripts/
manualmente. Esta seção é diretamente da página de documentação do libvirt :
No diretório / etc / sysconfig / network-scripts, é necessário criar 2 arquivos de configuração. O primeiro (ifcfg-eth0) define sua interface de rede física e diz que fará parte de uma ponte:
# cat > ifcfg-eth0 <<EOF
DEVICE=eth0
HWADDR=00:16:76:D6:C9:45
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
EOF
Obviamente, altere o HWADDR para corresponder ao endereço da sua NIC real. Você também pode configurar a MTU do dispositivo usando, por exemplo, MTU = 9000.
O segundo arquivo de configuração (ifcfg-br0) define o dispositivo de ponte:
# cat > ifcfg-br0 <<EOF
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
EOF
AVISO: a linha TYPE = Bridge é sensível a maiúsculas e minúsculas - deve ter maiúsculas 'B' e minúsculas 'cume'
Após alterar esta rede de reinicialização (ou simplesmente reinicializar)
# service network restart
O passo final é desabilitar o netfilter na bridge:
# cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF
# sysctl -p /etc/sysctl.conf
Recomenda-se fazer isso por motivos de desempenho e segurança. Veja o bug do Fedora # 512206. Alternativamente, você pode configurar o iptables para permitir que todo o tráfego seja encaminhado pela ponte:
# echo "-I FORWARD -m physdev --physdev-is-bridged -j ACCEPT" > /etc/sysconfig/iptables-forward-bridged
# lokkit --custom-rules=ipv4:filter:/etc/sysconfig/iptables-forward-bridged
# service libvirtd reload
NetworManager e Bridging
Embora não tenha certeza se isso ainda é verdade, como há desenvolvimento ativo, NetworkManager
não oferece suporte a ponte. Portanto, pode ser necessário desativá-lo e usar o network
service:
# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start
Assim, uma vez que você criar a interface "bridge", escravize a NIC física conforme descrito na documentação, então você precisa editar a configuração do Virtual Guest para escravizar sua NIC à bridge em o host também.
...
<devices>
...
<interface type='bridge'>
<source bridge='br0'/>
</interface>
<interface type='bridge'>
<source bridge='br1'/>
<target dev='vnet7'/>
<mac address="00:11:22:33:44:55"/>
</interface>
...
</devices>
Uma vez feito isso, o roteador, ao qual a NIC física do seu host está conectada, atribuirá endereços via DHCP às interfaces em ponte - para o host e / ou para o convidado.
Há Perguntas e respostas ; A no Serverfault que pode ser útil para configurar a configuração de convidado. Essencialmente, usando virsh
(assumindo que você está trabalhando com libvirt
), faça
virsh net-list
virsh net-edit $NETWORKNAME
Procure a seção dhcp
e edite algo assim
<dhcp>
<range start='192.168.122.100' end='192.168.122.254'/>
<host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
<host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
<host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>
Observação: pode haver um arquivo "hosts" em /var/lib/libvirt/dnsmasq/
com os mapeamentos existentes.
nl /var/lib/libvirt/dnsmasq/myvirtnet.lan.hostsfile
1 52:54:00:39:ae:1c,192.168.122.242,minirhel.myvirtnet
2 52:54:00:9b:0a:42,192.168.122.133,rhel7.myvirtnet
3 52:54:00:f9:1e:45,192.168.122.134,rhel7.myvirtnet
4 52:54:00:b0:d5:38,192.168.122.205,redqcow.myvirtnet
5 52:54:00:af:c4:9c,192.168.122.206,redqcow.myvirtnet