Как настроить DMZ IPv6 с iptables без статического распределения?
У меня есть несколько сетей, которые находятся в жилой сети Comcast. Мне нужно получить доступ к этим сетям из различных сред через прокси-сервер SSH на одном из хостов.
(Как это бывает, я использую OpenWRT, поэтому было бы полезно использовать конкретное решение; но мне также, как правило, любопытно, как это сделать с любым решением для пограничной маршрутизации на основе Linux или BSD.)
С IPv4 это относительно просто: поскольку все мои внутренние IP-адреса выделены с помощью DHCP, я могу просто настроить правило пересылки, чтобы переместить порт 22 на внешнем интерфейсе в порт 22 на конкретном IP.
Поскольку все мои адреса IPv6 распределены с помощью SLAAC, у меня нет статического адреса, который я мог бы использовать в ip6tables-land для пересылки данных.
Как я могу обнаружить изменения в распределении префиксов, чтобы я мог установить новые правила iptables? Или есть способ установить правило, которое пересылает конкретному хосту на основе обнаружения его IP-адреса по его MAC-адресу или что-то в этом роде? (Все эти хосты находятся в одном сегменте, поэтому многоадресная рассылка должна работать.)
1 ответ
Выделенные адреса SLAAC являются статическими (за исключением временного адреса), пока префикс является статическим, и маршрутизатор знает префикс.
У вас есть несколько вариантов:
- Вы можете открыть порт 22 для всех адресов, тогда вы сможете использовать ssh для всех хостов.
- Настройте DHCP-клиент на маршрутизаторе для вызова сценария, который изменяет правила ip6tables.
- Используйте совпадение u32 для совпадения по части IP-адреса.
- Если внутренний интерфейс маршрутизатора является программным мостом Linux, используйте ebtables, которые могут совпадать на портах TCP и адресах Ethernet.
Я думаю, что в вашем случае вы можете использовать динамическую переадресацию префиксов, мой пример правила в
/etc/config/firewall
:
config rule
option name 'HTTP-SSH-IPv6-myserver01'
option src 'wan'
option proto 'tcp'
option dest 'lan'
option dest_ip '::2c18:81a2:3422:f690/-64'
option dest_port '22 80 443'
option family 'ipv6'
option target 'ACCEPT'
который создает правила iptables следующим образом:
-A zone_wan_forward -d ::2c18:81a2:3422:f690/::ffff:ffff:ffff:ffff -p tcp -m tcp --dport 80 -m comment --comment "!fw3: HTTP-IPv6-myserver01" -j zone_lan_dest_ACCEPT
Здесь также описан тот же случай: подсеть динамического IPv6 и ip6tables.
Так что это даже проще, чем IPv4 - вам не нужно настраивать статические IP-адреса на вашем DHCP-сервере.
PS: "DMZ" в названии меня смутило при первом чтении вопроса.