Встроенный NAT

NAT (Network Address Translation) — это механизм, позволяющий маршрутизатору осуществлять трансляцию (подмену) сетевых адресов для транзитного трафика. Наряду с адресами отправителя/получателя могут также подменяться номера TCP или UDP-портов отправителя/получателя. Технология NAT чаще всего используется для предоставления одного публичного IP-адреса множеству локальных пользователей с приватными адресами. А также для обеспечения доступа из LAN в WAN, то есть обеспечения возможности устройствам с приватными адресами отсылать/получать данные из глобальной сети (от устройств с публичными адресами). При использовании NAT топология внутренней сети скрыта и доступ из внешней сети может быть ограничен.

Существует два вида NAT:

  • source NAT (SNAT),
  • destination NAT (DNAT), и три основных концепции трансляции адресов (в рамках функционала EcoRouter):
  • static NAT,
  • dynamic NAT,
  • NAT with overload (PAT).

Source NAT — это наиболее распространённый тип NAT, суть механизма работы которого состоит в подмене IP-адреса отправителя (источника) на пути пакета из внутренней сети во внешнюю и обратной подмене адреса получателя на пути пакета из внешней сети во внутреннюю. Частый сценарий применения: обеспечение доступа из LAN в WAN.

Destination NAT — тип NAT, суть механизма работы которого состоит в подмене IP-адреса получателя (назначения) на пути пакета из внешней сети во внутреннюю и обратной подмене адреса отправителя на пути пакета из внутренней сети во внешнюю. Частый сценарий применения: обеспечение доступа извне к каким-либо сервисам, предоставляемым серверами, находящимися в LAN-сети.

Static NAT — статическая трансляция один-в-один — подмена одного заранее определённого IP-адреса на другой, также заранее определённый. Правило о такой подмене хранится в таблице трансляций неограниченное количество времени или до тех пор, пока сохраняется соответствующая конфигурация маршрутизатора.

Dynamic NAT — неоднозначная трансляция один-в-один, то есть подмена одного из заранее определённых IP-адресов на первый свободный из обозначенного диапазона (пула). Правило о такой подмене хранится в таблице трансляций до тех пор, пока внутренний и внешний хосты продолжают обмен данными. Если в течение некоторого установленного времени трафик по этой трансляции отсутствует, правило удаляется и адрес освобождается, то есть возвращается в пул.

NAT with overload (PAT) — трансляция много-в-один, то есть подмена нескольких заранее определённых внутренних адресов на один и тот же внешний. Правило о такой подмене кроме самих адресов содержит TCP/UDP порт источника, который используется для идентификации трафика на принадлежность тому или иному внутреннему хосту.

Таблица — Описание команд для настройки NAT на EcoRouter

КомандаОписание
ip nat insideКоманда вводится в конфигурационном режиме (config-if). В результате выполнения этой команды интерфейс помечается как “внутренний интерфейс NAT”, это означает, что весь трафик, вошедший на этот интерфейс помечается как “возможно транслируемый”
ip nat outsideКоманда вводится в конфигурационном режиме (config-if). В результате выполнения этой команды интерфейс помечается как “внешний интерфейс NAT”, это означает, что весь трафик, предназначенный для выхода через этот интерфейс и помеченный как “возможно транслируемый” будет подвергаться трансляции
ip nat source static A.B.C.D Q.W.E.R [vrf]Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды будет создана статическая трансляция адрес-в-адрес отправителя в направлении inside-to-outside . Параметр vrf является необязательным и без указания определённого vrf правило будет создано для default vrf
ip nat destination static A.B.C.D Q.W.E.R [hairpin] [vrf]Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды будет создана статическая трансляция адрес-в-адрес получателя в направлении inside-to-outside. Параметр hairpin включает возможность доступа к ресурсу в локальной сети по IP адресу, который используется для доступа к ресурсу из интернета. Параметр vrf является необязательным и без указания определённого vrf правило будет создано для default vrf
ip nat source static network A.B.C.D Q.W.E.R mask [vrf]Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды будет создано сразу несколько статических трансляций адрес-в-адрес для двух равных диапазонов адресов. Количество трансляций определяется параметром mask (маска подсети). Параметр vrf является необязательным и без указания определённого vrf правило будет создано для default vrf
ip nat source static A.B.C.D interface <IF_NAME> [vrf]Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды будет создана статическая трансляция адрес-в-адрес. В качестве inside global адреса для трансляции будет взят адрес, назначенный на указанный в команде интерфейс. Параметр vrf является необязательным и без указания определённого vrf правило будет создано для default vrf
ip nat pool <POOL_NAME> <RANGE>Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды будет создан пул адресов, который можно будет использовать для задания правил динамических трансляций. Диапазон адресов можно задавать через дефис и через запятую: 1.1.1.1-1.1.1.10,2.2.2.2,3.3.3.5-3.3.4.5
ip nat source dynamic inside pool <POOL_NAME> overload A.B.C.D [vrf]Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды начнут создаваться динамические трансляции много-в-один для пакетов из LAN, source IP которых будет попадать в диапазон адресов, определяемый пулом. Время жизни трансляции после прохождения последнего пакета = 300 секунд. В качестве inside global адреса для трансляции будет взят адрес, указанный после ключевого слова overload. Параметр vrf является необязательным и без указания определённого vrf правило будет создано для default vrf
ip nat source dynamic inside pool <POOL_NAME> overload interface <IF_NAME> [vrf]Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды начнут создаваться динамические трансляции много-в-один для пакетов из LAN, source IP которых будет попадать в диапазон адресов, определяемый пулом. Время жизни трансляции после прохождения последнего пакета = 300 секунд. В качестве inside global адреса для трансляции будет взят адрес, назначенный на указанный в команде интерфейс. Параметр vrf является необязательным и без указания определённого vrf правило будет создано для default vrf
ip nat translation (icmp-timeout|tcp-timeout|udp-timeout) <30-14400>Команда вводится в конфигурационном режиме (config). В результате выполнения этой команды можно изменить значения по-умолчанию времени жизни трансляций для разных протоколов. Значения по умолчанию 3600 секунд для TCP и 300 секунд для всех остальных протоколов

Посмотреть состояние таблицы трансляций на EcoRouter можно при помощи команды show ip nat translations:

ecorouter#show ip nat translations
 
Static translations:
 
Source        Translated      VRF
3.3.3.3       4.4.4.4       default
 
PAT translations:
 
   Source         Translated       Destination       IF
 
Time: 5s, Protocol: ICMP, VRF: default
IN:  10.10.10.10       20.20.20.21       20.20.20.20       N/A
OUT: 20.20.20.20       20.20.20.21       20.20.20.21       N/A
 
Time: 3s, Protocol: TCP, VRF: default
IN:  10.10.10.10:171   20.20.20.21:35005 20.20.20.20:35091 N/A
OUT: 20.20.20.20:35091 20.20.20.21:35005 20.20.20.21:35005 N/A