From 1cdb46384d683a67f21d7d012c9d1a0ac2f63028 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 7 Mar 2026 13:04:02 +0300 Subject: [PATCH] =?utf8?q?=D0=92=D1=8B=D0=B1=D0=BE=D1=80=20=D0=B8=D1=81?= =?utf8?q?=D1=85=D0=BE=D0=B4=D1=8F=D1=89=D0=B5=D0=B3=D0=BE=20IPv6=20=D0=B0?= =?utf8?q?=D0=B4=D1=80=D0=B5=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. -- 2.52.0