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