Descoberta de vizinho IPv6 / falha de roteamento para o Kernel 3.10

3

Erros estúpidos levaram a tudo isso, leia Atualização 5

Estou tentando configurar um roteador Linux (LXC, 3.10.0-123.el7.x86_64) com o IPv6.

O provedor é Hetzner e eu tenho 2 sub-redes, uma / 56 e uma / 64. Eles configuraram o roteamento para meu endereço LL e meu gateway padrão é fe80 :: 1.

Eu habilitei o encaminhamento de ipv6 e ipv4 em sysctl.conf:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

e eu configurei o IPTables para aceitar tudo.

Eu sei que ICMPv6 é o principal utilitário usado para roteamento no IPv6 - então isso não é bloqueado ;-). Eu também adicionei -A FORWARD -j ACCEPT .

Eu configurei o segundo (:: 2) ip da minha sub-rede / 56 para eth1 e o segundo (:: 2) do / 64 para eth0.

eth0 é a interface de uplink eth1 é a interface lan

Então, agora, para o problema principal.

Os clientes internos com endereços ipv6 do / 56 não podem fazer ping no mundo externo, mas os pacotes e a resposta são encaminhados corretamente até o meu roteador, que apenas descarta o pacote sem nenhuma dica.

por exemplo. ping6 ipv6.google.com resulta em tempos limite

mas no uplink do roteador eu recebo:

20:43:13.350932 IP6 client-ipv6-ip > fra07s64-in-x00.1e100.net: ICMP6, echo request, seq 1, length 64
20:43:13.355143 IP6 fra07s64-in-x00.1e100.net > client-ipv6-ip: ICMP6, echo reply, seq 1, length 64
20:43:14.350572 IP6 client-ipv6-ip > fra07s64-in-x00.1e100.net: ICMP6, echo request, seq 2, length 64
20:43:14.354609 IP6 fra07s64-in-x00.1e100.net > client-ipv6-ip: ICMP6, echo reply, seq 2, length 64
20:43:15.350630 IP6 client-ipv6-ip > fra07s64-in-x00.1e100.net: ICMP6, echo request, seq 3, length 64
20:43:15.355072 IP6 fra07s64-in-x00.1e100.net > client-ipv6-ip: ICMP6, echo reply, seq 3, length 64
20:43:16.350656 IP6 client-ipv6-ip > fra07s64-in-x00.1e100.net: ICMP6, echo request, seq 4, length 64
20:43:16.354748 IP6 fra07s64-in-x00.1e100.net > client-ipv6-ip: ICMP6, echo reply, seq 4, length 64

no cliente, apenas a solicitação de eco é visível.

Qual poderia ser o problema? Existem configurações adicionais para que meu roteador aceite qualquer coisa enviada para ele?

Até agora só usei NAT e nunca usei o roteamento em minhas caixas de linux.

Obrigado por todos os ponteiros, espero que seja apenas um simples parâmetro sysctl para definir ...

Atualização 1

Substitui a sub-rede / 56 por "subnet-2" e a seguinte por "subnet-1".

ip -6 a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
61: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 subnet-1::2/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::216:2eff:fe01:1/64 scope link 
       valid_lft forever preferred_lft forever
63: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 subnet-2::2/56 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe01:1/64 scope link 
       valid_lft forever preferred_lft forever

ip -6 r

unreachable ::/96 dev lo  metric 1024  error -101
unreachable ::ffff:0.0.0.0/96 dev lo  metric 1024  error -101
unreachable 2002:a00::/24 dev lo  metric 1024  error -101
unreachable 2002:7f00::/24 dev lo  metric 1024  error -101
unreachable 2002:a9fe::/32 dev lo  metric 1024  error -101
unreachable 2002:ac10::/28 dev lo  metric 1024  error -101
unreachable 2002:c0a8::/32 dev lo  metric 1024  error -101
unreachable 2002:e000::/19 dev lo  metric 1024  error -101
subnet-1::/64 dev eth0  proto kernel  metric 256 
subnet-2::/56 dev eth1  proto kernel  metric 256 
unreachable 3ffe:ffff::/32 dev lo  metric 1024  error -101
fe80::/64 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth1  proto kernel  metric 256 
default via fe80::1 dev eth0  metric 1024 

O sistema é up2date, exceto o kernel (por exemplo, não é carregado), pois isso exigirá uma reinicialização e eu não tive problemas com o atual. Mas se é um problema conhecido com 3.10.0-123.13.2.el7 eu posso reiniciar para atualizá-lo para 3.10.0-229.14.1.el7.

Atualização 2

tcpdump -i eth0 ip6

mostra pacotes de entrada

Eu adicionei uma regra de firewall para manipular, por exemplo,

*mangle
-A PREROUTING -j NFLOG

para logar em / var / log / messages, mas nada está logado lá!

Atualização 3

    Bridge "br0"
        Port "router.eth0"
            Interface "router.eth0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "eth0"
            Interface "eth0"
    Bridge "br1"
        Port "db01.eth0"
            Interface "db01.eth0"
        Port "mail01.eth0"
            Interface "mail01.eth0"
        Port "br1"
            Interface "br1"
                type: internal
        Port "team1"
            Interface "eth3"
            Interface "eth2"
        Port "router.eth1"
            Interface "router.eth1"

Atualização 4

Eu estraguei tudo, usei o mac errado na interface (longa história - conserte isso agora)

Então agora os pacotes são aceitos e encaminhados, mas a resposta não é enviada para o gateway padrão:

Roteador:

22:09:22.638405 IP6 ping_ip > client_ip: ICMP6, echo request, seq 243, length 64
22:09:22.754936 IP6 router-ll > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
22:09:22.757001 IP6 2a01:4f8::a:b:10 > router-ll: ICMP6, neighbor advertisement, tgt is fe80::1, length 32
22:09:22.757044 IP6 router-ll > ff02::1:ff00:2: ICMP6, neighbor solicitation, who has router-ll, length 32
22:09:23.639651 IP6 ping_ip > client_ip: ICMP6, echo request, seq 244, length 64
22:09:23.756969 IP6 router-ll > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
22:09:23.759007 IP6 router-ll > ff02::1:ff00:2: ICMP6, neighbor solicitation, who has router-ll, length 32
22:09:23.759240 IP6 2a01:4f8::a:b:10 > router-ll: ICMP6, neighbor advertisement, tgt is fe80::1, length 32
22:09:24.640677 IP6 ping_ip > client_ip: ICMP6, echo request, seq 245, length 64

Cliente:

22:11:41.640978 IP6 ping_ip > client_ip: ICMP6, echo request, seq 382, length 64
22:11:41.640998 IP6 client_ip > ping_ip: ICMP6, echo reply, seq 382, length 64
22:11:42.642993 IP6 ping_ip > client_ip: ICMP6, echo request, seq 383, length 64
22:11:42.643013 IP6 client_ip > ping_ip: ICMP6, echo reply, seq 383, length 64

ip -6 neigh:

fe80::216:3eff:fe01:1 dev eth1 lladdr 00:16:3e:01:00:01 router STALE
subnet-2::1:1 dev eth0  FAILED
fe80::216:3eff:fe15:1 dev eth1 lladdr 00:16:3e:15:00:01 DELAY
fe80::216:3eff:fe15:c dev eth1 lladdr 00:16:3e:15:00:0c STALE
fe80::1 dev eth0  FAILED
subnet-2::1:1 dev eth1 lladdr 00:16:3e:15:00:01 REACHABLE
fe80::216:2eff:fe01:1 dev eth0  INCOMPLETE
subnet-2::1:12 dev eth1 lladdr 00:16:3e:15:00:0c STALE
subnet-1::2 dev eth0  FAILED

a entrada com falha de 1: 1 está aqui porque logo tive esse endereço no eth0 para depurar o problema de ping de antes ...

Atualização 5

Assim como acontece ao mudar o mac, eu não mudei o endereço LL. Eu não sabia que esses dois endereços estão vinculados a 100%.

O principal problema foi que o roteador antigo morreu e eu copiei o endereço LL de lá não alterou o mac correspondente - > não funcionou.

Então ... mudou o LL de volta (que foi o erro) e mudou o mac (em 2 passos separados com algumas horas de diferença).

Para qualquer outra pessoa, o MAC L2 e o endereço IPv6 LL precisam ser correspondentes, e eles precisam corresponder ao que um roteador está enviando.

Para depurar use tcpdump -i eth0 ip6 -en , então você pode ver os endereços mac e ll e compará-los com sua interface, se algum deles, e aquele configurado no Hetzner como endereço de roteamento não combina, nada funciona!

Então, novamente, desculpe por alguém que leu isso, eu de alguma forma perdi para explicar que estava em um roteador diferente antes e eu instalei este porque o último deles morreu. Correção óbvia ...

    
por Thomas Rosenstein 29.10.2015 / 21:49

1 resposta

1

Se você estiver enfrentando problemas de roteamento estranhos com pacotes ausentes, siga estas etapas:

ip l e observe os endereços MAC

tcpdump -en -i eth0 ip6 (ou a interface correspondente) e compará-los, se eles combinam tudo é bom

ip -6 a compara os endereços locais do link (local do escopo) ao seu endereço mac (aqui está uma calculadora: link , existem alguns)

se ainda não estiver funcionando, eu acho que o problema está no iptables, use o log tanto quanto possível:)

    
por 30.10.2015 / 08:34