Сайт FSA
17.02.2023

Настройка RADVD

Что такое RADVD? Это программный продукт с открытым исходным кодом, который реализует рассылку объявлений адресов маршрутизатора IPv6 и префиксов маршрутизации IPv6 с использованием протокола Neighbor Discovery Protocol (NDP) в соответствии с RFC-2461. Эта работающая на маршрутизаторах программа обеспечивает конфигурирование адресов IPv6 на хостах без проверки состояния (stateless). Этот демон периодически рассылает сообщения типа Router Advertisement (RA), а также слушает запросы маршрутизаторов от других узлов типа Router Solicitations (RS), на которые отвечает сообщениями Router Advertisement.

Говоря простым языком, именно RADVD отвечает за всю магию IPv6. Именно благодаря этой программе вы сможете превратить свой компьютер или другое устройство в маршрутизатор для сети IPv6. При этом все устройства из этой сети смогут автоматически настроить сетевые адаптеры и получить полноценный доступ в другие сети, в том числе интернет, по протоколу IPv6.

Текст заметки основан man radvd.conf. По большей части - это перевод.

Основным файлом конфигурации является radvd.conf, который обычно расположен в папке /etc. Он должен содержать секции interface с указанием имени интерфейса:

interface name {
    список опций, специфичных для interface
    список анонсируемых префиксов - prefix
    список клиентов (IPv6 адресов) на которые распространяются анонсы - clients
    список анонсируемых маршрутов - route
    список анонсируемых адресов рекурсивных DNS - RDNSS
    список анонсируемых DNS суффиксов - DNSSL
    список анонсируемых пограничных маршрутизаторов - abro
    список IP адресов, от имени которых могут рассылаться анонсы - AdvRASrcAddress
};

Все элементы конфигурации должны завершаться символом точка с запятой.

Анонсируемый префикс задаётся в виде:

prefix префикс/длина {
    список опций
};

Префикс может быть префиксом сети или адресом интерфейса. Адрес интерфейса следует использовать при использовании Mobile IPv6 extensions.

Префикс ::/64 поддерживается в системах, которые имеют системный вызов getifaddrs(). На других системах использование этого префикса вызовет сбой или выход из RADVD. В случае указания этого значения RADVD выбирает все не link-local префиксы, назначенные интерфейсу, и начинает их анонсировать. Это может применяться в сценариях, не являющимися 6to4, где префикс может измениться выше по пути.

Эта опция несовместима с опцией Base6to4Interface. Опция AdvRouterAddr будет всегда включена при использовании этого префикса.

Описание опций этого раздела описаны ниже по тексту. Все опции должны заканчиваться символом точка с запятой.

Десятичные значения разрешены для MinDelayBetweenRAs, MaxRtrAdvInterval и MinRtrAdvInterval. Эти параметры должны использоваться только при использовании Mobile IPv6 extensions.

Анонсируемые маршруты задаются в виде:

route prefix/length {
    список опций
};

Префикс должен указывать на сетевой префикс. Он будет использован для анонса маршрутов, которые будут использовать узлы.

Анонсируемые адреса рекурсивных DSN (Recursive DNS server) задаются в виде:

RDNSS ip [ip] [ip] {
    список опций
};

Список анонсируемых DNS суффиксов (DNS Search List) задаётся в виде:

DNSSL суффикс [суффикс] [суффикс] […] { список опций };

По умолчанию, RADVD рассылает анонсы с помощью группового адреса. При этом каждый узел на канале может их использовать. Вместо этого, можно использовать список клиентов, т.е. адресов IPv6. При этом RADVD начинает рассылать анонсы не на групповые адреса, а только на те, что указаны. Кроме этого, запросы маршрутизаторов также будут отклоняться от адресов, не указанных в списке. Это очень похоже на одноадресную передачу, но при этом производится периодическая рассылка анонсов клиентам по этому списку. Пример использования этой опции приведён ниже.

Список адресов клиентов имеет вид:

clients {
    список IPv6 адресов
};

По умолчанию RADVD использует первый доступный адрес link-local для интерфейса в качестве адреса источника для анонсов. Это можно изменить путём установки списка разрешённых адресов источника, т.е. RADVD будет использовать первый адрес, доступный на интерфейсе, который присутствует в списке разрешённых. Эта опция не может быть использована для подделки адреса источника, но может быть полезна в сочетании, например, с VRRP или другими функциями. Формат списка имеет вид:

AdvRASrcAddress {
    список IPv6 адресов
};

Анонсировать адрес маршрутизатора можно с помощью опции ABRO (Authoritative Border Router Option), которая имеет вид:

abro IPv6-адрес { список опций };

Опции interface

IgnoreIfMissing on|off

Флаг, указывающий, игнорируется ли интерфейс, если он не существует при запуске.

Этот флаг полезен для интерфейсов, которые не являются активными, когда RADVD запускается или которые могут быть отключен или включены во время работы RADVD.

Текущие версии RADVD автоматически пытаются повторно использовать интерфейсы.

Включение этой опции также отключает предупреждения в журнале событий, которые связанны с отсутствующим интерфейсом.

Значение по умолчанию: on

AdvSendAdvert on|off

Флаг указывает необходимо ли периодически отправлять анонсы маршрутизатора и отвечает на запросы поиска маршрутизатора.

Эта опция больше не должна быть указана первой, но её необходимо установить в on, чтобы включить рассылку анонсов через этот интерфейс.

Значение по умолчанию: off

UnicastOnly on|off

Указывает, что интерфейс поддерживает только одноадресную рассылку. Эта опция предотвратит отправку анонсов всем узлам на канале и приведёт к тому, что будут использована одноадресная передача. Этот вариант необходим для не broadcast и сетей с множественным доступом, таких как ISATAP.

Значение по умолчанию: off

AdvRASolicitedUnicast on|off

Указывает на то, что маршрутизаторы будут отвечать на запросы маршрутизатора одноадресной рассылкой в соответствии с рекомендациями RFC 7772. Крупные сети с большим количеством мобильных устройств могут вызывать повышенный заряд батареи, если ответы на запросы маршрутизатора передаются групповой рассылкой.

Опция аналогична опции Cisco IOS ipv6 nd ra solicited unicast

Значение по умолчанию: on

MaxRtrAdvInterval seconds

Максимальное время между не запрошенными групповыми рассылками объявлений маршрутизатора, задаётся в секундах.

Должно быть не менее 4 и не больше 1800 секунд.

Минимум при использовании Mobile IPv6 extensions: 0,07.

Для значений менее 0,2 секунды добавляется 0,02 секунды, как указано в RFC 3775.

Значение по умолчанию: 600 seconds

MinRtrAdvInterval seconds

Минимальное время между не запрошенными групповыми рассылками объявлений маршрутизатора, задаётся в секундах.

Должно быть не менее 3 секунд и не больше 0,75 * MaxRtrAdvInterval.

Минимум при использовании Mobile IPv6 extensions: 0.03.

Значение по умолчанию: 0.33 * MaxRtrAdvInterval

MinDelayBetweenRAs seconds

Минимальное время между запрошенными групповыми рассылками объявлений маршрутизатора, задаётся в секундах.

Это относится к запрошенной групповой рассылке RA. Определяется как постоянная протокола MIN_DELAY_BETWEEN_RAS в RFC 4861. MIPV6 переопределяет этот параметр, чтобы он был минимум 0,03 секунды.

Минимум при использовании Mobile IPv6 extensions: 0.03.

Значение по умолчанию: 3

AdvManagedFlag on|off

Если установлен в on, то хосты будут использовать протокол администрированного (Stateful) получения адреса в дополнение к любым адресам полученным с использованием автоконфигурации адреса методом Stateless. Использование этого флага описано в RFC 4862.

Значение по умолчанию: off

AdvOtherConfigFlag on|off

Если установлен в on, то хосты будут использовать протокол административного назначения (Stateful) для получения другой (неадресной) информации. Использование этого флага описано в RFC 4862.

Значение по умолчанию: off

AdvLinkMTU integer

Значение параметра MTU, которое передаётся в анонсах маршрутизатора. Гарантирует, что все узлы на канале используют одно и то же значение MTU в тех случаях, когда MTU канала неизвестен.

Если указано, то есть не равно 0, значение должно быть не меньше 1280 и не больше максимального MTU, разрешенного для этого канала (например, для Ethernet максимальное значение MTU равно 1500. См. RFC 894).

Значение по умолчанию: 0

AdvReachableTime milliseconds

Время в миллисекундах, в течение которого узел предполагает, что соседний узел достижим после получения подтверждения о достижимости. Используется алгоритмом обнаружения недоступности соседей (см. раздел 7.3 RFC 4861). 0 означает, что значение не указано (данным маршрутизатором).

Не должно быть больше чем 3 600 000 миллисекунд (1 час).

Значение по умолчанию: 0

AdvRetransTimer milliseconds

Время в миллисекундах между повторно переданными сообщениями Neighbor Solicitation. Используется при разрешении адресов и алгоритме обнаружения недоступности соседей (см. разделы 7.2 и 7.3 RFC 4861). 0 означает, что значение не указано (данным маршрутизатором).

Значение по умолчанию: 0

AdvCurHopLimit integer

Значение по умолчанию, которое должно быть помещено в поле Hop Count IP-заголовка для исходящих (одноадресных) IP-пакетов. Значение должно быть установлено в соответствии с текущим размером путей в Интернете. 0 означает, что значение не указано (данным маршрутизатором).

Значение по умолчанию: 64

AdvDefaultLifetime seconds

Время жизни, в течении которого маршрутизатор является маршрутизатором по умолчанию, в секундах. Максимальное значение - 18,2 часа. При указании значения 0 маршрутизатор сообщает, что не является маршрутизатором по умолчанию и не должен отображаться в списке маршрутизаторов по умолчанию. Время жизни относится только к возможности маршрутизатора работать в качестве маршрутизатора по умолчанию; это не относится к информации, содержащейся в других полях или параметрах сообщения. Опции, для которых требуются временные ограничения для их информации, включают свои собственные поля времени жизни.

Должно быть либо 0, либо между MaxRtrAdvInterval и 9000 секунд.

Значение по умолчанию: 3 * MaxRtrAdvInterval (минимально 1 секунда).

AdvDefaultPreference low|medium|high

Уровень предпочтения данного маршрутизатора в качестве маршрутизатора по умолчанию: «низкий» (low), «средний» (medium) или «высокий» (high).

Значение по умолчанию: medium

AdvSourceLLAddress on|off

Если установлено, адрес канального уровня исходящего интерфейса включается в RA.

Значение по умолчанию: on

AdvHomeAgentFlag on|off

Если установлено, указывает, что отправляющий маршрутизатор может работать в качестве домашнего агента Mobile IPv6. Если установлено, минимальные ограничения, указанные Mobile IPv6, используются для MinRtrAdvInterval и MaxRtrAdvInterval.

Значение по умолчанию: off

AdvHomeAgentInfo on|off

Если установлено, параметр информации о домашнем агенте (указанный Mobile IPv6) включается в объявления маршрутизатора. AdvHomeAgentFlag также должен быть установлен при использовании этой опции.

Значение по умолчанию: off

HomeAgentLifetime seconds

Время в секундах (относительно времени отправки пакета), в течение которого маршрутизатор предлагает услуги домашнего агента Mobile IPv6. Значение 0 использовать нельзя. Максимальный срок службы составляет 65520 секунд (18,2 часа). Этот параметр игнорируется, если не установлен AdvHomeAgentInfo.

Если для параметров HomeAgentLifetime и HomeAgentPreference заданы значения по умолчанию, опция информации о домашнем агенте не будет отправлена.

Значение по умолчанию: AdvDefaultLifetime

HomeAgentPreference integer

Предпочтение домашнего агента, отправляющего это объявление маршрутизатора. Значения больше 0 указывают на более предпочтительный домашний агент, значения меньше 0 указывают на менее предпочтительный домашний агент. Этот параметр игнорируется, если не установлен AdvHomeAgentInfo.

Если для параметров HomeAgentLifetime и HomeAgentPreference заданы значения по умолчанию, опция информации о домашнем агенте не будет отправлена.

Значение по умолчанию: 0

AdvMobRtrSupportFlag on|off

Если установлено, домашний агент сообщает, что он поддерживает регистрацию мобильного маршрутизатора (указывается NEMO Basic). AdvHomeAgentInfo также должен быть установлен при использовании этой опции.

Значение по умолчанию: off

AdvIntervalOpt on|off

Если установлено, параметр интервала объявления (определяемый Mobile IPv6) включается в объявления маршрутизатора. Если установлено, минимальные ограничения, указанные Mobile IPv6, используются для MinRtrAdvInterval и MaxRtrAdvInterval.

Интервал объявления основан на настроенном параметре MaxRtrAdvInterval, за исключением случаев, когда он меньше 200 мс. В этом случае объявленный интервал равен (MaxRtrAdvInterval + 20 мс).

Значение по умолчанию: off

Опции prefix

AdvOnLink on|off

Значение on указывает, что этот префикс может быть маршрутизирован. Если указано off, то адреса из этого диапазона могут быть недоступны с этого интерфейса.

Значение по умолчанию: on

AdvAutonomous on|off

Когда установлено, указывает, что этот префикс можно использовать для автоматической настройки адреса (SLAAC), в соответствии с RFC 4862.

Значение по умолчанию: on

AdvRouterAddr on|off

Если установлено, указывает, что вместо префикса сети отправляется адрес интерфейса, как того требует Mobile IPv6. Если установлено, минимальные ограничения, указанные Mobile IPv6, используются для MinRtrAdvInterval и MaxRtrAdvInterval.

Значение по умолчанию: off

AdvValidLifetime seconds|infinity

Продолжительность времени в секундах (относительно времени отправки пакета), в течение которого префикс действителен для целей определения по ссылке. Значение 0xffffffff означает бесконечность (т.е. все биты установлены в 1). Допустимое время жизни также используется в RFC 4862.

Обратите внимание, что клиенты будут игнорировать AdvValidLifetime существующего префикса, если время жизни меньше двух часов, как требуется в RFC 4862, раздел 5.5.3, пункт e).

Примечание: рекомендуемое значение по умолчанию согласно RFC 4861 значительно больше: 30 дней.

Значение по умолчанию: 86400 секунд (1 день)

AdvPreferredLifetime seconds|infinity

Продолжительность времени в секундах (относительно времени отправки пакета), в течение которого адреса, сгенерированные из префикса с помощью автоматической настройки адресов без сохранения состояния, остаются предпочтительными. Значение 0xffffffff означает бесконечность (т.е. все биты установлены в 1). Подробности в RFC 4862.

Примечание: рекомендуемое значение по умолчанию согласно RFC 4861 значительно больше: 7 дней.

Значение по умолчанию: 14400 секунд (4 часа)

DeprecatePrefix on|off

После завершения работы эта опция заставит radvd отказаться от префикса, объявив о нем в RA отключения radvd с нулевым предпочтительным временем жизни и допустимым временем жизни чуть больше 2 часов. Это побудит конечные узлы, использующие этот префикс, немедленно отказаться от любых связанных адресов. Обратите внимание, что эту опцию следует использовать только тогда, когда только один маршрутизатор объявляет префикс, в противном случае конечные узлы будут объявлять устаревшими связанные адреса, несмотря на то, что префикс все еще действителен для предпочтительного использования.

См. RFC 4862, раздел 5.5.3., «Router Advertisement Processing», часть (e).

Значение по умолчанию: off

DecrementLifetimes on|off

Этот параметр заставляет radvd постепенно уменьшать значения предпочтительного и действительного времени жизни префикса. Время жизни уменьшается на количество секунд, прошедших с момента последнего RA. Если radvd получает сигнал SIGUSR1, он сбрасывает значения предпочтительного и допустимого времени жизни обратно к начальным значениям, использованным radvd при его запуске. Если radvd никогда не получит сигнал SIGUSR1, он будет продолжать уменьшать время жизни до тех пор, пока предпочтительное время жизни не достигнет нуля. После окончательного RA с нулевым предпочтительным временем жизни radvd перестанет объявлять префикс. Если затем сигнал SIGUSR1 приводит к сбросу времени жизни, префикс снова появляется в RA.

Этот параметр предназначен для использования в сочетании с клиентом DHCPv6, который использует параметр Identity Association for Prefix Delegation (IA_PD) для получения префикса от делегирующего маршрутизатора для использования запрашивающим маршрутизатором. В этом сценарии префикс(ы) внутри делегированного префикса, объявленные radvd, устаревают параллельно и с той же скоростью, что и делегированный префикс, и истекают примерно в то же время, если срок действия делегированного префикса не истек. расширенный.

См. RFC 3633, «IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6».

Значение по умолчанию: off

Base6Interface name

Если эта опция указана, этот префикс будет объединен с IPv6-адресом интерфейса, указанного по имени. Результирующая длина префикса будет 64.

Base6to4Interface name

Если указан этот параметр, этот префикс будет объединен с IPv4-адресом имени интерфейса для получения допустимого префикса 6to4. Первые 16 бит этого префикса будут заменены на 2002, а следующие 32 бита этого префикса будут заменены адресом IPv4, назначенным имени интерфейса во время настройки. Остальные 80 бит префикса (включая идентификатор SLA) будут объявлены, как указано в файле конфигурации. См. пример в следующем разделе.

Если имя интерфейса недоступно во время настройки, в журнал будет записано предупреждение, и этот префикс будет отключен до тех пор, пока radvd не будет переконфигурирован.

Этот параметр позволяет системам с динамическими IPv4-адресами обновлять объявленные ими префиксы 6to4, просто перезапуская radvd или отправляя сигнал SIGHUP, чтобы заставить radvd перенастроить себя.

Обратите внимание, что префиксы 6to4, полученные из динамически назначаемых IPv4-адресов, должны объявляться со значительно более коротким временем жизни (см. параметры AdvValidLifetime и AdvPreferredLifetime).

Дополнительные сведения о 6to4 указаны в RFC 3056.

Значение по умолчанию: 6to4 не используется

Опции route

AdvRouteLifetime seconds|infinity

Время жизни, связанное с маршрутом, в секундах. Значение 0xffffffff означает бесконечность (т.е. все биты установлены в 1).

Значение по умолчанию: 3 * MaxRtrAdvInterval

AdvRoutePreference low|medium|high

Уровень предпочтения маршрута: «низкий» (low), «средний» (medium) или «высокий» (high).

Значение по умолчанию: medium

RemoveRoute on|off

После завершения работы объявит этот маршрут с нулевым временем жизни. Это приведёт к немедленному удалению маршрута из таблицы маршрутизации конечных узлов.

Значение по умолчанию: on

Опции RDNSS

AdvRDNSSLifetime seconds|infinity
```conf

Максимальная продолжительность использования записей RDNSS для разрешения имен. Значение 0 означает, что сервер имен больше не должен использоваться. Значение, если не 0, должно быть не меньше MaxRtrAdvInterval. Чтобы обеспечить своевременное удаление устаревшей информации RDNSS, это значение не должно превышать 2*MaxRtrAdvInterval.

Значение по умолчанию: 2*MaxRtrAdvInterval

```conf
FlushRDNSS on|off

После остановки сервиса объявит записи RDNSS с нулевым сроком действия. Это приведёт к немедленному удалению адресов RDNSS из списка рекурсивных DNS-серверов конечных узлов.

Значение по умолчанию: on

Опции DNSSL

AdvDNSSLLifetime seconds|infinity;

Максимальная продолжительность использования записей DNSSL для разрешения имен. Значение 0 означает, что суффикс больше не должен использоваться. Значение, если не 0, должно быть не меньше MaxRtrAdvInterval. Чтобы обеспечить своевременное удаление устаревшей информации DNSSL, это значение не должно превышать 2*MaxRtrAdvInterval.

Значение по умолчанию: 2*MaxRtrAdvInterval

FlushDNSSL on|off

После остановки сервиса объявит записи DNSSL с нулевым сроком действия. Это приведёт к немедленному удалению записей DNSSL из списка поиска DNS конечных узлов.

Значение по умолчанию: on

Опции abro

AdvValidLifeTime seconds

Время в секундах, в течение которого действителен набор информации о пограничном маршрутизаторе. Значение всех нулевых битов принимает значение по умолчанию 10 000 (примерно одна неделя).

AdvVersionLow, AdvVersionHigh unsignedinteger

Формируют 32-битный беззнаковый номер версии, соответствующий набору информации, содержащейся в сообщении RA.

Примеры

interface eth0
{
    AdvSendAdvert on;
    prefix 2001:db8:0:1::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
    };
};

Сообщает, что демон анонсов маршрутизатора должен анонсировать (AdvSendAdvert on;) префикс 2001:db8:0:1::, который имеет длину 64 на интерфейсе eth0. Также префикс должен быть использован для получения адресов через SLAAC (AdvAutonomous on;) и доступен для маршрутизации (AdvOnLink on;). Все остальные параметры оставлены со значениями по умолчанию.

Для поддержки обнаружения перемещения мобильных узлов Mobile IPv6 вместо префикса сети следует использовать адрес интерфейса:

interface eth0
{
    AdvSendAdvert on;
    prefix 2001:db8:0:1::4/64
    {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };
};

Для поддержки 6to4 включите параметр Base6to4Interface в каждый раздел префикса. При использовании динамического IPv4-адреса установите небольшое время жизни префикса, чтобы хосты не сохраняли недостижимые префиксы после назначения нового IPv4-адреса. При анонсе на динамическом интерфейсе (например, Bluetooth) укажите возможность игнорирования отсутствия интерфейса.

interface bnep0
{
    IgnoreIfMissing on;
    AdvSendAdvert on;

    # Анонсы рассылаются не реже чем каждые 30 секунд
    MaxRtrAdvInterval 30;

    prefix 0:0:0:5678::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
        Base6to4Interface ppp0;

        # Очень короткое время жизни для динамических адресов
        AdvValidLifetime 300;
        AdvPreferredLifetime 120;
    };
};

При использовании 6to4 будет использован префикс 2002:WWXX:YYZZ:5678::/64, где WW.XX.YY.ZZ — это IPv4-адрес ppp0. (Адреса IPv6 записываются в шестнадцатеричном формате, тогда как адреса IPv4 записываются в десятичном формате, поэтому адрес IPv4 WW.XX.YY.ZZ в префиксе 6to4 будет представлен в шестнадцатеричном формате.)

В этом конкретном случае сценарии конфигурации могут отправлять сигнал HUP на radvd при включении или выключении bnep0 для уведомления о состоянии; в текущих версиях radvd отправка HUP больше не является обязательной при восстановлении связи.

interface eth0
{
    AdvSendAdvert on;
    prefix 2001:db8:0:1::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
    };
    clients
    {
        fe80::21f:16ff:fe06:3aab;
        fe80::21d:72ff:fe96:aaff;
    };
};

Следующая конфигурация будет объявлять префикс только для клиентов с адресами fe80::21f:16ff:fe06:3aab и fe80::21d:72ff:fe96:aaff. Все запросы RA от других клиентов будут отклонены.

Это может пригодиться, если вы желаете развернуть IPv6 только у части клиентов, например, потому что некоторые клиенты не работают или не тестировались.

Поддержка ABRO

interface lowpan0
{
    AdvSendAdvert on;
    UnicastOnly on;
    AdvCurHopLimit 255;
    prefix 2001:0db8:0100:f101::/64 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };
    abro fe80::a200:0:0:1/64 {
        AdvVersionLow 10;
        AdvVersionHigh 2;
        AdvValidLifeTime 2;
    };
};

Обратите внимание, что заметки могут обновляться со временем. Это может быть как исправление найденных ошибок, так и доработка содержания с целью более полного раскрытия темы. Информация об изменениях доступна в репозитории на github. Там же вы можете оставить в Issue ваши замечания по данной заметке.


Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово.