#bsd #ipv6 

Выбор исходящего IPv6 адреса

https://man.freebsd.org/cgi/man.cgi?query=ip6addrctl
https://datatracker.ietf.org/doc/html/rfc3484
Поразительно сколько лет я вожусь с сетями дома, но только сегодня
задался вопросом как выбрать предпочтительный исходящий IP адрес.
Похоже, что всегда когда это было важно: в прикладном софте имелись
настройки для подобного (типа outgoing-interface в nsd.conf). Но тут
есть программка, где подобного нет. И она подключается не с того адреса
который бы я хотел: с внутреннего адреса для WG туннеля. В принципе то
не проблема, но некрасиво.

Узнал про существование ip6addrctl команды, а также RFC 3484, где
как-раз прям предложены полные алгоритмы выборы предпочитаемых адресов.
ip6addrctl буквально повторяет таблицы из этой RFC. Причём ip6addrctl я
ведь видел уйму раз: выставляю ip6addrctl_policy=ipv6_prefer в /etc/rc.conf
чтобы IPv6 был в предпочтении. Но не задавался вопросом как именно это
делалось. Именно через эту предложенную RFC таблицу.

Пример с :aaaa: и :bbbb: сетями из RFC тоже сработал. Но так как часть
адресов, которые мне нужны, висят не на конкретном сетевом интерфейсе, а
на loopback, то пришлось сделать:
    ifconfig wg_tb inet6 ... deprecated
чтобы он не выбирался для исходящего трафика. Однако далее в
предпочтении выбирался тот самый (0efa2602941eb7a46ad5f0c6fb3d5d8b4944386e)
особый адрес для почты, что тоже не годилось. Исправил это:
    ifconfig lo0 inet6 ... prefer_source

Все эти prefer и deprecated термины тоже берутся из RFC.

    [оставить комментарий]
    комментарий 0:
    From: Sergey Matveev
    Date: 2026-03-07 16:28:38Z
    
    https://datatracker.ietf.org/doc/html/rfc5220
    https://datatracker.ietf.org/doc/html/rfc6724
    
    комментарий 1:
    From: Sergey Matveev
    Date: 2026-03-07 16:55:36Z
    
    https://www.rfc-editor.org/rfc/rfc8043.html