Приклади фаєрвола для IPv6
Прийом портів для IPv6
Щоб відкрити порт 80 для доступу до локального вебсервера за адресою 2001:db8:42::1337
з Інтернету:
config rule option src 'wan' option proto 'tcp' option dest 'lan' option dest_ip '2001:db8:42::1337' option dest_port '80' option family 'ipv6' option target 'ACCEPT'
Щоб відкрити доступ до SSH для всіх IPv6-хостів у локальній мережі:
config rule option src 'wan' option proto 'tcp' option dest 'lan' option dest_port '22' option family 'ipv6' option target 'ACCEPT'
Щоб відкрити всі TCP/UDP-порти в діапазоні 1024–65535 для локальної IPv6-мережі:
config rule option src 'wan' option proto 'tcp udp' option dest 'lan' option dest_port '1024:65535' option family 'ipv6' option target 'ACCEPT'
Переадресація трафіку IPv6-тунелю
Цей приклад стосується лише IPv6-тунелів і не застосовується до нативних dual-stack інтерфейсів.
У наведеному нижче прикладі передбачається, що ваш тунельний інтерфейс налаштовано в окремій зоні.
Альтернативною конфігурацією може бути розміщення вашого тунелю IPv6 на інтерфейсі, наприклад, henet
, який належить до зони wan
.
Це також допустимо, але якщо ви плануєте передавати префікс у LAN і хочете правильно фільтрувати трафік — краще створити окрему зону фаєрвола, як описано нижче.
IPv6-пакети, як правило, не пересилаються з LAN у інтерфейс wan6 і навпаки. Переконайтеся, що параметр `net.ipv6.conf.all.forwarding=1` увімкнений — перевірити можна командою:
sysctl net.ipv6.conf.all.forwarding
(Ймовірно, це вже ввімкнено в нових збірках OpenWrt за замовчуванням.)
Припускаючи, що тунельний інтерфейс має назву wan6
, додайте до файлу /etc/config/firewall наступні секції для створення нової зони:
config zone option name 'wan6' option network 'wan6' option family 'ipv6' option input 'ACCEPT' option output 'ACCEPT' option forward 'REJECT' config forwarding option dest 'wan6' option src 'lan'
Переадресація lan → wan6 дозволяє працювати з IPv6-префіксом у LAN. Перевірити це можна на сайті: https://test-ipv6.com
Опція family
забезпечує, що зона і всі пов’язані з нею записи (rule
, forwarding
, redirect
) додаються лише до ip6tables, але не до iptables.
Відкриття IPv6-портів для клієнтів у LAN
Додавання наведеного нижче правила форвардингу відкриє ВСІ IPv6-порти для всіх хостів у LAN, що потенційно дуже небезпечно.
Замість цього слід створити окремі правила дозволу IPv6 для необхідних сервісів.
Раніше документація зазначала, що це правило необхідне для правильної роботи IPv6-трафіку. Це неправда — правило wan6 → lan не потрібно для всього трафіку.
# Увімкніть це лише якщо ви точно знаєте, що робите, і маєте додаткові правила фаєрвола, які блокують небажаний трафік. config forwarding option dest 'lan' option src 'wan6'
Усі правила фаєрвола для відкриття портів мають ту ж структуру, що й у попередніх прикладах, за винятком того, що значення src
буде wan6
замість wan
.
Динамічна переадресація префіксу
Переадресація трафіку IPv6 з WAN на конкретний хост у LAN, використовуючи GUA-адресу. Налаштуйте статичний суфікс IPv6 і додайте правило форвардингу.
uci add firewall rule uci set firewall.@rule[-1].name="Forward-IPv6" uci set firewall.@rule[-1].src="wan" uci set firewall.@rule[-1].dest="lan" uci set firewall.@rule[-1].dest_ip="::23/-64" uci set firewall.@rule[-1].family="ipv6" uci set firewall.@rule[-1].proto="tcp udp" uci set firewall.@rule[-1].target="ACCEPT" uci commit firewall service firewall restart
Позначення з від’ємною маскою працює лише в фаєрволі OpenWrt:
/-64
еквівалентно/::0000:ffff:ffff:ffff:ffff
/-60
еквівалентно/::000f:ffff:ffff:ffff:ffff
/-56
еквівалентно/::00ff:ffff:ffff:ffff:ffff
/-48
еквівалентно/::ffff:ffff:ffff:ffff:ffff
Переадресація портів IPv6
Переадресація конкретного IPv6-порту з WAN на хост у LAN за NAT66. Налаштуйте статичну DHCPv6-оренду і додайте перенаправлення через ULA-адресу.
uci add firewall redirect uci set firewall.@redirect[-1].name="Forward-SSH-IPv6" uci set firewall.@redirect[-1].src="wan" uci set firewall.@redirect[-1].src_dport="22" uci set firewall.@redirect[-1].dest="lan" uci set firewall.@redirect[-1].dest_ip="fd00:db8:42::1337" uci set firewall.@redirect[-1].dest_port="22" uci set firewall.@redirect[-1].family="ipv6" uci set firewall.@redirect[-1].proto="tcp" uci set firewall.@redirect[-1].target="DNAT" uci commit firewall service firewall restart
Тестування фаєрвола IPv6
Ви можете перевірити стан вашого фаєрвола IPv6 за допомогою наступних інструментів:
Ці сервіси дозволяють перевірити один або кілька портів за IPv6-адресою і побачити, чи відповідає система. У більшості випадків не повинно бути відкритих портів, якщо вони не були явно відкриті через правила фаєрвола.
(Ймовірно, це вже ввімкнено в нових збірках OpenWrt за замовчуванням.)
Припускаючи, що тунельний інтерфейс має назву wan6
, додайте до файлу /etc/config/firewall наступні секції для створення нової зони:
config zone option name 'wan6' option network 'wan6' option family 'ipv6' option input 'ACCEPT' option output 'ACCEPT' option forward 'REJECT' config forwarding option dest 'wan6' option src 'lan'
Переадресація lan → wan6 дозволяє працювати з IPv6-префіксом у LAN. Перевірити це можна на сайті: https://test-ipv6.com
Опція family
забезпечує, що зона і всі пов’язані з нею записи (rule
, forwarding
, redirect
) додаються лише до ip6tables, але не до iptables.
Відкриття IPv6-портів для клієнтів у LAN
Додавання наведеного нижче правила форвардингу відкриє ВСІ IPv6-порти для всіх хостів у LAN, що потенційно дуже небезпечно.
Замість цього слід створити окремі правила дозволу IPv6 для необхідних сервісів.
Раніше документація зазначала, що це правило необхідне для правильної роботи IPv6-трафіку. Це неправда — правило wan6 → lan не потрібно для всього трафіку.
# Увімкніть це лише якщо ви точно знаєте, що робите, і маєте додаткові правила фаєрвола, які блокують небажаний трафік. config forwarding option dest 'lan' option src 'wan6'
Усі правила фаєрвола для відкриття портів мають ту ж структуру, що й у попередніх прикладах, за винятком того, що значення src
буде wan6
замість wan
.
Динамічна переадресація префіксу
Переадресація трафіку IPv6 з WAN на конкретний хост у LAN, використовуючи GUA-адресу. Налаштуйте статичний суфікс IPv6 і додайте правило форвардингу.
uci add firewall rule uci set firewall.@rule[-1].name="Forward-IPv6" uci set firewall.@rule[-1].src="wan" uci set firewall.@rule[-1].dest="lan" uci set firewall.@rule[-1].dest_ip="::23/-64" uci set firewall.@rule[-1].family="ipv6" uci set firewall.@rule[-1].proto="tcp udp" uci set firewall.@rule[-1].target="ACCEPT" uci commit firewall service firewall restart
Позначення з від’ємною маскою працює лише в фаєрволі OpenWrt:
/-64
еквівалентно/::0000:ffff:ffff:ffff:ffff
/-60
еквівалентно/::000f:ffff:ffff:ffff:ffff
/-56
еквівалентно/::00ff:ffff:ffff:ffff:ffff
/-48
еквівалентно/::ffff:ffff:ffff:ffff:ffff