Table of Contents

Приклади фаєрвола для 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:

Переадресація портів 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: