С помощью IPv4 можно было назначить хосту статический локальный IP-адрес в локальной сети и использовать правило брандмауэра/маршрутизатора для переадресации порта на (возможно, динамическом) IP-адресе, выходящем в Интернет и используемом сетью, на порт на этом конкретном хосте, используя статический адрес IPv4 в локальной сети хоста как стабильный способ идентификации хоста в правиле брандмауэра.
Но с IPv6 каждый хост использует реальные маршрутизируемые IP-адреса Интернета, поэтому входящий трафик для хоста будет уже адресован ему, и нет необходимости в NAT. Но вам все равно нужно иметь возможность написать правило брандмауэра, чтобы указать, что входящий трафик на один конкретный хост и порт должен быть разрешен, в то время как трафик на другие хосты или порты блокируется.
Но если префикс, под которым сеть назначает IPv6-адреса, является динамическим, как бы вы ссылались на конкретный хост в правиле брандмауэра, чтобы разрешить трафик на него? Вы не можете просто разрешить трафик на его IPv6-адрес, потому что на следующей неделе у него будет IPv6-адрес с другим префиксом, потому что провайдер назначит сети другой префикс.
Как тогда на самом деле настроить брандмауэр, чтобы разрешить входящий трафик на этот хост на каком-то порту? Похоже, что ip6tables
есть --dest
опция сопоставления по назначению, но это, похоже, позволяет вам ввести только полный адрес, а не, например, суффикс адреса, который вы можете гарантировать, что он останется статическим для хоста. Из страницы руководства:
[!] -s, --source address[/mask][,...]
Source specification. Address can be either a network name, a
hostname, a network IP address (with /mask), or a plain IP ad‐
dress. Hostnames will be resolved once only, before the rule is
submitted to the kernel. Please note that specifying any name
to be resolved with a remote query such as DNS is a really bad
idea. The mask can be either an ipv4 network mask (for ipta‐
bles) or a plain number, specifying the number of 1's at the
left side of the network mask. Thus, an iptables mask of 24 is
equivalent to 255.255.255.0. A "!" argument before the address
specification inverts the sense of the address. The flag --src
is an alias for this option. Multiple addresses can be speci‐
fied, but this will expand to multiple rules (when adding with
-A), or will cause multiple rules to be deleted (with -D).
[!] -d, --destination address[/mask][,...]
Destination specification. See the description of the -s
(source) flag for a detailed description of the syntax. The
flag --dst is an alias for this option.
Есть ли способ справиться с этим ip6tables
? Есть ли какой-то другой уровень ip6tables
, который должен генерировать правила, которые меняются при перенумерации сети, которые все фактически используют? Есть ли какой-то ip6tables
плагин, который может позволить мне сопоставлять трафик, который будет идти на определенный хост, даже если номер сети изменится? Другие брандмауэры ОС обрабатывают это по-другому?
решение1
ip6tables
принимает битовую маску для адреса. В отличие от iptables
IPv4, эти биты не обязательно должны быть в начале адреса, поэтому что-то вроде этого должно работать нормально:
ip6tables -A INPUT -d ::1234:56ff:fe78:90ab/::ffff:ffff:ffff:ffff -j ACCEPT
Это заставит ip6tables принимать все пакеты, идущие на адрес IPv6, заканчивающийся на ::1234:56ff:fe78:90ab
, независимо от префикса.