Назад | Перейти на главную страницу

Сбой обнаружения / маршрутизации соседа IPv6 для ядра 3.10

Ко всему этому привели глупые ошибки, читайте Обновление 5


Я пытаюсь настроить маршрутизатор Linux (LXC, 3.10.0-123.el7.x86_64) с IPv6.

Провайдер - Hetzner, у меня 2 подсети, одна / 56 и / 64. Они настроили маршрутизацию на мой адрес LL, а мой шлюз по умолчанию - fe80 :: 1.

Я включил пересылку ipv6 и ipv4 в sysctl.conf:

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

и я настроил IPTables для принятия всего.

я знаю это ICMPv6 это основная утилита, используемая для маршрутизации в IPv6, поэтому она не заблокирована ;-). Я также добавил -A FORWARD -j ACCEPT.

Я настроил второй (:: 2) ip моей подсети / 56 на eth1, а второй (:: 2) из ​​/ 64 на eth0.

eth0 - интерфейс восходящей связи, eth1 - интерфейс локальной сети.


Итак, теперь к основной проблеме.

Внутренние клиенты с адресами ipv6 из / 56 не могут пинговать внешний мир, но пакеты и ответ правильно маршрутизируются до моего маршрутизатора, который просто отбрасывает пакет без каких-либо подсказок.

например ping6 ipv6.google.com приводит к тайм-аутам

но на восходящем канале маршрутизатора я получаю:

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

на клиенте виден только эхо-запрос.

В чем может быть проблема? Существуют ли какие-либо дополнительные настройки, чтобы мой маршрутизатор принимал все, что ему отправляется?

До сих пор я использовал только NAT и никогда не использовал полноценную маршрутизацию на своих Linux-компьютерах.

Спасибо за любые указатели, я надеюсь, что это просто простой параметр sysctl, который нужно установить ...


Обновление 1

Я заменил подсеть / 56 на «подсеть-2», а / 64 на «подсеть-1».

ip -6 а

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 

Система обновлена, за исключением ядра (например, оно не загружено), так как для этого потребуется перезагрузка, и у меня не было проблем с текущим. Но если это известная проблема с 3.10.0-123.13.2.el7, я могу перезапустить, чтобы обновить его до 3.10.0-229.14.1.el7.


Обновление 2

tcpdump -i eth0 ip6

показывает входящие пакеты

Я добавил правило брандмауэра для искажения, например.

*mangle
-A PREROUTING -j NFLOG

войти в / var / log / messages, но там ничего не регистрируется!


Обновление 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"

Обновление 4

Я облажался, в интерфейсе был неправильный макинтош (короче - исправил сейчас)

Итак, теперь пакеты принимаются и пересылаются, но ответ не отправляется на шлюз по умолчанию:

Маршрутизатор:

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

Клиент:

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

неудачная запись для 1: 1 здесь, потому что вскоре у меня был этот адрес на eth0 для отладки проблемы с пингом, которая была раньше ...


Обновление 5

Как и при смене Mac, я не менял адрес LL. Я не знал, что эти 2 адреса связаны на 100%.

Основная проблема заключалась в том, что старый маршрутизатор умер, и я скопировал оттуда LL-адрес, не изменив соответствующий Mac -> это не сработало.

Затем ... вернул LL (что было ошибкой) и сменил Mac (за 2 отдельных шага с интервалом в несколько часов).

Для кого-либо еще MAC-адрес L2 и IPv6 LL-адрес должны соответствовать, и они должны совпадать с тем, что отправляет маршрутизатор.

Для отладки используйте tcpdump -i eth0 ip6 -en тогда вы можете увидеть MAC-адреса и II-адреса и сравнить их с вашим интерфейсом, если они есть, и с тем, который настроен в Hetzner как адрес маршрутизации, не совпадают, ничего не работает!

Итак, извините всех, кто это прочитал, я как-то пропустил объяснение, что раньше он был на другом маршрутизаторе, и я установил этот, потому что последний умер. Очевидное исправление ...

Если у вас возникают странные проблемы с маршрутизацией с отсутствующими пакетами, выполните следующие действия:

ip l и обратите внимание на MAC-адреса

tcpdump -en -i eth0 ip6 (или соответствующий интерфейс) и сравните их, если они совпадают, все хорошо

ip -6 a сравните локальные адреса ссылки (локальная область) с вашим MAC-адресом (вот калькулятор: http://ben.akrin.com/?p=1347 , есть несколько)

если он все еще не работает, я думаю, проблема кроется в iptables, по возможности используйте ведение журнала :)