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

Автоматическое добавление кольцевых маршрутов Linux IPv6

У нас есть маршрутизатор под управлением Debian Lenny, который успешно маршрутизирует IPv6 в течение нескольких месяцев. Наш апстрим сообщил, что наш диапазон адресов меняется, и оба в настоящее время работают, поэтому я подумал, что добавлю второй адрес для тестирования.

ip -6 addr add 2405:3c00:1:13::2/64 dev eth1

# ping6 2405:3c00:1:13:: (our upstream router)
64 bytes from 2405:3c00:1:13::2: icmp_seq=1 ttl=64 time=0.089 ms

Какой?

# ip -6 route get 2405:3c00:1:13::
local 2405:3c00:1:13:: from :: via :: dev lo  table local  proto none  src 2405:3c00:1:13::2  metric 0  mtu 16436 advmss 16376 hoplimit 4294967295
# route -6 | grep 2405
2405:3c00:1:13::/64        ::                    U    256 0     1 eth1
2405:3c00:1:13::/128       ::                    Un   0   1     0 lo
2405:3c00:1:13::2/128      ::                    Un   0   1     0 lo

Мне любопытно, как ...13::/128 маршрут прибыл. Он появляется примерно через две секунды после добавления адреса в интерфейс. radvd (8) не включен в интерфейсе, отключение accept_ra и autoconf без разницы.

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

В любой подсети / 64 адрес :: 0 является произвольным адресом маршрутизатора подсети; он идентифицирует все маршрутизаторы на ссылке. Поскольку у вас включен net.ipv6.conf.all.forwarding, система идентифицирует себя как маршрутизатор и присоединяется к этой группе anycast. К сожалению, такое поведение не документировано и не настраивается, поэтому вы, вероятно, найдете правильное решение.

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

Вы могли заметить, что маршрут отображается только с route -6 и нет ip -6 route. Это потому, что маршрут находится в local стол, а не main. Вы можете увидеть это с ip -6 route list table local. Простое удаление этого маршрута / 128 может помочь.

(В краткосрочной перспективе мы решили это с помощью

# ip -6 addr add 2405:3c00:1:13::/128 dev  eth1
# ip -6 addr delete 2405:3c00:1:13::/128 dev  eth1
# route -6 | grep 3c00
2405:3c00:1:13::/64            ::                         U    256 0     0 eth1
2405:3c00:1:13::2/128          ::                         Un   0   1     0 lo

но это хитрый хак.)