Встроенный NAT EcoRouter Documentation / Встроенный 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). В результате выполнения этой команды будет создана статическая трансляция адрес-в-адрес. Параметр 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 |
Посмотреть состояние таблицы трансляций на 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
NAT port forwarding
Функционал NAT port forwarding подразумевает статический проброс NAT-портов (открытие портов за NAT) для организации удаленного статического доступа до оборудования в локальной сети через NAT. Этот функционал позволяет создавать статические (существующие всегда и работающие в разных направлениях передачи трафика) правила трансляций для конкретных IP-адресов источника и получателя, а также указывать для каких TCP/UDP портов эта трансляция предусмотрена. Для создания подобных правил применяется следующая команда конфигурационного режима:
ip nat source static <tcp/udp> <IP src> <port src> <IP dst> <port dst>
Параметры данной команды описаны в таблице ниже. Все параметры являются обязательными!
Параметр | Описание |
---|---|
tcp или udp | Ключевые слова для указания транспортного протокола |
IP src | IP-адрес источника |
port src | L4 порт источника. Может быть задан диапазон портов, для чего необходимо указать начальное и конечное значения через пробел. Размер диапазона портов источника и получателя должен совпадать (см. пример ниже) |
IP dst | IP-адрес получателя |
port dst | L4 порт получателя. Может быть задан диапазон портов, для чего необходимо указать начальное и конечное значения через пробел. Размер диапазона портов источника и получателя должен совпадать (см. пример ниже) |
Приведем пример использования NAT port forwarding и dynamic PAT.
Конфигурация PAT:
ecorouter(config)#ip nat pool TEST 10.0.0.0-10.0.0.254
ecorouter(config)#ip nat source dynamic inside pool TEST overload interface wan
ecorouter(config)#interface wan
ecorouter(config-if)# ip address 77.0.0.1/30
ecorouter(config-if)# ip nat outside
ecorouter(config)#interface lan
ecorouter(config-if)# ip address 10.0.0.1/24
ecorouter(config-if)# ip nat inside
Задачу организации удаленного доступа до LAN сервера с адресом 10.0.0.2 можно решить при помощи создания статического правила трансляции и определения конкретных TCP/UDP портов. Правило, которое позволит подключаться к LAN-серверу со стороны WAN, при попытке TCP подключения на адрес 77.0.0.1 и L4 порт 2222, будет выглядеть следующим образом:
ecorouter(config)#ip nat source static tcp 10.0.0.2 22 77.0.0.1 2222
Пример правила с указанием диапазона портов:
ip nat source static tcp 10.0.0.1 100 300 7.0.0.1 400 600
Пример конфигурации static source NAT
Конфигурация EcoRouter:
Настройка интерфейсов и портов:
ecorouter(config)#port te0
ecorouter(config-port)#service-instance si0
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(confige)#port te1
ecorouter(config-port)#service-instance si1
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config)#interface in
ecorouter(config-if)#ip address 10.10.10.1/24
ecorouter(config-if)#ip nat inside
ecorouter(config-if)#connect port te0 service-instance si0
ecorouter(config)#interface out
ecorouter(config-if)#ip address 20.20.20.1/24
ecorouter(config-if)#ip nat outside
ecorouter(config-if)#connect port te1 service-instance si1
Задание статической трансляции:
ecorouter(config)#ip nat source static 10.10.10.10 20.20.20.21
Пример конфигурации static source PAT
Конфигурация EcoRouter:
Настройка интерфейсов и портов:
ecorouter(config)#port te0
ecorouter(config-port)#service-instance si0
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(confige)#port te1
ecorouter(config-port)#service-instance si1
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config)#interface in
ecorouter(config-if)#ip address 10.10.10.1/24
ecorouter(config-if)#ip nat inside
ecorouter(config-if)#connect port te0 service-instance si0
ecorouter(config)#interface out
ecorouter(config-if)#ip address 20.20.20.1/24
ecorouter(config-if)#ip nat outside
ecorouter(config-if)#connect port te1 service-instance si1
Создание пула адресов для входящего трафика:
ecorouter(config)#ip nat pool POOL 10.10.10.0-10.10.10.20
Задание правила трансляций:
ecorouter(config)#ip nat source dynamic inside pool POOL overload 20.20.20.21