Сегментирование сетей IPv6 с использованием dnsmasq?

У меня немного сложная настройка сети (*), где маршрутизатор 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

Но это не сработало, потому что я совершенно не понимаю, что делаю.

1
задан 24 December 2020 в 23:14
3 ответа

Насколько я понимаю, роутер WAN не понимает, куда отправлять ответы на хосты в 2001: db8: 2: 333 :: , как он думает, что они должны быть напрямую подключены к своей локальной сети, но на самом деле их там нет.

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

Маршрутизаторы изучают маршруты тремя способами:

  1. Сети с прямым подключением
  2. Статически настроенные маршруты
  3. Динамически через протоколы маршрутизации

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


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

0
ответ дан 4 January 2021 в 08:45

Ключевым моментом здесь является , сообщающий вышестоящему DHCP-серверу , что вы будете передавать эти адреса устройствам, не подключенным напрямую к маршрутизатору WAN.

Настройте маршрутизатор локальной сети. :

  1. , чтобы включить флаг PD поверх того, что уже делает его клиент dhcpv6, и
  2. в dnsmasq, включить объявления маршрутизатора, конструктор: автоматизацию и прокси 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

Делегирование - это вариант, при котором

  1. маршрутизатор WAN не нужно знать отдельные адреса, используемые внутренней LAN, и
  2. ваша внутренняя LAN использует как локальные, так и глобально маршрутизируемые адреса, а
  3. после настройки перенастраивает новые адреса по мере необходимости, даже с удаленной / замененной WAN маршрутизатор.

Подробности

  • Вы хотите, чтобы у маршрутизатора LAN был как адрес, который он получает с помощью более распространенных опций DHCPv6 , так и дополнительно , вы хотите, чтобы он запрашивал префикс, который устройство WAN знает для быть делегированным в коробку без прямого присоединения
  • Нет очевидного способа сказать dnsmasq «пересылать адреса DNS и ntp как есть», но вы, вероятно, все равно собирались проксировать его, это то, что делает dnsmasq, верно?
  • dnsmasq разборчив в выборе адресного пространства при использовании конструктора : , поэтому дальнейшая настройка не требуется.
  • dnsmasq только объявляет все еще действующие адреса в RA, таким образом, адрес dnsmasq объявляет в качестве маршрутизатора для своих подчиненных клиентов не имеет значения , пока интерфейсы разделены на уровне 2
  • . Я запустил отдельный dhclient, который уже тогда поддерживал эту опцию ( WIDE Я считаю ), но к настоящему времени большинство клиентов, даже systemd-networkd (хотя и не через netplan), могут быть настроены для этого и по-прежнему запрашивать другой напрямую арендованный префикс.
  • IA_PD request может запрашивать конкретный размер префикса или даже конкретный префикс. Начните без этого и включите его только после того, как простой случай сработает для более согласованных сетевых адресов.
  • Маршрутизатор WAN полностью забыл о делегированном префиксе и связанных маршрутах , как только срок делегации истек. Для дополнительного удовольствия клиент dhcp не помещал истечение срока действия dhcp в срок действия IP-адреса, где это было бы очевидно. Вам необходимо подтвердить, что ваш dhcp-клиент действительно продлевает аренду, включая делегированный префикс - они не обязательно истекают одновременно.
1
ответ дан 4 January 2021 в 08:45

У меня очень похожая конфигурация, где у меня есть 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/

Надеюсь, это поможет. Удачи!

0
ответ дан 21 January 2021 в 07:57

Теги

Похожие вопросы