Não é possível conectar-se à instância por meio de IPs flutuantes, não usando o natting / encaminhando corretamente

2

Estou tendo problemas para conseguir que IPs flutuantes funcionem corretamente no meu OpenStack configuração. Parece que o nó do controlador (executando nova rede) não é encaminhando o tráfego para as instâncias.

Eu tenho uma implantação do Folsom com o FlatDHCP, não executando multi-host, rodando no Ubuntu 12.04.

Como exemplo, aqui está uma instância em execução com um IP fixo de 10.40.0.2 e um IP flutuante de 10.20.0.3:

$ nova list
+-------+---------+--------+------------------------------+
| ID    | Name    | Status | Networks                     |
+-------+---------+--------+------------------------------+
| 3d292 | quantal | ACTIVE | private=10.40.0.2, 10.20.0.3 |
+-------+---------+--------+------------------------------+

Se eu estiver conectado ao controlador, posso fazer ping e ssh na instância da VM a partir de qualquer um dos IPs. No entanto, não consigo pingar ou ssh para a instância de uma máquina externa.

Se eu tentar fazer ping de uma máquina em uma rede diferente (192.168.3.5), posso ver os pacotes chegarem ao controlador em sua interface pública (eth3), mas aqueles os pacotes não estão sendo encaminhados para a ponte (br100) que está conectada à interface privada:

# tcpdump -i any icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
20:33:12.908188 IP 192.168.3.5 > 10.20.0.3: ICMP echo request, id 58378, seq 0, length 64
20:33:13.910759 IP 192.168.3.5 > 10.20.0.3: ICMP echo request, id 58378, seq 1, length 64
20:33:14.910591 IP 192.168.3.5 > 10.20.0.3: ICMP echo request, id 58378, seq 2, length 64

Configurei nova-network para usar o driver de firewall "no-op". não deve haver problemas com grupos de segurança aqui:

firewall_driver=nova.virt.firewall.NoopFirewallDriver

Confirmei que tenho o encaminhamento de IP ativado:

$ cat /proc/sys/net/ipv4/ip_forward
1

Eu não estou muito familiarizado com o iptables, mas olhando as regras (veja link ), Eu não consigo ver nada obviamente errado.

Eu assumo que esta regra está em vigor quando conectando do controlador para a VM:

-A nova-network-OUTPUT -d 10.20.0.3/32 -j DNAT --to-destination 10.40.0.2

E que atinge essas regras ao avançar

-A nova-network-PREROUTING -d 10.20.0.3/32 -j DNAT --to-destination 10.40.0.2
-A nova-network-FORWARD -o br100 -j ACCEPT

Neste ponto, estou perdido porque não está fazendo o NAT corretamente e encaminhando os pacotes.

As interfaces são:

  • eth0 : (não envolvido aqui)
  • eth1 : conecta-se à rede interna da VM apenas, o br100 é conectado a ela. Os pacotes devem finalmente sair dessa interface
  • eth2 : (não envolvido aqui)
  • eth3 : interface voltada para o público. Tem o IP do controlador (10.20.0.2), como bem como o IP flutuante da instância (10.20.0.3).

Abaixo está a saída de "ip a", com MACs obscurecidos.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet 169.254.169.254/32 scope link lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
    inet 10.30.0.131/24 brd 10.30.0.255 scope global eth0
    inet6 ef23::2345:3aff:fe86:50c8/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br100 state UP qlen 1000
    link/ether 11:22:33:44:55:66 brd ff:ff:ff:ff:ff:ff
    inet6 ef23::2345:3aff:fe86:50c9/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 77:88:99:00:11:22 brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.131/24 brd 10.10.0.255 scope global eth2
    inet6 ef23::2345:3aff:fe68:b4b6/64 scope link
       valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 33:44:55:66:77:88 brd ff:ff:ff:ff:ff:ff
    inet 10.20.0.2/24 brd 10.20.0.255 scope global eth3
    inet 10.20.0.3/32 scope global eth3
    inet6 ef23::2345:3aff:fe68:b4b7/64 scope link
       valid_lft forever preferred_lft forever
6: br100: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 54:78:1a:86:50:c9 brd ff:ff:ff:ff:ff:ff
    inet 10.40.0.1/16 brd 10.40.255.255 scope global br100
    inet6 ef23::2345:3aff:fed1:cd55/64 scope link
       valid_lft forever preferred_lft forever

Tabela de roteamento:

~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.0.1       0.0.0.0         UG    100    0        0 eth2
10.10.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth2
10.20.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth3
10.30.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.40.0.0       0.0.0.0         255.255.0.0     U     0      0        0 br100

Configuração de ponte:

# brctl show
bridge name bridge id       STP enabled interfaces
br100       8000.54781a8650c9   no      eth1

Aqui estão algumas linhas de rede do /etc/nova/nova.conf

network_manager=nova.network.manager.FlatDHCPManager
flat_interface=eth1
flat_network_bridge=br100
public_interface=eth3
firewall_driver=nova.virt.firewall.NoopFirewallDriver
    
por Lorin Hochstein 21.03.2013 / 02:10

1 resposta

2

Você diz em "As interfaces são" que a eth2 não está envolvida mas da saída da rota parece que o gateway está configurado para eth2.

Acho que você gostaria que fosse configurado no eth3. Eu verificaria se o / etc / network / interfaces está configurado para refletir isso.

    
por 25.03.2013 / 09:17