Interfaces em ponte não têm acesso à Internet

1

Estou tentando executar uma VM do QEMU, mas ela não tem acesso à Internet, apenas acesso ao host e a uma rede do Docker.

O que eu fiz:

  1. Criado uma ponte com: brctl addbr virbr0 ;
  2. Ativou: ip link set up dev virbr0 ;
  3. Atribuído um IP: ip addr add 192.168.66.1/24 ;
  4. Atualizou a configuração do QEMU: echo "allow virbr0" >> /etc/qemu/bridge.conf ;
  5. Execute o virt-install:

    virt-install \
      --name centos67 \
      --memory 1024 \
      --vcpus=1,maxvcpus=2 \
      --cpu host \
      --cdrom $HOME/Downloads/CentOS-6.7-x86_64-minimal.iso \
      --disk size=4,format=raw \
      --network bridge=virbr0
    

Em seguida, iniciei uma imagem de resgate e configurei uma rede:

IP: 192.168.66.2/24

Gateway: 192.168.66.1

Isso é tudo, neste momento eu só tenho acesso ao host e à rede do Docker, mas não à Internet (então o ping 8.8.8.8 falhou).

Aqui está a saída de alguns utilitários de hosts que podem ser úteis para ajudar a resolver esse problema:

$ brctl showstp virbr0
virbr0
 bridge id              8000.fef8a25ccef1
 designated root        8000.fef8a25ccef1
 root port                 0                    path cost                  0
 max age                  19.99                 bridge max age            19.99
 hello time                1.99                 bridge hello time          1.99
 forward delay            14.99                 bridge forward delay      14.99
 ageing time             299.99
 hello timer               0.00                 tcn timer                  0.00
 topology change timer     0.00                 gc timer                 167.03
 flags


tap0 (1)
 port id                8001                    state                forwarding
 designated root        8000.fef8a25ccef1       path cost                100
 designated bridge      8000.fef8a25ccef1       message age timer          0.00
 designated port        8001                    forward delay timer       12.95
 designated cost           0                    hold timer                 0.00
 flags

$ ip route
default via 192.168.232.2 dev envmw  proto static  metric 100
192.168.5.0/24 dev docker0  proto kernel  scope link  src 192.168.5.1
192.168.66.0/24 dev virbr0  proto kernel  scope link  src 192.168.66.1
192.168.232.0/24 dev envmw  proto kernel  scope link  src 192.168.232.100  metric 100
212.25.224.10 via 192.168.232.2 dev envmw  proto static  metric 100

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             255.255.255.255

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             a01.dev.lo  tcp dpt:pxc-splr-ft
ACCEPT     tcp  --  anywhere             a01.dev.lo  tcp dpt:pxc-spvr-ft
ACCEPT     tcp  --  anywhere             a01.dev.lo  tcp dpt:newoak

Parece que perdi alguma etapa de configuração, mas não sei qual. Tentei pesquisar uma solução no Google, mas não encontrei nenhuma.

    
por rtkh 10.12.2015 / 09:57

2 respostas

0

Para que funcione, tive que ativar o NAT.

$ iptables -t nat -A POSTROUTING -o envmw -j MASQUERADE
$ iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -i virbr0 -o envmw -j ACCEPT
    
por 10.12.2015 / 14:45
1

Você não adicionou uma interface física ( envmw ) à sua ponte. Você também precisa definir essa interface para o modo promíscuo sem um endereço IP:

brctl addif virbr0 envmw
ip addr add 0/0 dev envmw
ip addr del 192.168.66.1/24 dev envmw
ip link set envmw promisc on

Executar esses comandos a partir de uma sessão remota é uma má ideia, porque está mudando a configuração da interface. Isso, por sua vez, desconectará qualquer tráfego remoto, incluindo a sessão remota.

    
por 10.12.2015 / 10:03