Разрешить входящий трафик IPv6 на хост и порт, если префикс IPv6 является динамическим?

Разрешить входящий трафик IPv6 на хост и порт, если префикс IPv6 является динамическим?

С помощью 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принимает битовую маску для адреса. В отличие от iptablesIPv4, эти биты не обязательно должны быть в начале адреса, поэтому что-то вроде этого должно работать нормально:

ip6tables -A INPUT -d ::1234:56ff:fe78:90ab/::ffff:ffff:ffff:ffff -j ACCEPT

Это заставит ip6tables принимать все пакеты, идущие на адрес IPv6, заканчивающийся на ::1234:56ff:fe78:90ab, независимо от префикса.

Связанный контент