У меня странная проблема с ipv6 в Ubuntu 12.04.
Есть два хоста, напрямую подключенных к Интернету. Оба назначили сеть / 64. Они правильно сконфигурированы с конечной точкой / 128 каждый, и один может пинговать другой, и наоборот. Мой план состоял в том, чтобы прекратить подсеть / 112 моего назначенного ipv6 / 64 для интерфейса, чтобы иметь много адресов для использования в apache2 vhosts. Но дело не в этом.
Хост A:
$ ifconfig
eth0 Link encap:Ethernet HWaddr (...)
inet6 addr: fe80::5246:5dff:(...)/64 Scope:Link
inet6 addr: 2a01:xxx:xxx:000A::2/64 Scope:Global
$ route -A inet6
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
2a01:xxx:xx:000A::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 eth0
::/0 fe80::1 UG 1024 0 0 eth0
::/0 :: !n -1 1 5689 lo
::1/128 :: Un 0 1 18 lo
2a01:xxx:xx:000A::2/128 :: Un 0 1 202 lo
2a01:xxx:xx:000A::/112 :: U 1024 0 0 lo
fe80::5246:5dff:fea1:977c/128 :: Un 0 1 86 lo
ff00::/8 :: U 256 0 0 eth0
::/0 :: !n -1 1 5689 lo
Хост B может выполнить ping6 2a01:xxx:xx:000A::[0001-FFFF]
правильно и работает так, как я ожидал. Но на хосте А я не могу пропинговать свои собственные адреса. Если я пытаюсь ping6 2a01:xxx:xxx:000A::n
, я получаю это:
$ ping6 2a01:xxx:xxx:000A::3
PING (...) 56 data bytes
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
Я подозреваю, что таблица маршрутизации, но я долго играл с ней, и даже с помощью Google я не могу получить работа.
Есть идеи? Благодаря.
Проблема, как представляется, заключается в следующем:
2a01:xxx:xx:000A::/112 :: U 1024 0 0 lo
У вас есть маршрут / 112, который более специфичен, чем маршрут / 64:
2a01:xxx:xx:000A::/64 :: U 256 0 0 eth0
И вы хотите, чтобы он доставил через петлевой интерфейс.
Также любопытно, что у вас есть:
2a01:xxx:xx:000A::2/128 :: Un 0 1 202 lo
Можете ли вы убедиться, что все эти адреса находятся на интерфейсе eth0, и что, если вы добавляете маршруты, вы добавляете их в eth0?