NAT для IPv6 (NPTv6)#

Описание#

NPTv6 - разновидность трансляции адресов (NAT) для протокола IPv6. Данная технология описана в спецификации RFC 6296.

Использование NPTv6 может быть полезным при использовании протокола IPv6 и нескольких подключения к провайдерам. Также NPTv6 обычно используется, когда внешний префикс IPv6 является динамическим, так как исключает необходимость настройки трансляции для внутренних узлов при изменении внешнего префикса.

Настройка#

Пример настройки#

В качестве примера рассмотрим следующую конфигурацию сети:

  • eth0 - внутренний интерфейс (LAN);

  • eth1 - внешний интерфейс (WAN 1) с префиксом 2001:db8:e1::/48 и соответствующей маршрутизацией;

  • eth2 - внешний интерфейс (WAN 2) с префиксом 2001:db8:e2::/48 и соответствующей маршрутизацией.

В данной конфигурации может возникнуть ряд вопросов. Например, почему при обработке трафика осуществляется выбор в пользу префикса 2001:db8:e1::/48 вместо префикса 2001:db8:e2::/48? Или что произойдет при подключении к новому провайдеру с другой маршрутизируемой IPv6 подсетью?

Ответом на эти вопросы может стать назначение хостам уникального адреса ULA и настройка трансляции префиксов в соответствующую подсеть при прохождении трафика от хостов через маршрутизатор.

  • fc00:dead:beef::/48 - внутренняя (LAN) подсеть.

  • 2001:db8:e1::/48 - внешняя (WAN 1) подсеть.

  • 2001:db8:e2::/48 - внешняя (WAN 2) подсеть.

  • fc00:dead:beef::1/48 - адрес интерфейса eth0.

  • 2001:db8:e1::1/48 - адрес интерфейса eth1.

  • 2001:db8:e2::1/48 - адрес интерфейса eth2.

Настройка NPTv6 выполняется в секции nat nptv6.

set nat nptv6 rule 10 source prefix 'fc00:dead:beef::/48'
set nat nptv6 rule 10 outbound-interface 'eth1'
set nat nptv6 rule 10 translation prefix '2001:db8:e1::/48'
set nat nptv6 rule 20 source prefix 'fc00:dead:beef::/48'
set nat nptv6 rule 20 outbound-interface 'eth2'
set nat nptv6 rule 20 translation prefix '2001:db8:e2::/48'

Результатом выполнения команд, представленных выше, является следующие правила межсетевого экрана (ip6tables):

Chain DNPT_HOOK (1 references)
   pkts  bytes  target  prot  opt  in    out  source    destination
   0     0      NETMAP  all        eth1  any  anywhere  2001:db8:e1::/48  to:fc00:dead:beef::/48
   0     0      NETMAP  all        eth2  any  anywhere  2001:db8:e2::/48  to:fc00:dead:beef::/48
   0     0      RETURN  all        any   any  anywhere  anywhere
Chain SNPT_HOOK (1 references)
   pkts  bytes  target  prot  opt  in   out   source               destination
   0     0      NETMAP  all        any  eth1  fc00:dead:beef::/48  anywhere     to:2001:db8:e1::/48
   0     0      NETMAP  all        any  eth2  fc00:dead:beef::/48  anywhere     to:2001:db8:e2::/48
   0     0      RETURN  all        any  any   anywhere             anywhere

Список команд#

Основные настройки#

set nat nptv6 rule <rule>#

Создает правило трансляции <rule> типа NPTv6.

set nat nptv6 rule <rule> description <text>#

Задает описание <text> для правила трансляции <rule> типа NPTv6.

set nat nptv6 rule <rule> outbound-interface <ethN>#

Определяет исходящий интерфейс <ethN> для правила трансляции <rule> типа NPTv6.

set nat nptv6 rule <rule> source prefix <h:h:h:h:h:h:h:h/x>#

Задает префикс <h:h:h:h:h:h:h:h/x> источника для правила трансляции <rule> типа NPTv6.

set nat nptv6 rule <rule> translation prefix <h:h:h:h:h:h:h:h/x>#

Определяет префикс <h:h:h:h:h:h:h:h/x>, который будет использован для трансляции в правиле <rule> типа NPTv6.

set nat nptv6 rule <rule> disable#

Отключает правило фильтрации NPTv6 <rule>. Данная команда не удаляет правило из конфигурации операционной системы. После отключения, правило остается в конфигурации операционной системы.