Вопрос или проблема
У меня есть /56 от моего провайдера, который хорошо работает при статической настройке и маршрутизируется через MikroTik, однако я не хочу, чтобы некоторые устройства, такие как телевизоры и Chromecast, получали IPv6-адреса, и, к сожалению, нет возможности отключить это. Я подумал, что решение может быть в виде виртуальной машины, на которой работает dhcpdv6 с radvd, где я мог бы блокировать выбранные MAC-адреса и настраивать маршрутизацию только в radvd. Однако я не могу заставить это работать должным образом.
С следующим конфигом radvd:
interface vlan.30 {
AdvManagedFlag on;
AdvSendAdvert on;
AdvLinkMTU 1480;
AdvOtherConfigFlag on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 60;
prefix 2a00:1234:100:b02::/64 {
AdvOnLink on;
AdvRouterAddr on;
AdvAutonomous on;
};
};
Любое устройство в сети vlan30 получает ipv6-адреса так же, как при включенном ND на Mikrotik. Когда я установил AdvAutonomous
в off
, я обнаружил, что dhcpdv6 сталкивается с проблемами:
Jan 22 22:03:29 ipv6-dhcpd dhcpd[4848]: Sending Advertise to fe80::f2ef:86ff:fe8b:24ec port 546
Jan 22 22:06:15 ipv6-dhcpd dhcpd[4848]: Solicit message from fe80::22df:b9ff:fe3a:f152 port 546, transaction ID 0xC9B5AA00
Jan 22 22:06:15 ipv6-dhcpd dhcpd[4848]: data: hardware: invalid hlen (181)
Jan 22 22:06:15 ipv6-dhcpd dhcpd[4848]: Picking pool address 2a00:1234:100:b02:e28f:b023:3ea6:751a
Jan 22 22:06:15 ipv6-dhcpd dhcpd[4848]: Advertise NA: address 2a00:1234:100:b02:e28f:b023:3ea6:751a to client with duid 00:03:00:01:20:df:b9:3a:f1:52 iaid = -1187319470 valid for 86400 seconds
Jan 22 22:06:15 ipv6-dhcpd dhcpd[4848]: Sending Advertise to fe80::22df:b9ff:fe3a:f152 port 546
Jan 22 22:06:27 ipv6-dhcpd dhcpd[4848]: Solicit message from fe80::3c6e:d7ff:fefe:8267 port 546, transaction ID 0xE7AF0300
Jan 22 22:06:27 ipv6-dhcpd dhcpd[4848]: data: hardware: invalid hlen (175)
Jan 22 22:06:27 ipv6-dhcpd dhcpd[4848]: Unable to pick client prefix: no IPv6 pools on this shared network
Jan 22 22:06:27 ipv6-dhcpd dhcpd[4848]: Sending Advertise to fe80::3c6e:d7ff:fefe:8267 port 546
и ни одно устройство не может его получить.
Моя текущая dhcpd6.conf:
class "black-hole" {
match substring (hardware, 1, 6);
# deny booting;
ignore booting;
}
subclass "black-hole" 14:AE:85:71:04:66;
subclass "black-hole" 00:11:22:33:44:55;
subclass "black-hole" 14:AE:85:71:05:5D;
allow client-updates;
update-conflict-detection false;
update-optimization false;
authoritative;
default-lease-time 86400;
preferred-lifetime 80000;
allow leasequery;
option dhcp6.name-servers 2a00:1234:100:b01::5;
option dhcp6.preference 255;
option dhcp6.info-refresh-time 21600;
subnet6 2a00:1234:100:b02::/64 {
range6 2a00:1234:0100:0b02:0000:0000:0000:0010 2a00:1234:0100:0b02:ffff:ffff:ffff:ffff;
}
В идеале я бы хотел, чтобы все клиенты получали IP от dhcpd, и маршрутизировали 2a00:1940:800:b02::1 (Mikrotik) из radvd.
.
Ответ или решение
Заголовок: Проблемы маршрутизации DHCPv6 и RADVD с IPv6: Решение и настройка
ТЕОРИЯ:
IPv6 представляет собой следующий шаг в эволюции интернет-протоколов, обеспечивая гораздо больший адресный диапазон по сравнению с IPv4. Одной из ключевых возможностей IPv6 является автоконфигурация адресов с помощью Neighbor Discovery Protocol (NDP) и DHCPv6. Однако конфигурация и управление адресным пространством IPv6 могут стать проблемой, особенно в средах, где требуется определённая степень контроля над выдачей адресов, как в вашем случае. Вашей задачей является обеспечить, чтобы некоторые устройства не получали IPv6-адреса, используя DHCPv6 и RADVD.
ПРИМЕР:
Рассмотрим ваш текущий сценарий. Вы получили /56 префикс от вашего интернет-провайдера, который правильно настроен и маршрутизируется через MikroTik. Однако, есть устройства (такие как телевизоры и Chromecast), для которых вы хотите предотвратить получение IPv6-адресов. Для этого вы хотите использовать виртуальную машину с работающими на ней DHCPv6 и RADVD. Тем не менее, вы сталкиваетесь с проблемами в настройке, которые препятствуют нормальной работе этих служб.
Ваш RADVD файл конфигурации:
interface vlan.30 {
AdvManagedFlag on;
AdvSendAdvert on;
AdvLinkMTU 1480;
AdvOtherConfigFlag on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 60;
prefix 2a00:1234:100:b02::/64 {
AdvOnLink on;
AdvRouterAddr on;
AdvAutonomous on;
};
};
При включении AdvAutonomous
, устройства продолжают получать адреса IPv6 с помощью ND. Отключение AdvAutonomous
приводит к проблемам с получением адресов через DHCPv6.
Текущие сообщения об ошибках DHCPv6 демонстрируют проблемы с неполными транзакциями и конфликтами, связанными с аппаратными адресами:
data: hardware: invalid hlen (181)
Unable to pick client prefix: no IPv6 pools on this shared network
Получается, DHCPv6 сервер открывает транзакции, но не может успешно завершить процесс назначения адресов клиентам.
ПРИМЕНЕНИЕ:
Рассмотрим, как можно устранить эти проблемы и эффективнее настроить ваш DHCPv6 сервер и RADVD.
-
Проблемы с DHCPv6:
- Убедитесь, что длина аппаратного адреса (
hlen
) корректно интерпретируется вашим DHCPv6 сервером. Это может потребовать коррекции в конфигурации или обновления программного обеспечения. - Убедитесь, что указанные диапазоны IPv6-адресов (range6) в конфиге DHCPd располагаются внутри допустимого для вашего префикса пространства. Потенциально проблема в том, что параметр subnet6 и range6 конфликуют с доступными пул-параметрами.
- Параметры
data: hardware: invalid hlen
могут указывать на неправильно сформированные запросы от клиентов. Проверьте настройки ваших сетевых интерфейсов и убедитесь, что все сообщения корректно обрабатываются.
- Убедитесь, что длина аппаратного адреса (
-
Настройка RADVD:
- Если вы используете
AdvManagedFlag
, это указывает устройствам использовать существенно больше информации от DHCP-сервера, и вы можете все же захотеть, чтобыAdvAutonomous
остался включённым для устройств, где это необходимо. - Исправьте трассировку маршрутов таким образом, чтобы при необходимости маршрутизация основалась на маршрутах, отсылаемых RADVD (например, маршрут по-умолчанию к MikroTik).
- Если вы используете
-
Фильтрация по MAC-адресам:
- Продолжайте использовать класс "black-hole" в DHCPd конфигурации для игнорирования запросов от нежелательных устройств.
- Проверьте, действуют ли настройки, как задумано (
ignore booting
), и удостоверьтесь, что этот метод блокирует назначение DHCPv6 адресов для перечисленных MAC-адресов.
-
Тестирование и диагностика:
- Используйте инструменты отслеживания сети (например, tcpdump) для мониторинга трафика NDP и DHCPv6, что будет полезно для обнаружения возможных конфликтов адресов и ошибок в общении протоколов.
- Проверьте логи и внимательно следите за ошибками DHCPv6 и возможными двойными назначениями.
Ваша задача — найти оптимальные настройки, которые локально подойдут для вашего сетевого окружения. Учитывайте специфику каждого устройства, назначение каждой подсети, а также требования безопасности и управления сетью. Эксперименты с параметрами RADVD и DHCPv6 помогут вам в поиске оптимальной конфигурации для надежной сети IPv6.