17.02.2023
Что такое 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
Флаг, указывающий, игнорируется ли интерфейс, если он не существует при запуске.
Этот флаг полезен для интерфейсов, которые не являются активными, когда RADVD запускается или которые могут быть отключен или включены во время работы RADVD.
Текущие версии RADVD автоматически пытаются повторно использовать интерфейсы.
Включение этой опции также отключает предупреждения в журнале событий, которые связанны с отсутствующим интерфейсом.
Значение по умолчанию: on
Флаг указывает необходимо ли периодически отправлять анонсы маршрутизатора и отвечает на запросы поиска маршрутизатора.
Эта опция больше не должна быть указана первой, но её необходимо установить в 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
Если установлен в on
, то хосты будут использовать протокол администрированного (Stateful) получения адреса в дополнение к любым адресам полученным с использованием автоконфигурации адреса методом Stateless. Использование этого флага описано в RFC 4862.
Значение по умолчанию: off
AdvOtherConfigFlag on|off
Если установлен в on
, то хосты будут использовать протокол административного назначения (Stateful) для получения другой (неадресной) информации. Использование этого флага описано в RFC 4862.
Значение по умолчанию: off
Значение параметра 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
Значение по умолчанию, которое должно быть помещено в поле 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
Если установлено, указывает, что отправляющий маршрутизатор может работать в качестве домашнего агента Mobile IPv6. Если установлено, минимальные ограничения, указанные Mobile IPv6, используются для MinRtrAdvInterval и MaxRtrAdvInterval.
Значение по умолчанию: 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
Если установлено, параметр интервала объявления (определяемый Mobile IPv6) включается в объявления маршрутизатора. Если установлено, минимальные ограничения, указанные Mobile IPv6, используются для MinRtrAdvInterval и MaxRtrAdvInterval.
Интервал объявления основан на настроенном параметре MaxRtrAdvInterval, за исключением случаев, когда он меньше 200 мс. В этом случае объявленный интервал равен (MaxRtrAdvInterval + 20 мс).
Значение по умолчанию: off
Опции prefix
Значение on
указывает, что этот префикс может быть маршрутизирован. Если указано off
, то адреса из этого диапазона могут быть недоступны с этого интерфейса.
Значение по умолчанию: on
Когда установлено, указывает, что этот префикс можно использовать для автоматической настройки адреса (SLAAC), в соответствии с RFC 4862.
Значение по умолчанию: on
Если установлено, указывает, что вместо префикса сети отправляется адрес интерфейса, как того требует 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 часа)
После завершения работы эта опция заставит 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
Если эта опция указана, этот префикс будет объединен с IPv6-адресом интерфейса, указанного по имени. Результирующая длина префикса будет 64.
Если указан этот параметр, этот префикс будет объединен с 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
После завершения работы объявит этот маршрут с нулевым временем жизни. Это приведёт к немедленному удалению маршрута из таблицы маршрутизации конечных узлов.
Значение по умолчанию: 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
После остановки сервиса объявит записи DNSSL с нулевым сроком действия. Это приведёт к немедленному удалению записей DNSSL из списка поиска DNS конечных узлов.
Значение по умолчанию: on
Опции abro
Время в секундах, в течение которого действителен набор информации о пограничном маршрутизаторе. Значение всех нулевых битов принимает значение по умолчанию 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 ваши замечания по данной заметке.
Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово на сервисе Boosty или любой суммой через сервис QIWI.
Время на прочтение
4 мин
Количество просмотров 40K
Давно хотел пощупать что это такое. Много новостей связанных с ipv6 мелькает в интернете. Близится всемирный день запуска, прошлогодний день тестирования я как-то пропустил. Да и вообще за ним будущее и я считаю лучше быть впереди чем потом догонять.
А недавняя статья на хабре окончательно сподвигла меня изучить этот вопрос на собственном опыте.
Дано: домашний сервер-роутер на Ubuntu Server 11.10, стационарный компьютер и нетбук на Kubuntu 11.10 и мобильный телефон на Android. Теоретически всё это умеет ipv6, посмотрим что будет на практике.
Установку и настройку тоннеля через Hurricane Electric можно сделать по множеству инструкций в интернете, например по упомянутой выше статье. В итоге имеем: полностью настроенный сервер имеющий связь как с ipv4 так и ipv6. Устройства в сети получают префикс от radvd и сами настраивают себе адрес, но адрес DNS сервера приходится прописывать ручками и самое главное «но» — все устройства в сети переподключаются раз в 1-2 минуты, что на web-серфинге не сказывается, а вот аську тут же банят за слишком частые попытки подключения. Будем искать решение, а так же разбираться как это всё работает.
Попытаюсь пересказать принцип работы назначения адресов ipv6 человеческим языком:
Адреса link-local, которые хосты ipv6 сети сами себе назначают используя свой MAC адрес и стандартный префикс fe80::, это понятно и нам в данный момент не интересно.
Далее хост используя этот link-local адрес отправляет в сеть запрос в поисках роутера (Router Solicitation) и если роутер там есть то он отвечает (Router Advertisement), а вот тут есть два пути:
1. Если роутер просто роутер, то он присылает в ответ префикс сети. Далее хост сам себе назначает адрес используя этот префикс и свой MAC адрес и добавляет маршрут по умолчанию на этот роутер.
2. А если роутер еще и DHCPv6 то запускается другой процесс назначения адреса, аналогичный DHCPv4.
На это влияет бит Managed Address Configuration Flag (M) в ответе Router Advertisement.
Так же там есть бит Other Stateful Configuration Flag (O) который говорит нужно ли еще другие параметры получать, например маршруты, адрес DNS сервера, адрес NTP и т.д.
Radvd умеет только первый вариант, для всего остального нужен полноценный DHCPv6 сервер. В моей сети уже есть dnsmasq который занимается раздачей адресов и пересылкой dns запросов. Но к сожалению он не умеет ipv6. Или умеет? Самая свежая версия dnsmasq 2.60 умеет и Router Advertisement и DHCPv6. Отлично!
В репозиториях Ubuntu свежей версии нет, только 2.59, качаем из репозитория Debian Unstable. Там добавляется одна новая зависимость, её можно поставить из родного репозитория.
sudo apt-get install libnetfilter-conntrack3
sudo dpkg -i dnsmasq-base_2.60-2_i386.deb
Отключаем radvd, а лучше совсем удаляем.
Читаем man и добавляем в конфиг /etc/dnsmasq.conf следующее:
enable-ra
dhcp-range=2001:470:aaab:aaaa::2, 2001:470:aaab:aaaa:ffff:ffff:ffff:ffff, 64, 12h
Можно конечно не всю /64 подсеть использовать, а поменьше, но пусть резвится, тем более алгоритм генерации адресов другой, более хитрый, а не подряд как в DHCPv4.
Перезапускаем dnsmasq, перезапускаем сеть на клиенте и вуаля, всё получили и адрес и маршрут и адрес DNS равный адресу роутера.
Проверяем, всё работает, aaaa.test-ipv6.com открывается. DNS на роутере доступен по обоим v4 и v6 адресам. Отлично!
Берем в руки телефон с Android. Печаль. IPv6 он не получает. Выясняем что Android не умеет получать адрес от DHCPv6,
совсем
, никакой версии. Читаем man дальше и в конфиг dnsmasq.conf добавляем следующее:
dhcp-range=2001:470:aaab:aaaa::, ra-only, 64, 12h
Теперь наш dnsmasq отвечает двумя Router Advertisement один с установленными флагами M и O, а другой со сброшенными. Android телефон воспринимает только второй, а вот linux клиенты воспринимают оба, и по этому получают по два адреса. Но это не страшно, я считаю. Один из них dnsmasq запоминает (выданный DHCPv6) и можно получать доступ к клиентам по имени. А вот телефон, увы, получит только адрес, DNS он будет знать только с ipv4 именем (192.168.1.1).
Кстати, теоретически существует конфигурация M=0, O=1, так называемая DHCPv6 stateless, когда адреса назначаются автоматически, а другие параметры получаются от DHCPv6, но я не уверен, что dnsmasq так умеет, Android такое примет, да и имена внутри сети не помешают. Есть ещё «костыль» RDNSS (Router Advertisement Options for DNS Configuration). Его умеет radvd на стороне сервера, а на клиентов нужно устанавливать rdnssd, в том числе и на Windows. Для Android всё равно не поможет, он его тоже не умеет.
Отключаем ipv4 и ищем где у нас проблемы с конфигами сервисов. Либо адреса заменяем на имена, либо к ipv4 адресам добавляем ipv6. Со стационарного компьютера все сервисы доступны по ipv6, а вот на нетбуке возникли проблемы. NFS шара монтируется с помощью autofs, а видимо в нем баг и он не разрешает имя сервера по ipv6. Если просто mount делать, то успешно монтируется.
Возвращаем обычный интернет, ибо ipv6 пока скуден, google только поиск, википедия только через sixxs.net, несколько радиостанций, несколько трекеров. Ждем 6 июня.
Настройка фаервола ip6tables ничем не отличается от iptables, только отсутствует -t nat POSTROUTING. Ну и я себе добавил пропуск некоторых ICMPv6 пакетов внутрь, чтоб можно было пинговать снаружи.
Что мы получили? Готовность №1 к World IPv6 Launch домашней сети и бесценный опыт.
From Wikipedia, the free encyclopedia
Developer(s) | Reuben Hawkins, Robin Johnson |
---|---|
Initial release | 1996; 27 years ago |
Stable release |
2.19 |
Preview release |
2.18-rc1 |
Repository |
|
Written in | C |
Platform | Linux and BSD |
Available in | English |
License | BSD-style vanity[1] |
Website | radvd |
The Router Advertisement Daemon (radvd) is an open-source software product that implements link-local advertisements of IPv6 router addresses and IPv6 routing prefixes using the Neighbor Discovery Protocol (NDP) as specified in RFC 2461.[2]
Daemon[edit]
The Router Advertisement Daemon is used by system administrators in stateless autoconfiguration(RFC 4862.[3]) methods of network hosts on Internet Protocol version 6 networks.
When IPv6 hosts configure their network interface controllers, they multicast router solicitation (RS) requests onto the network to discover available routers. Radvd answers requests with router advertisement (RA) messages. In addition, radvd periodically multicasts RA packets to the attached link to update network hosts. The router advertisement messages contain the routing prefix used on the link, the link maximum transmission unit (MTU), and the address of the responsible default router.
Radvd also supports the recursive DNS server (RDNSS) and DNS search list (DNSSL) options for NDP published in RFC 6106.[4]
See also[edit]
- Dynamic Host Configuration Protocol (DHCP)
- Domain Name System (DNS)
- Neighbor Discovery Protocol
- Netsh on Microsoft Windows covers similar functionality
References[edit]
- ^ Pekka Savola on radvd-devel-l mailing list
- ^ RFC 2461, Neighbor Discovery for IP Version 6 (IPv6), T. Narten, E. Nordmark, W. Simpson (December 1998)
- ^ RFC 4862, IPv6 Stateless Address Autoconfiguration, S, Thomson, T. Narten, T. Jinmei (September 2007)
- ^ RFC 6106, IPv6 Router Advertisement Options for DNS Configuration, J. Jeong (Ed.), S. Park, L. Beloeil, S. Madanapalli (November 2010)
External links[edit]
- Radvd web site
- Source code
Summary
Standards: RFC 2462, RFC 2461, RFC 4861
RouterOS has IPv6 Neighbor Discovery and stateless address autoconfiguration support using Router Advertisement Daemon (RADVD).
Node description
Node is a device that implements IPv6. In IPv6 networks nodes are divided into two types:
- Routers — a node that forwards IPv6 packets not explicitly addressed to itself.
- Hosts — any node that is not a router.
Routers and hosts are strictly separated, meaning that routers cannot be hosts and hosts cannot be routers at the same time.
Stateless address autoconfiguration
There are several types of autoconfiguration:
- stateless — address configuration is done by receiving Router Advertisement messages. These messages include stateless address prefixes and require that host is not using stateful address configuration protocol.
- stateful — address configuration is done by using the stateful address configuration protocol (DHCPv6). The stateful protocol is used if RA messages do not include address prefixes.
- both — RA messages include stateless address prefixes and require that hosts use a stateful address configuration protocol.
A highly useful feature of IPv6 is the ability to automatically configure itself without the use of a stateful configuration protocol like DHCP ( See example).
Note: Address autoconfiguration can only be performed on multicast-capable interfaces.
It is called stateless address autoconfiguration since there is no need to manage the state on the router side. It is a very simple, robust, and effective autoconfiguration mechanism.
RouterOS uses RADVD to periodically advertise information about the link to all nodes on the same link. The information is carried by ICMPv6 «router advertisement» packet, and includes the following fields:
- IPv6 subnet prefix
- Default router link-local address
- Other parameters that may be optional: are link MTU, default hop limit, and router lifetime.
Then host catches the advertisement, and configures the global IPv6 address and the default router. Global IPv6 address is generated from the advertised subnet prefix and EUI-64 interface identifier.
Optionally, the host can ask for an advertisement from the router by sending an ICMPv6 «router solicitation» packet. On Linux rtsol utility transmits the router solicitation packet. If you are running a mobile node, you may want to transmit router solicitations periodically.
Address states
When an auto-configuration address is assigned it can be in one of the following states:
tentative
— in this state host verifies that the address is unique. Verification occurs through duplicate address detection.preferred
— at this state address is verified as unique and the node can send and receive unicast traffic to and from a preferred address. The period of time of the preferred state is included in the RA message.deprecated
— the address is still valid, but is not used for new connections.invalid
— node can no longer send or receive unicast traffic. An address enters the invalid state after the valid lifetime expires.
The image above illustrates the relation between states and lifetimes.
Sub-menu: /ipv6 nd
In this submenu, IPv6 Neighbor Discovery (ND) protocol is configured.
Neighbor Discovery (ND) is a set of messages and processes that determine relationships between neighboring nodes. ND, compared to IPv4, replaces Address Resolution Protocol (ARP), Internet Control Message Protocol (ICMP) Router Discovery, and ICMP Redirect and provides additional functionality.
ND is used by hosts to:
- Discover neighboring routers.
- Discover addresses, address prefixes, and other configuration parameters.
ND is used by routers to:
- Advertise their presence, host configuration parameters, and on-link prefixes.
- Inform hosts of a better next-hop address to forward packets to a specific destination.
ND is used by nodes to:
- Both resolve the link-layer address of a neighboring node to which an IPv6 packet is being forwarded and determine when the link-layer address of a neighboring node has changed.
- Determine whether IPv6 packets can be sent to and received from a neighbor.
Properties
Property | Description |
---|---|
advertise-dns (yes | no; Default: no) | Option to redistribute DNS server information using RADVD. You will need a running client-side software with Router Advertisement DNS support to take advantage of the advertised DNS information. Read more >> |
advertise-mac-address (yes | no; Default: yes) | When set, the link-layer address of the outgoing interface is included in the RA. |
comment (string; Default: ) | Descriptive name of an item |
dns-servers (unspecified | ipv6 addresses; Default: unspecified) | Specify a single IPv6 address or list of addresses that will be provided to hosts for DNS server configuration. |
disabled (yes | no; Default: no) | Whether an item is disabled or not. By default, entry is enabled. |
hop-limit (unspecified | integer[0..255]; Default: unspecified) | The default value that should be placed in the Hop Count field of the IP header for outgoing (unicast) IP packets. |
interface (all | string; Default: ) | The interface on which to run neighbor discovery.
|
managed-address-configuration (yes | no; Default: no) | The flag indicates whether hosts should use stateful autoconfiguration (DHCPv6) to obtain addresses. |
mtu (unspecified | integer[0..4294967295]; Default: unspecified) | The MTU option is used in router advertisement messages to insure that all nodes on a link use the same MTU value in those cases where the link MTU is not well known.
|
other-configuration (yes | no; Default: no) | The flag indicates whether hosts should use stateful autoconfiguration to obtain additional information (excluding addresses). |
pref64-prefixes (unspecified | ipv6 prefixes; Default: unspecified) | Specify IPv6 prefix or list of prefixes within /32, /40. /48, /56, /64, or /96 subnet that will be provided to hosts as NAT64 prefixes. |
ra-delay (time; Default: 3s) | The minimum time allowed between sending multicast router advertisements from the interface. |
ra-interval (time[3s..20m50s]-time[4s..30m]; Default: 3m20s-10m) | The min-max interval allowed between sending unsolicited multicast router advertisements from the interface. |
ra-preference (low | medium | high; Default: medium) | Specify the router preference that is communicated to IPv6 hosts through router advertisements. The preference value in the router advertisements enables IPv6 hosts to select a default router to reach a remote destination |
ra-lifetime (none | time; Default: 30m) | |
reachable-time (unspecified | time[0..1h]; Default: unspecified) | The time that a node assumes a neighbor is reachable after having received a reachability confirmation. Used by the Neighbor Unreachability Detection algorithm (see Section 7.3 of RFC 2461) |
retransmit-interval (unspecified | time; Default: unspecified) | The time between retransmitted Neighbor Solicitation messages. Used by address resolution and the Neighbor Unreachability Detection algorithm (see Sections 7.2 and 7.3 of RFC 2461) |
If ND is automatically generated by LTE configuration, then the maximum lifetime for RA will be capped at 1 hour.
Prefix
Sub-menu: /ipv6 nd prefix
Prefix information sent in RA messages used by stateless address auto-configuration.
Note: The autoconfiguration process applies only to hosts and not routers.
Properties
Property | Description |
---|---|
6to4-interface (none | string; Default: ) | If this option is specified, this prefix will be combined with the IPv4 address of the interface name to produce a valid 6to4 prefix. The first 16 bits of this prefix will be replaced by 2002 and the next 32 bits of this prefix will be replaced by the IPv4 address assigned to the interface name at configuration time. The remaining 80 bits of the prefix (including the SLA ID) will be advertised as specified in the configuration file. |
autonomous (yes | no; Default: yes) | When set, indicates that this prefix can be used for autonomous address configuration. Otherwise, prefix information is silently ignored. |
comment (string; Default: ) | Descriptive name of an item |
disabled (yes | no; Default: no) | Whether an item is disabled or not. By default, entry is enabled. |
on-link (yes | no; Default: yes) | When set, indicates that this prefix can be used for on-link determination. When not set the advertisement makes no statement about the on-link or off-link properties of the prefix. For instance, the prefix might be used for address configuration with some of the addresses belonging to the prefix being on-link and others being off-link. |
preferred-lifetime (infinity | time; Default: 1w) | Timeframe (relative to the time the packet is sent) after which generated address becomes «deprecated». Deprecated is used only for already existing connections and is usable until valid lifetime expires. Read more >> |
prefix (ipv6 prefix; Default: ::/64) | A prefix from which stateless address autoconfiguration generates the valid address. |
valid-lifetime (infinity | time; Default: 4w2d) | The length of time (relative to the time the packet is sent) an address remains in the valid state. The valid lifetime must be greater than or equal to the preferred lifetime. Read more >> |
interface (string; Default: ) | Interface name on which stateless auto-configuration will be running. |
Neighbors List
Sub-menu: /ipv6 neighbor
List of all discovered nodes by IPv6 neighbor discovery protocol (neighbor cache).
Read-only Properties
Property | Description |
---|---|
address (ipv6 address) | link-local address of the node. |
comment (string) | |
interface (string) | The interface on which the node was detected. |
mac-address (string) | Mac address of the discovered node. |
router (yes | no) | Whether the discovered node is a router |
status (noarp | incomplete | stale | reachable | delay | probe) | Status of the cached entry:
|
Examples
Stateless autoconfiguration example
[admin@MikroTik] > ipv6 address print Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local # ADDRESS INTERFACE ADVERTISE 0 G 2001:db8::1/64 ether1 yes
As an example, the advertise flag is enabled which indicates that dynamic/ipv6 nd prefix
entry is added.
[admin@MikroTik] > ipv6 nd prefix print Flags: X - disabled, I - invalid, D - dynamic 0 D prefix=2001:db8::/64 interface=ether1 on-link=yes autonomous=yes valid-lifetime=4w2d preferred-lifetime=1w
On a host that is directly attached to the router, we see that an address was added. The address consists of the prefix part (first 64 bits) that takes the prefix from the prefix advertisement, and the host part (last 64 bits) that is automatically generated from the local MAC address:
atis@atis-desktop:~$ ip -6 addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:db8::21a:4dff:fe56:1f4d/64 scope global dynamic valid_lft 2588363sec preferred_lft 601163sec inet6 fe80::21a:4dff:fe56:1f4d/64 scope link valid_lft forever preferred_lft forever
The host has received the 2001:db8::/64 prefix from the router and configured an address with it.
There is also an option to redistribute DNS server information using RADVD:
[admin@MikroTik] > ip dns set server=2001:db8::2 [admin@MikroTik] > ip dns print servers: 2001:db8::2 ... [admin@MikroTik] > ipv6 nd set [f] advertise-dns=yes
You will need a running client-side software with Router Advertisement DNS support to take advantage of the advertised DNS information.
On Ubuntu/Debian Linux distributions you can install rdnssd package which is capable of receiving the advertised DNS addresses.
mrz@bumba:/$ sudo apt-get install rdnssd
mrz@bumba:/$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 2001:db8::2 mrz@bumba:/$ ping6 www.mikrotik.com PING www.mikrotik.com(2a02:610:7501:1000::2) 56 data bytes 64 bytes from 2a02:610:7501:1000::2: icmp_seq=1 ttl=61 time=2.11 ms 64 bytes from 2a02:610:7501:1000::2: icmp_seq=2 ttl=61 time=1.33 ms ^C --- www.mikrotik.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 1.334/1.725/2.117/0.393 ms mrz@bumba:/$
нужно как минимум radvd. Объявления маршрутизатора сообщают устройствам в сети, что такое шлюз по умолчанию и какова конфигурация сети. Тебе это всегда нужно.
реклама маршрутизатора может сказать клиентам, разрешено ли им выбирать свои собственные адреса или нет (автоматическая конфигурация). Если вы позволите это, то вам может не понадобиться DHCP вообще.
, то вы можете добавить DHCP, без сохранения состояния или с отслеживанием состояния. DHCP без отслеживания состояния сообщает конфигурации клиентов параметры, такие как DNS-резольверы и т. д., без предоставления адресов (полезно, если вы разрешаете автоматическую настройку). DHCP с отслеживанием состояния также предоставляет адреса.
Как вам нужно radvd в любом случае это самый простой, возможно в сочетании с DHCP без состояния. Не беспокойтесь о DHCP с отслеживанием состояния, если вам действительно не нужно управлять адресами вручную.