URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97776
[ Назад ]

Исходное сообщение
"IPv6 SLAAC, два роутера и выбор SRC адреса для default маршрута"

Отправлено Аноним , 03-Сен-21 05:23 
Есть локальная сеть, в ней есть два роутера, оба раздают адреса с помощью SLAAC (Адреса упрощены для читаемости):
- Роутер1, fe80::1111, подсеть 2002:0:0:aaaa::/64, маршрут    ::/0 в интернет
- Роутер2, fe80::2222, подсеть  300:0:0:bbbb::/64, маршрут 200::/7 в yggdrasil

Соответственно клиент в сети получает разных 2 адреса (+1 link-local) и соответствующие мршруты:
$ ip addr show dev wlp1s0
3: wlp1s0:
    inet6  300:0:0:bbbb::cccc/64 scope global dynamic noprefixroute
    inet6 2002:0:0:aaaa::dddd/64 scope global dynamic noprefixroute
    inet6 fe80::0123:4567:9abc:def0/64 scope link noprefixroute

$ ip -6 route
300:0:0:bbbb::/64 dev wlp1s0 proto ra metric 600 pref medium
200::/7 via fe80::2222 dev wlp1s0 proto ra metric 600 pref medium
2002:0:0:aaaa::/64 dev wlp1s0 proto ra metric 600 pref medium
fe80::/64 dev wlp1s0 proto kernel metric 600 pref medium
default via fe80::1111 dev wlp1s0 proto ra metric 20600 pref low

Проблема же заключается в том, для большинства исходящих пакетов по default маршруту SRC адрес выбирается 300:0:0:bbbb::cccc, с которым очевидно ничего работать не будет, а должен бы 2002:0:0:aaaa::dddd. Например:

$ ip route get 2001:4860:4860::8888
2001:4860:4860::8888 from :: via fe80::1111 dev wlp1s0 proto ra src 300:0:0:bbbb::dddd metric 20600 pref low

Т.е. пакет уходит в интернет через роутер1, но с адресом из подсети роутера2 (как я понял).

В виде одноразового костыля подходит ручное и явное указание SRC для default маршрута, но тогда SLAAC перестаёт быть stateless и теряет смысл, да и не на всех устройствах это сделать можно. Собственно вопрос такой: как эту ситуацию разрулить не вмешиваясь в настройки клиентов?


Содержание

Сообщения в этом обсуждении
"IPv6 SLAAC, два роутера и выбор SRC адреса для default маршрута"
Отправлено Ann None , 03-Сен-21 20:41 
> подсеть  300:0:0:bbbb::/64, маршрут 200::/7 в yggdrasil

"IPv6 SLAAC, два роутера и выбор SRC адреса для default маршрута"
Отправлено Аноним , 04-Сен-21 01:11 
>> подсеть  300:0:0:bbbb::/64, маршрут 200::/7 в yggdrasil

Ну да. Что не так?


"IPv6 SLAAC, два роутера и выбор SRC адреса для default маршрута"
Отправлено shadow_alone , 04-Сен-21 21:21 
Тут либо на стороне клиентов разруливать, либо:

убрать с клиентов несколько адресов оставив один, а потом на роутере, в зависимости от маршрута делать NAT per address.



"IPv6 SLAAC, два роутера и выбор SRC адреса для default маршрута"
Отправлено korax , 06-Сен-21 21:44 
Аж целый rfc есть про выбор адресов

https://datatracker.ietf.org/doc/html/rfc3484