У меня немного сложная настройка сети (*), где маршрутизатор WAN подключается к вышестоящему провайдеру и предоставляет "внешнюю локальную сеть" (где на самом деле у меня есть некоторые службы)а другой локальный маршрутизатор имеет свою внешнюю ветвь во «внешней ЛВС» и обеспечивает «внутреннюю ЛВС» (к которой подключено большинство узлов, а также есть узел DMZ). Клиенты IPv4 во «внутренней LAN» имеют двойной NAT, и это работает достаточно хорошо для моих нужд (также настройка DMZ хорошо работает с внутренним маршрутизатором, установленным в качестве «DMZ host» для маршрутизатора WAN).
Нет маршрутизатора WAN был модернизирован с подключенным IPv6, а «внешняя локальная сеть» имеет 56-битную сеть - назовем ее 2001: db8: 2: 300 ::
. Хосты во "внешней локальной сети" могут использовать DHCPv6 и получить назначенный им 64-битный сетевой адрес, и это работает.
Я хочу, чтобы внутренний маршрутизатор, на котором запущена dnsmasq для управления сетью, предлагал IPv6 внутренним клиентам. Я выбрал действующую 64-битную сеть внутри 56-битной «внешней LAN» - назовем ее 2001: db8: 2: 333 ::
и настроил ветвь «внутренней LAN» внутреннего маршрутизатора с :: 1
этой сети. Затем я настроил dnsmasq для предложения DHCPv6 во «внутренней локальной сети», используя:
enable-ra
dhcp-range=::2, ::FFFF:FFFF, constructor:vlan4, ra-names, 64, 12h
(на внутреннем маршрутизаторе vlan2
- это «внешняя локальная сеть», а vlan4
- это «внутренняя локальная сеть»)
Теперь я могу отследить подключение клиента «внутренней локальной сети», получить адрес IPv6 и пропинговать внутренний маршрутизатор. Когда я пингую что-либо, кроме этого, например внутренний порт шлюза IPv6 маршрутизатора WAN, я не получаю ответа. Пинги и соединения от самого внутреннего роутера работают хорошо. Я могу отследить ICMP-пакет на внутреннем маршрутизаторе и увидеть, как он выходит из правильного интерфейса, но ответа не получено.
Насколько я понимаю, маршрутизатор WAN не понимает, куда отправлять ответы хостам в 2001: db8: 2: 333 ::
, поскольку он считает, что они должны быть напрямую подключены к его локальной сети, но на самом деле их там нет.
Я думаю, что мне нужно, чтобы внутренний маршрутизатор отправлял объявление маршрутизатора для 2001: db8: 2: 333 ::
к маршрутизатору WAN? Я попытался заставить dnsmasq сделать это, добавив:
interface=vlan2
dhcp-range=2001:db8:2:300:1234:5678:abcd:100,2001:db8:2:300:1234:5678:abcd:400,ra-only,infinite
Но это не сработало, потому что я совершенно не понимаю, что делаю.
Насколько я понимаю, роутер WAN не понимает, куда отправлять ответы на хосты в
2001: db8: 2: 333 ::
, как он думает, что они должны быть напрямую подключены к своей локальной сети, но на самом деле их там нет.
Первый маршрутизатор не знает, существует ли сеть за вторым маршрутизатором или как до нее добраться.
Маршрутизаторы изучают маршруты тремя способами:
Поскольку сеть на другой стороне вашего второго маршрутизатора не подключена напрямую к первому маршрутизатору, первый маршрутизатор должен иметь статический маршрут настроен, который указывает на второй маршрутизатор для сети на другой стороне второго маршрутизатора, или вам нужно будет использовать протокол маршрутизации между двумя маршрутизаторами для обмена информацией о маршрутизации.
Статически настроенные маршруты не масштабируются, но могут быть отлично подходит для небольшой сети, которая не часто меняется. Протоколы маршрутизации полезны для больших сетей, но также подходят для небольших сетей, если вы не хотите беспокоиться о настройке статических маршрутов, и они могут быть полезны для предотвращения ошибок при настройке статических маршрутов.
Ключевым моментом здесь является , сообщающий вышестоящему DHCP-серверу , что вы будете передавать эти адреса устройствам, не подключенным напрямую к маршрутизатору WAN.
Настройте маршрутизатор локальной сети. :
PD
поверх того, что уже делает его клиент dhcpv6, и конструктор:
автоматизацию и прокси dns & ntp. Если вас не интересует , какой конкретный префикс используется, то и dnsmasq:
enable-ra
dhcp-range=::,constructor:wanside,1h
dhcp-option=option6:dns-server,::
dhcp-option=option6:ntp-server,::
Неужели это так? Что ж ...
Много лет назад у меня это сработало с (буквально) черным ящиком WAN, но механизм - хотя и предназначался для такого случая использования и в основном хорошо определен - был и до сих пор пронизан ошибки во всем задействованном программном обеспечении.
Я ничего не знаю о ретрансляции DHCP , этот ответ касается автоматического делегирования префикса .
Internet
|
| /----- directly attached machines
WAN router
| v announces itself as router *AND* leases a /64 *AND* larger PD prefix
|
| ^ requests its own /64 *AND* larger PD prefix *AND* a router address
my Router (and a firewall, but for once it did not interfere)
| v announces itself as router *AND* hands out /64s
|
| ^ request a /64 each *AND* a router address
internal boxes
Делегирование - это вариант, при котором
Подробности
:
, поэтому дальнейшая настройка не требуется. systemd-networkd
(хотя и не через netplan), могут быть настроены для этого и по-прежнему запрашивать другой напрямую арендованный префикс. IA_PD
request может запрашивать конкретный размер префикса или даже конкретный префикс. Начните без этого и включите его только после того, как простой случай сработает для более согласованных сетевых адресов. У меня очень похожая конфигурация, где у меня есть WAN-маршрутизатор, который управляет DMZ и подключенным к нему raspberry pi, на котором работает Raspbian (Debian порт для pi). Raspberry Pi снова управляет двумя подсетями, одна из которых является моей домашней сетью, а другая — моей гостевой сетью.
Маршрутизатор WAN представляет собой фриц-коробку. Он получает новый префикс /56 каждый день рано утром от моего интернет-провайдера. Из этого префикса /56 он использует префикс /64 для управления DMZ и настроен на разрешение делегирования меньших префиксов в сети.
Raspberry Pi запрашивает такой префикс у fritz box на eth0. В результате ему назначается префикс /62, который используется для моей домашней (eth1) и гостевой (eth2) сетей.
# cat /etc/network/interfaces.d/eth0
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp
accept_ra 2
request_prefix 1
autoconf 1
Префикс делегируется моей домашней сети на eth1 и гостевой сети на eth2 с помощью сценария и шагов, описанных здесь: https://wiki.debian.org/IPv6PrefixDelegation (я изменил сценарий для поддержки две подсети для моей домашней и гостевой сетей, но оригинал работает только для одной сети).
Как только префикс делегирован, fritz box знает, куда направить адреса префикса /62, поскольку он знает, какой хост его запросил. И pi также знает, как с этим справиться, поскольку маршруты устанавливаются путем назначения подсети /62, что выполняется сценарием делегирования префикса.
Наконец, я сказал dnsmasq построить объявление маршрутизатора из интерфейса eth1 (и из eth2 для гостевой сети, но я оставлю это для простоты) следующим образом:
enable-ra
dhcp-range=tag:eth1,::,constructor:eth1,ra-names,ra-stateless,slaac,2h
В основном вы можете следовать инструкциям из Дебиан вики. Это в значительной степени ограничивает всю процедуру.Вы можете не указывать конфигурацию radvd, так как вы настроили dnsmasq для объявления маршрутизатора. Примите инструкции к вашему дистрибутиву, если вы не используете Debian. Все они должны работать примерно одинаково :-)
Кроме того, мне пришлось установить время жизни ipv6-лизинга всего на два часа в dnsmasq, так как он объявляет старые префиксы утром только для этого времени и Я заметил проблемы с клиентами моей домашней и гостевой сети иначе, когда меняется префикс.
К сожалению, вы упомянули, что слабый маршрутизатор находится вне вашего контроля. К сожалению, вам, вероятно, придется настроить маршрутизатор WAN, чтобы разрешить делегирование префикса в сети, если он еще не настроен для этого.
Для ящика фрица они предоставили некоторые документы: IPv6-subnet-in-the-FRITZ-Box/
Надеюсь, это поможет. Удачи!