¬аш вопрос св€зан с хэштэгами # орпоративные сети, #Cisco? —просите в Telegram!

ћерион Ќетворкс

15 минут чтени€

ћы рассказали про принципы работы протокола NAT (Network Address Translation) и теперь настало врем€ рассмотреть его настройку на оборудовании Cisco.


Ќастройка статического NAT (Static NAT)

Ќапомним, что статический NAT представл€ет собой сопоставление внутреннего и внешнего адреса один к одному. ќн позвол€ет внешним устройствам инициировать подключени€ к внутренним с использованием статически назначенного общего адреса.

Ќапример, внутренний веб-сервер может быть сопоставлен с определенным внутренним глобальным адресом, чтобы он был доступен из внешних сетей.

Static NAT

Ќа схеме показана внутренн€€ сеть, содержаща€ веб-сервер с частным адресом IPv4. ћаршрутизатор сконфигурирован со статическим NAT, чтобы позволить устройствам из внешней сети обращатьс€ к веб-серверу.  лиент из внешней сети обращаетс€ к веб-серверу с использованием общедоступного IPv4-адреса. —татический NAT переводит общедоступный IPv4-адрес в частный.

ѕри настройке статических трансл€ций NAT выполн€ютс€ две основные задачи:

  1. —оздание сопоставлени€ между внутренним локальным (inside local) адресом и внутренними глобальными (inside global) адресами. Ќапример, внутренний локальный адрес 192.168.1.5 и внутренний глобальный адрес 208.165.100.5 на схеме настроены как статическа€ NAT трансл€ци€.
  2. ѕосле того как сопоставление настроено, интерфейсы, участвующие в трансл€ции должны быть настроены как внутренние (inside) и наружные (outside) относительно NAT. Ќа схеме интерфейс маршрутизатора Serial 0/0/0 €вл€етс€ внутренним, а Serial 0/1/0 Ц внешним.

ѕакеты, поступающие на внутренний интерфейс маршрутизатора Serial 0/0/0 из настроенного внутреннего локального адреса IPv4 (192.168.1.5), транслируютс€ и затем перенаправл€ютс€ во внешнюю сеть. ѕакеты, поступающие на внешний интерфейс Serial 0/1/0, адресованные настроенному внутреннему глобальному адресу IPv4 (208.165.100.5), перевод€тс€ на внутренний локальный адрес (192.168.1.5) и затем перенаправл€ютс€ внутрь сети.

Ќастройка проходит в несколько шагов:

  1. —оздать статическую трансл€цию между внутренним локальным и внешним глобальным адресами. ƒл€ этого используем команду ip nat inside source static [локальный _IP глобальный_IP]. „тобы удалить трансл€цию нужно ввести команду no ip nat inside source static. ≈сли нам нужно сделать трансл€цию не адреса в адрес, а адреса в адрес интерфейса, то используетс€ команда ip nat inside source static [локальный _IP тип_интерфейса номер_интерфейса].
  2. ќпределим внутренний интерфейс. —начала зайти в режим конфигурации интерфейса, использу€ команду interface[тип номер] и ввести команду ip nat inside
  3. “аким же образом определить внешний интерфейс, использу€ команду ip nat outside

ѕример:

Router(config)# ip nat inside source static 192.168.1.5 208.165.100.5
Router(config)# interface serial0/0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)# interface serial0/1/0
Router(config-if)#ip nat outside

¬ результате трансл€ции будут проходить так:

  1.  лиент хочет открыть соединение с веб-сервером.  лиент отправл€ет пакет на веб-сервер, использу€ общедоступный IPv4-адрес назначени€ 208.165.100.5. Ёто внутренний глобальный адрес веб-сервера.
  2. ѕервый пакет, который роутер получает от клиента на внешнем интерфейсе NAT, заставл€ет его провер€ть свою таблицу NAT. јдрес IPv4 адресата находитс€ в таблице NAT он транслируетс€.
  3. –оутер замен€ет внутренний глобальный адрес назначени€ 208.165.100.5 внутренним локальным 192.168.1.5 и пересылает пакет к веб-серверу.
  4. ¬еб-сервер получает пакет и отвечает клиенту, использу€ внутренний локальный адрес источника 192.168.1.5.
  5. –оутер получает пакет с веб-сервера на свой внутренний интерфейс NAT с адресом источника внутреннего локального адреса веб-сервера, 192.168.1.5. ќн провер€ет NAT таблицу дл€ перевода внутреннего локального адреса во внутренний глобальный, мен€ет адрес источника с 192.168.1.5 на 208.165.100.5 и отправл€ет его из интерфейса Serial 0/1/0 в сторону клиента
  6.  лиент получает пакет, и обмен пакетами продолжаетс€. –оутер выполн€ет предыдущие шаги дл€ каждого пакета.

ѕроверка статического NAT

ѕолезной командой дл€ проверки работы NAT €вл€етс€ команда show ip nat translations. Ёта команда показывает активные трансл€ции NAT. —татические переводы, в отличие от динамических переводов, всегда наход€тс€ в таблице NAT.

Router#show ip nat translations 
Pro 	Inside global 	Inside local 	Outside local 	  Outside global
--- 	208.165.100.5	192.168.1.5	208.165.100.70  208.165.100.70

ƒругой полезной командой €вл€етс€ команда show ip nat statistics. ќна отображает информацию об общем количестве активных переводов, параметрах конфигурации NAT, количестве адресов в пуле и количестве адресов, которые были выделены.

Router#show ip nat statistics
Total active translations: 1 (1 static, 0 dynamic; 0 extended)
Peak translations: 2, occurred 00:00:21 ago
Outside interfaces:
	Serial0/1/0
Inside interfaces:
	Serial0/0/0
Hits:7 Misses:0

„тобы убедитьс€, что трансл€ци€ NAT работает, лучше всего очистить статистику из любых прошлых переводов, использу€ команду clear ip nat statistics перед тестированием.


Ќастройка динамического NAT (Dynamic NAT)

¬ то врем€ пока статический NAT посто€нное сопоставление между внутренним локальным и внутренним глобальным адресом, динамический NAT позвол€ет автоматически сопоставл€ть внутренние локальные и глобальные адреса (которые обычно €вл€ютс€ публичными IP-адресами). ƒинамический NAT использует группу или пул публичных адресов IPv4 дл€ перевода. ƒинамический NAT, как и статический NAT, требует настройки внутреннего и внешнего интерфейсов, участвующих в NAT.

Dynamic NAT

–ассмотрим на примере этой схемы. ћы тут имеем внутреннюю сеть с двум€ подсет€ми 192.168.1.0/24 и 192.168.2.0/24 и пограничным маршрутизатором, на котором настроен динамический NAT с пулом публичных адресов 208.165.100.5 - 208.165.100.15.

ѕул публичных адресов (inside global address pool) доступен дл€ любого устройства во внутренней сети по принципу Ђпервым пришел Ц первым обслужилиї. — динамическим NAT один внутренний адрес преобразуетс€ в один внешний адрес. ѕри таком типе перевода должно быть достаточно адресов в пуле дл€ одновременного предоставлени€ дл€ всех внутренних устройств, которым необходим доступ к внешней сети. ≈сли все адреса в пуле были использованы, то устройство должно ждать доступного адреса, прежде чем оно сможет получить доступ к внешней сети.

–ассмотрим настойку по шагам:

  1. ќпределить пул которые будут использоватьс€ дл€ перевода, использу€ команду ip nat pool [им€ начальный_ip конечный_ip]. Ётот пул адресов обычно представл€ет собой группу публичных общедоступных адресов. јдреса определ€ютс€ указанием начального IP-адреса и конечного IP-адреса пула.  лючевые слова netmask или prefix-length указывают маску.
  2. Ќужно настроить стандартный access-list (ACL), чтобы определить только те адреса, которые будут транслироватьс€. ¬ведем команду access-list [номер_ACL] permit source [wildcard_маска]. ѕро стандартные access-listТы можно прочитать в этой статье (а про расширенные в этой). ACL который разрешает очень много адресов может привести к непредсказуемым результатам, поэтому в конце листа есть команда deny all.
  3. Ќеобходимо прив€зать ACL к пулу, и дл€ этого используетс€ команду ip nat inside source list [номер_ACL] number pool [название_пула]. Ёта конфигураци€ используетс€ маршрутизатором дл€ определени€ того, какие устройства (список) получают адреса (пул).
  4. ќпределить, какие интерфейсы наход€тс€ внутри, по отношению к NAT, то есть любой интерфейс, который подключен к внутренней сети.
  5. ќпределить, какие интерфейсы наход€тс€ снаружи, по отношению к NAT, то есть любой интерфейс, который подключен к внешней сети.

ѕример:

Router(config)# ip nat pool MerionNetworksPool 208.165.100.5 208.165.100.15 netmask 255.255.255.0
Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255
Router(config)#ip nat inside source list 1 pool MerionNetworksPool
Router(config)# interface serial0/0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)# interface serial0/1/0
Router(config-if)#ip nat outside

 ак это будет работать на нашей схеме:

  1.  омпьютеры с адресами 192.168.1.10 и 192.168.2.10 отправл€ют пакеты в сторону сервера по публичному адресу 208.165.100.70
  2. ћаршрутизатор принимает первый пакет от хоста 192.168.1.10. ѕоскольку этот пакет был получен на интерфейсе, сконфигурированном как внутренний интерфейс NAT, маршрутизатор провер€ет конфигурацию NAT, чтобы определить, должен ли этот пакет быть транслирован. ACL разрешает этот пакет, и роутер провер€ет свою таблицу NAT. ѕоскольку дл€ этого IP-адреса нет записи трансл€ции, роутер определ€ет, что исходный адрес 192.168.1.10 должен быть переведен динамически. R2 выбирает доступный глобальный адрес из пула динамических адресов и создает запись перевода, 208.165.200.5. »сходный IPv4-адрес источника (192.168.1.10) €вл€етс€ внутренним локальным адресом, а переведенный адрес €вл€етс€ внутренним глобальным адресом (208.165.200.5) в таблице NAT. ƒл€ второго хоста 192.168.2.10 маршрутизатор повтор€ет эту процедуру, выбира€ следующий доступный глобальный адрес из пула динамических адресов, создает вторую запись перевода - 208.165.200.6.
  3. ѕосле замены внутреннего локального адреса источника в пакетах маршрутизатор перенаправл€ет пакет.
  4. —ервер получает пакет от первого ѕ  и отвечает, использу€ адрес назначени€ 208.165.200.5.  огда сервер получает пакет от второго ѕ , то в ответе в адресе назначени€ будет сто€ть 208.165.200.6.
  5.  огда роутер получает с адресом назначени€ 208.165.200.5, то он выполн€ет поиск в таблице NAT и переводит адрес назначени€ во внутренний локальный адрес 192.168.1.10 и направл€ет в сторону ѕ . “о же самое происходит с пакетом, направленным ко второму ѕ .
  6. ќба ѕ  получают пакеты, и обмен пакетами продолжаетс€. ƒл€ каждого следующего пакета выполн€ютс€ предыдущие шаги.

ѕроверка динамического NAT

ƒл€ проверки также используетс€ команда show ip nat отображает все статические переводы, которые были настроены, и любые динамические переводы, которые были созданы трафиком. ƒобавление ключевого слова verbose отображает дополнительную информацию о каждом переводе, включа€ то, как давно запись была создана и использовалась. ѕо умолчанию данные о переводах истекают через 24 часа, если таймеры не были переконфигурированы с помощью команды ip nat translation timeout [врем€_в_секундах] в режиме глобальной конфигурации.

„тобы очистить динамические записи до истечени€ времени ожидани€, можно использовать команду clear ip nat translation. ѕолезно очищать динамические записи при тестировании конфигурации NAT. Ёту команду можно использовать с ключевыми словами и переменными, чтобы контролировать, какие записи очищаютс€.  онкретные записи можно очистить, чтобы не прерывать активные сеансы. “олько динамические переводы удал€ютс€ из таблицы. —татические переводы не могут быть удалены из таблицы.

“акже можно использовать команду show ip nat statistics котора€ отображает информацию об общем количестве активных переводов, параметрах конфигурации NAT, количестве адресов в пуле и количестве переведенных адресов.

ѕоскольку у нас здесь используютс€ листы контрол€ доступа ACL, то дл€ их проверки можно использовать команду show access-lists.


Ќастройка Port Address Translation (PAT)

PAT (также называемый NAT overload) сохран€ет адреса во внутреннем глобальном пуле адресов, позвол€€ маршрутизатору использовать один внутренний глобальный адрес дл€ многих внутренних локальных адресов. ƒругими словами, один открытый IPv4-адрес может использоватьс€ дл€ сотен и даже тыс€ч внутренних частных IPv4-адресов.  огда несколько внутренних локальных адресов сопоставл€ютс€ с одним внутренним глобальным адресом, номера портов TCP или UDP каждого внутреннего узла различают локальные адреса.

ќбщее количество внутренних адресов, которые могут быть переведены на один внешний адрес, теоретически может составл€ть 65 536 на каждый IP-адрес. ќднако на практике число внутренних адресов, которым может быть назначен один IP-адрес, составл€ет около 4000.

—уществует два способа настройки PAT, в зависимости от того, как провайдер выдел€ет общедоступные IPv4-адреса. ¬ первом случае интернет-провайдер выдел€ет более одного публичного IPv4-адреса организации, а в другом он выдел€ет один общедоступный IPv4-адрес, который требуетс€ дл€ организации дл€ подключени€ к интернет-провайдеру.


Ќастройка PAT дл€ пула публичных IP-адресов

≈сли нам доступно более одного общедоступного IPv4-адреса, то эти адреса могут быть частью пула, который используетс€ PAT. Ёто похоже на динамический NAT, за исключением того, что в этом случае недостаточно общих адресов дл€ взаимного сопоставлени€ внутренних адресов. Ќебольшой пул адресов распредел€етс€ между большим количеством устройств.

ќсновное различие между этой конфигурацией и конфигурацией дл€ динамического NAT, заключаетс€ в том, что используетс€ ключевое слово overload, которое включает PAT.

–ассмотрим настойку PAT дл€ пула адресов по шагам:

  1. ќпределить пул адресов глобальных адресов, которые будут использоватьс€ дл€ PAT трансл€ции, использу€ команду ip nat pool [им€ начальный_ip конечный_ip] netmask [маска] | prefix-length [длина_префикса].
  2. —оздать стандартный access-list, разрешающий адреса, которые должны быть переведены. »спользуетс€ команда access-list [номер_ACL] permit source [wildcard_маска].
  3. ¬ключим PAT, использу€ волшебное слово Overload. ¬водим команду ip nat inside source list [номер_ACL] number pool [название_пула] overload.
  4. ќпредел€ем, какие интерфейсы наход€тс€ внутри, по отношению к NAT, а какие снаружи. »спользуем команду ip nat inside и ip nat outside

ѕример настройки дл€ схемы, что использовалась ранее, только теперь мы будем использовать PAT:

Router(config)# ip nat pool MerionNetworksPool2 208.165.100.5 208.165.100.15 netmask 255.255.255.0
Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255
Router(config)#ip nat inside source list 1 pool MerionNetworksPool2 overload
Router(config)# interface serial0/0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)# interface serial0/1/0
Router(config-if)#ip nat outside

Ќастройка PAT дл€ одного публичного IPv4-адреса
 Port Address Translation (PAT)

Ќа схеме показана топологи€ реализации PAT дл€ трансл€ции одного IP публичного адреса. ¬ этом примере все хосты из сети 192.168.0.0/16 (соответствующие ACL), которые отправл€ют трафик через маршрутизатор, будут переведены на адрес IPv4 208.165.99.225 (адрес IPv4 интерфейса S0 /1/0). “рафик будет идентифицироватьс€ по номерам портов в таблице NAT.

Ќастройка:

  1. —оздать лист access-list разрешающий адреса, которые нужно транслировать Ц access-list [номер_ACL] permit source [wildcard_маска].
  2. Ќастроить преобразование адреса источника в адрес интерфейса, через команду ip nat inside source list [номер_ACL] interface [тип номер] overload
  3. ќпределить внешние и внутренние интерфейсы через команды ip nat inside и ip nat outside.

 онфигураци€ похожа на динамический NAT, за исключением того, что вместо пула адресов мы используем адрес интерфейса с вешним IP адресом. NAT пул не определ€етс€.

ѕример:
Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255
Router(config)# ip nat source list 1 interface serial0/1/0 overload
Router(config)# interface serial0/0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)# interface serial0/1/0
Router(config-if)#ip nat outside

ѕроцесс PAT не измен€тс€ при использовании одного адреса, или пула адресов.

–ассмотрим процесс PAT по шагам:

  1. Ќа схеме два разных ѕ  св€зываютс€ с двум€ разными веб-серверами. ѕервый ѕ  имеет адрес источника 192.168.1.10 и использует TCP порт 1444, а второй ѕ  имеет адрес источника 192.168.2.10 и по совпадению использует то же TCP порт 1444
  2. ѕакет с первого ѕ  сначала достигает роутера и он, использу€ PAT, измен€ет исходный IPv4-адрес на 208.165.99.225 (inside global address). ¬ таблице NAT нет других устройств с портом 1444, поэтому PAT использует тот же номер порта и пакет отправл€етс€ в направлении сервера по 208.165.101.20.
  3. ƒалее пакет со второго компьютера поступает в маршрутизатор, где PAT настроен на использование одного глобального IPv4-адреса дл€ всех переводов - 208.165.99.225. ѕодобно процессу перевода дл€ первого ѕ , PAT измен€ет исход€щий адрес второго ѕ  на внутренний глобальный адрес 208.165.99.225. ќднако второй ѕ  имеет тот же номер порта источника, что и текуща€ запись PAT первого ѕ , поэтому PAT увеличивает номер порта источника до тех пор, пока он не станет уникальным в своей таблице. ¬ этом случае запись исходного порта в таблице NAT и пакет дл€ второго ѕ  получает 1445 порт. ’от€ оба ѕ  используют один и тот же внутренний глобальный адрес 208.165.99.225 и тот же номер порта источника Ц 1444, измененный номер порта дл€ второго ѕ  (1445) делает каждую запись в таблице NAT уникальной. Ёто станет очевидным при отправке пакетов с серверов обратно клиентам.
  4. —ервера отвечают на запросы от компьютеров, и используют исходный порт из прин€того пакета в качестве порта назначени€ и исходный адрес как адрес назначени€. ћожет казатьс€, что они общаютс€ одним и тем же хостом по адресу 208.165.99.225, однако, это не так Ц они имеют разные порты.
  5.  огда пакеты возвращаютс€ на роутер, он находит уникальную запись в своей таблице NAT с использованием адреса назначени€ и порта назначени€ каждого пакета. ¬ случае пакета от первого сервера адрес назначени€ 208.165.99.255 имеет несколько записей, но только одну с портом назначени€ 1444. »спользу€ эту запись в своей таблице, роутер измен€ет адрес IPv4 адресата пакета на 192.168.1.10, не мен€€ порт назначени€. «атем пакет перенаправл€етс€ на первый ѕ 
  6.  огда пакет от второго сервера прилетает на маршрутизатор, он выполн€ет аналогичный перевод. јдрес IPv4 назначени€ 208.165.99.225 имеет несколько записей, однако использу€ порт назначени€ 1445, роутер может однозначно идентифицировать запись трансл€ции. јдрес IPv4 назначени€ будет изменен на 192.168.2.10 и в этом случае порт назначени€ также должен быть изменен до исходного значени€ 1444, которое хранитс€ в таблице NAT. ѕосле этого пакет высылаетс€ на второй ѕ 

ѕроверка Port Address Translation (PAT)

ƒл€ проверки PAT используютс€ такие же команды, что и дл€ обычного NAT.  оманда show ip nat translations отображает переводы IP адресов вместе с портами и команда show ip nat statistics показывает информацию о количестве и типе активных переводов, параметрах конфигурации NAT, количестве адресов в пуле и количестве выделенных адресов.

Router#show ip nat statistics
Total active translations: 2 (0 static, 2 dynamic; 2 extended)
Peak translations: 2, occurred 00:00:07 ago
Outside interfaces:
	Serial0/1/0
Inside interfaces:
	Serial0/0/0
Hits:4 Misses:0
CEF Translated packets: 4, CEF Punted packets:0
Expired translations: 0
Dynamic mappings:
-- Inside Source
[Id: 3] access-list 1 pool MerionNetworksPool2 refcount 2
pool MerionNetworksPool2: netmask 255.255.255.0
	start 208.165.100.5 end 208.165.100.15
	type generic, total addressers 10, allocated 1(10%),
misses 0
Total doors: 0
Appl doors: 0
Normal doors: 0
Queued Packets: 0

“акже дл€ поиска проблем можно использовать дебаг, который запускаетс€ командой debug ip nat, который отображает информацию о каждом пакете, который транслируетс€ маршрутизатором. “акже можно использовать команду debug ip nat detailed, котора€ генерирует описание каждого пакета. Ёта команда также предоставл€ет информацию о различных ошибках, например, таких как неспособность выделить глобальный адрес. ќднако эта команда более требовательна к ресурсам устройства.

Router#debug ip nat
IP NAT debugging is on
Router#
*Aug 24 16:20:331:670: NAT*: s=192.168.1.10->208.165.99.225 d=208.165.101.20 [3730]
*Aug 24 16:20:331:682: NAT*: s=208.165.101.20 d=208.165.99.225 ->192.168.1.10 [4156]
*Aug 24 16:20:331:698: NAT*: s=192.168.1.10->208.165.99.225 d=208.165.101.20 [3731]
*Aug 24 16:20:331:702: NAT*: s=192.168.1.10->208.165.99.225 d=208.165.101.20 [3732]
*Aug 24 16:20:331:710: NAT*: s=208.165.101.20 d=208.165.99.225 ->192.168.1.10 [4157]

¬ выводе используютс€ следующие символы и значени€:

  • * (звездочка) Ц звездочка с NAT указывает, что перевод происходит по пути с быстрым переключением (fast-switched path). ѕервый пакет в разговоре всегда медленнее, остальные пакеты проход€т путь с быстрым переключением.
  • s= - IP адрес источника
  • a.b.c.d ? w.x.y.z - это значение указывает, что адрес источника a.b.c.d переводитс€ на w.x.y.z.
  • d= - IP адрес назначени€
  • [xxxx] - значение в скобках - это идентификационный номер IP.

ѕолезна ли ¬ам эта стать€?


Ёти статьи могут быть вам полезны: