Network Address Translator
Немного истории
Собственно история нужна для того, чтобы ответить на вопрос – А зачем?
Началось все с классовой адресации, которая предоставляла чрезвычайно большие блоки ip адресов, что приводило к быстрой растрате. На смену классовой адресации пришла бесклассовая, которая позволяла делить классовую на более мелкие части. И это помогло. Но время шло, появлялось все больше устройств, которые очень хотели выйти в Интернет и это опять начало приводить к быстрому истощению всего запаса ip адресов. А их ведь не мало – 4294967296 (на самом деле меньше, потому что очень много адресов зарезервировано). Великие умы сетевых технологий придумали “костыль” под названием Network Address Translator. Эта технология позволяет скрывать сотни и даже тысячи устройств под одним ip адресом. Перейдем к подробному изучению.
Самое главное что надо понять – основная работа технологии NAT, это подмена ip адреса источника(source)/получателя(destination) в заголовке.
Виды NAT
Static NAT
Static NAT – позволяет скрывать одно устройство за одним ip адресом. Рисунок 6.1.

Каждый раз, когда ПК1 отправляет данные в Интернет, R1 меняет ip адрес источника (src) и передает дальше. Таким образом устройства в интернете не видят реального ip адрес ПК1. В обратную сторону все работает аналогично, только в этом случае меняется адрес получателя (dst). (Для чего нужен Static NAT понимание приходит не сразу, расслабьтесь на практике все поймете).
Dynamic NAT
Dynamic NAT – позволяет скрывать несколько устройств за счет преднастроенного диапазона “внешних” адресов (часто говорят “пул” адресов, от английского pool). Рисунок 6.2.

Каждый раз когда компьютеры выходят в Интернет, за каждым их них закрепляется один из внешних ip адресов. “Пул” внешних ip адресов задается вручную. Если устройств, которые хотят выйти в Интернет, больше, чем ip адресов в преднастроенном “пуле”, то тут срабатывает правило – “кто успел, тот и съел”. Если все внешние адреса разобраны, то остальным компьютерам (которые хотят выйти в Интернет) придется ждать, пока какой-нибудь из адресов не освободится.
Port Address Translator (PAT)
Port Address Translator (PAT) – позволяет скрывать несколько устройств за один ip адрес. Такая схема работает за счет использования TCP/UDP портов. Рисунок 6.3.

Разберем обозначения на рисунке 6.3. Что такое src и dst надеюсь понятно (но на всякий случай – источник и получатель), далее идет запись типа ip адрес:порт. Порт веб-сервера 80, порт на стороне клиента выбирается случайным образом (подробнее тут). Как вы можете видеть, после прохождения NAT, пакеты имеют один и тот же ip адрес, но разную адресацию портов, с помощью них роутер определяет, кому передать “вернувшийся” трафик.
PAT – самый распространенный вид NAT, такое заключение можно сделать, хотя бы потому что все домашние роутеры используют PAT (D-link, Tp-link, ASUS и т.д.).
Общая информация
Packet Tracer version: 6.2.0
Рабочий файл: скачать
Тип: Теория и практика
Версия файла: 2.1
Уже получили: 49 пользователей
Начальные данные
Все “манипуляции” можно осуществлять при помощи PC0 (либо с других PC в сети).
В данной практической работе сеть уже спланирована, адресация распределена и настроен DHCP.На сетевом оборудовании настроен telnet-сервер, пароль – cisco123, доступ имеется только к устройствам в настраиваемой сети(r1 и sw-1).
Настроенные DNS-записи (сервер tacacsGUI):
- r1.local – 10.34.1.65
- sw-1.local – 10.34.1.67
- tacacsgui.com – 10.34.1.69
Настроенные DNS-записи (сервер DNS, в Internet):
- ciscolearning.ru – 5.5.5.4
- r.somecorp.com – 1.1.1.6
- tacacsgui.com – 1.1.1.3

Цели
- Настроить Static NAT
- Настроить Dynamic NAT
- Настроить Port Address Translator
- Настроить Static PAT
Выполнение
-
Настроить Static NAT
Настраивать NAT прежде всего стоит с указания inside local и inside global – интерфейс, который “смотрит” во внутреннюю сеть и интерфейс, который “смотрит” во внешнюю сеть.
r1(config)# interface FastEthernet0/0.32 r1(config-subif)#ip nat inside r1(config-subif)#interface FastEthernet0/0.34 r1(config-subif)#ip nat inside r1(config-subif)#interface FastEthernet0/1 r1(config-if)#ip nat outside При условии, что Fa0/0.32 и Fa0/0.34 “смотрят” во внутреннюю сеть (10.34.1.64/26 и 10.32.1.0/24) мы устанавливаем команду
ip nat inside
. На интерфейсе Fa0/1, который “смотрит” во внешнюю сеть или Интернет, устанавливаем командуip nat outside
. При помощи этих команд, мы задаем направление по которому будет происходить подмена адреса (address translation). Направление подмены адресов надо указывать не зависимо от типа NAT и для каждого интерфейса, который хочет иметь дело с NAT. Обратите внимание, поскольку, далее во всех примерах, интерфейсы меняться не будут, а будет меняться только тип NAT, то мы устанавливаем NAT направление единожды.Далее Static NAT настраивается очень просто, с помощью команды
ip nat inside source static <ip inside> <ip outside>
.r1(config)# ip nat inside source static 10.34.1.69 1.1.1.3 Указав команду
ip nat inside source static 10.34.1.69 1.1.1.3
, r1 начнет передавать все пакеты приходящие на адрес 1.1.1.3 серверу tacacsGUI (10.34.1.69) и наоборот, у всех пакетов отправленных с сервера tacacsGUI в Интернет, будет адрес источника 1.1.1.3.Прежде чем проверять работу Static NAT, надо пояснить процесс маршрутизации. Между r1 и провайдером (ISP) имеется сеть 1.1.1.0/29, с диапазоном 1.1.1.1-1.1.1.6. Первый адрес из диапазона принадлежит провайдеру (ISP), второй r1, остальные адреса не задействованы. Так вот, после того как мы установили статический NAT для адреса 1.1.1.3, r1 начинает выступать в роли устройства, которому принадлежит этот адрес (1.1.1.3). Теперь проверим, рисунок 6.5.
Рисунок 6.5 Проверка Static NAT с PC_HOME r1# sh ip nat translations Pro Inside global Inside local Outside local Outside global icmp 1.1.1.3:10 10.34.1.69:10 3.3.3.2:10 3.3.3.2:10 //PC_HOME пинговал tacacsgui.com icmp 1.1.1.3:11 10.34.1.69:11 3.3.3.2:11 3.3.3.2:11//PC_HOME пинговал tacacsgui.com icmp 1.1.1.3:12 10.34.1.69:12 3.3.3.2:12 3.3.3.2:12//PC_HOME пинговал tacacsgui.com ... icmp 1.1.1.3:296 10.34.1.69:296 5.5.5.4:296 5.5.5.4:296 icmp 1.1.1.3:9 10.34.1.69:9 3.3.3.2:9 3.3.3.2:9 --- 1.1.1.3 10.34.1.69 --- --- tcp 1.1.1.3:80 10.34.1.69:80 3.3.3.2:1025 3.3.3.2:1025//PC_HOME запрашивал веб-страницу tcp 1.1.1.3:80 10.34.1.69:80 3.3.3.2:1026 3.3.3.2:1026//PC_HOME запрашивал веб-страницу tcp 1.1.1.3:80 10.34.1.69:80 3.3.3.2:1027 3.3.3.2:1027//PC_HOME запрашивал веб-страницу r1# sh ip nat statistics Total translations: 14 (1 static, 13 dynamic, 13 extended) Outside Interfaces: FastEthernet0/1 Inside Interfaces: FastEthernet0/0.32 , FastEthernet0/0.34 Hits: 372 Misses: 509 Expired translations: 333 Dynamic mappings: На рисунке 6.5 показано, что PC_HOME из “Интернета” обращается по адресу tacacsgui.com, который разрешается в адрес 1.1.1.3 и открывается веб-страница с сервера tacacsGUI. Следовательно Static NAT работает правильно.
Теперь разъясним команды, представленные под рисунком.
Первая команда
show ip nat translations
– показывает таблицу “трансляций”, которые установлены на роутере в данный момент. Слово “трансляция” будет появляться здесь очень часто, если вы еще не поняли что это такое, то вот вам краткое определение от автора. Трансляция – это соотношение адресов (из внутренней сети и внешней), которое используется в работе NAT-а, или еще проще – при помощи трансляции определяется какой адрес на какой поменять. В столбце Inside local располагаются локальные адреса, в столбце Inside global располагаются внешние адреса, в Pro – название протокола (tcp, udp, icmp). Обратите внимание, что если в столбце стоит —, это означает “любое значение”. Именно благодаря строке — 1.1.1.3 10.34.1.69 — — в этой таблице, роутер передает все данные предназначенные 1.1.1.3 на адрес 10.34.1.69. Остальные строчки, это трансляции, соответствующие сессиям, которые сделал PC_HOME (их несколько, т.к. несколько раз обновил страницу), они созданы динамически и будут удалены по истечению установленного таймера (по умолчанию 24 часа).Столбцы Outside local и Outside global не будут рассмотрены в данном практическом руководстве, будем считать, что они отображают адреса устройств в “Интернете” (устройства, на которые смотрит внешний интерфейс).Другая команда
show ip nat statistics
– как можно догадаться, предоставляет статистику по настроенному NAT на этом устройстве (в данном случае r1). Total translations – общее количество строк в таблице трансляции. Далее описание интерфейсов, интерфейс который смотрит в Интернет – Outside Interfaces, интерфейс, который смотрит во внутреннюю сеть – Inside Interfaces. Hits – количество пакетов подверженных изменению адреса. Misses – количество пакетов пропущенных без изменений. Expired translations – трансляции удаленные по истечении таймера.Выполните команду
clear ip nat translation *
, чтобы удалить все динамические трансляции (команда выполняется в режиме привилегий, privilege mode). -
Настроить Dynamic NAT
Чтобы настроить такой вид NAT, сперва надо определиться с диапазоном адресов, “которые будут заменены” и с диапазоном адресов “на которые будем заменять”. Для примера мы будем заменять адреса серверов SRV-1 и SRV-2 на адреса 1.1.1.4 и 1.1.1.5.
Диапазон адресов “на которые будем заменять” устанавливается командой
ip nat pool <имя> <первый ip> <последний ip> netmask <маска>
. Значение имя может быть любым. Значение маски здесь используется только для проверки вводимых данных (чтобы вы ни дай Бог не указали номер сети или широковещательный адрес).Диапазон адресов “которые будут заменены” устанавливается при помощи ACL.
Устанавливается Dynamic NAT при помощи команды
ip nat inside source list <ACL (номер или имя)> pool <имя nat pool>
r1(config)# ip access-list standard dynamic-nat-srv r1(config-std-nacl)# permit host 10.32.1.8 r1(config-std-nacl)# permit host 10.32.1.9 r1(config-std-nacl)# exit r1(config)# ip nat pool dynamic-nat-pool 1.1.1.4 1.1.1.5 netmask 255.255.255.248 r1(config)# ip nat inside source list dynamic-nat-srv pool dynamic-nat-pool r1(config)# exit r1# %SYS-5-CONFIG_I: Configured from console by console r1# sh ip nat statistics Total translations: 14 (1 static, 13 dynamic, 13 extended) Outside Interfaces: FastEthernet0/1 Inside Interfaces: FastEthernet0/0.32 , FastEthernet0/0.34 Hits: 1453 Misses: 1824 Expired translations: 1414 Dynamic mappings: -- Inside Source access-list dynamic-nat-srv pool dynamic-nat-pool refCount 0 pool dynamic-nat-pool: netmask 255.255.255.248 start 1.1.1.4 end 1.1.1.5 type generic, total addresses 2 , allocated 0 (0%), misses 0 Dynamic NAT срабатывает только когда устройство из внутренней сети пытается выйти в Интернет, т.е. проходит между двумя NAT интерфейсами из inside в outside. Попробуем выйти в интернет с сервера SRV-1, рисунок 6.6.
Рисунок 6.6 Проверка Dynamic NAT r1# sh ip nat statistics Total translations: 13 (1 static, 12 dynamic, 12 extended) Outside Interfaces: FastEthernet0/1 Inside Interfaces: FastEthernet0/0.32 , FastEthernet0/0.34 Hits: 177 Misses: 582 Expired translations: 156 Dynamic mappings: -- Inside Source access-list dynamic-nat-srv pool dynamic-nat-pool refCount 1 pool dynamic-nat-pool: netmask 255.255.255.248 start 1.1.1.4 end 1.1.1.5 type generic, total addresses 2 , allocated 1 (50%), misses 0 r1# sh ip nat translations Pro Inside global Inside local Outside local Outside global icmp 1.1.1.3:153 10.34.1.69:153 5.5.5.4:153 5.5.5.4:153 ... icmp 1.1.1.3:162 10.34.1.69:162 5.5.5.4:162 5.5.5.4:162 --- 1.1.1.3 10.34.1.69 --- --- udp 1.1.1.3:1027 10.34.1.69:1027 4.4.4.2:53 4.4.4.2:53 tcp 1.1.1.4:1025 10.32.1.8:1025 5.5.5.4:80 5.5.5.4:80 //SRV-1 зашел на ciscolearning.ru Как видите, установилось сессия (трансляция) между SRV-1 и сервером CiscoLearning. Если сейчас попробовать выйти в интернет с сервера SRV-2, то ему выделится следующий ip адрес – 1.1.1.5. Это должно быть понятно и не интересно. Гораздо интересней будет, если мы очистим динамическую трансляцию и попробуем выйти в интернет через SRV-2, рисунок 6.7.
r1# clear ip nat translation * Рисунок 6.7 Проверка Dynamic NAT r1# sh ip nat translations Pro Inside global Inside local Outside local Outside global icmp 1.1.1.3:255 10.34.1.69:255 5.5.5.4:255 5.5.5.4:255 ... icmp 1.1.1.3:263 10.34.1.69:263 5.5.5.4:263 5.5.5.4:263 icmp 1.1.1.3:264 10.34.1.69:264 5.5.5.4:264 5.5.5.4:264 --- 1.1.1.3 10.34.1.69 --- --- tcp 1.1.1.4:1025 10.32.1.9:1025 5.5.5.4:80 5.5.5.4:80 //SRV-2 обратился на сервер CiscoLearning Супер! После всех этих махинаций серверу SRV-2 выделили ip адрес 1.1.1.4, такой же какой был недавно у SRV-1. В этом и заключается динамика.
-
Настроить Port Address Translator
Вот мы и подобрались к самому популярному виду NAT – Port Address Translator (некоторые производители обзывают его Hide NAT, а Cisco называет такой вид NAT – Overload).
Чтобы лучше понять, надо попробовать настроить.
Перед настройкой зададимся целью: настроить PAT для подсетей 10.32.1.0/24 и 10.34.1.64/26, которые будет скрыты за адресом 1.1.1.2 (адрес интерфейса r1).
Установим диапазон адресов, который будет скрыт. Это делается как и в случае с Dynamic NAT при помощи ACL.
Далее мы устанавливаем PAT командой
ip nat inside source list <ACL (номер или имя)> interface <интерфейс> overload
.r1(config)# access-list 17 permit 10.34.1.64 0.0.0.63 r1(config)#access-list 17 permit 10.32.1.0 0.0.0.255 r1(config)#ip nat inside source list 17 interface fa 0/1 overload Все. Теперь любое устройство в сети 10.32.1.0/24 и 10.34.1.64/26 будет выходить в Интернет используя адрес 1.1.1.2 (кроме тех, для которых мы прописали статическую и динамическую трансляции). Давайте проверим, на нескольких устройствах зайдем на страницу ciscolearning.ru (автор выполнил проверку с устройств PC3 и PC1, адресация может немного отличаться), а после изучим таблицу трансляций.
r1# sh ip nat translations Pro Inside global Inside local Outside local Outside global icmp 1.1.1.3:1357 10.34.1.69:1357 5.5.5.4:1357 5.5.5.4:1357 ... icmp 1.1.1.3:1366 10.34.1.69:1366 5.5.5.4:1366 5.5.5.4:1366 --- 1.1.1.3 10.34.1.69 --- --- tcp 1.1.1.2:1027 10.34.1.71:1027 5.5.5.4:80 5.5.5.4:80 //проверка с PC3 tcp 1.1.1.2:1024 10.34.1.71:1028 5.5.5.4:80 5.5.5.4:80//проверка с PC3, обновил страницу - появилась новая трансляция tcp 1.1.1.2:1028 10.32.1.10:1028 5.5.5.4:80 5.5.5.4:80//проверка с PC1 tcp 1.1.1.3:1025 10.34.1.69:1025 5.5.5.4:80 5.5.5.4:80//проверка с сервера tacacsGUI tcp 1.1.1.4:1025 10.32.1.9:1025 5.5.5.4:80 5.5.5.4:80 tcp 1.1.1.4:1026 10.32.1.9:1026 5.5.5.4:80 5.5.5.4:80 tcp 1.1.1.4:1027 10.32.1.9:1027 5.5.5.4:80 5.5.5.4:80Ничего сложного, но надо пояснить несколько моментов. Обратите внимание, что PC3 и PC1 использовали одинаковые порты 1028. Первым в Интернет выходил PC1, поэтому роутер поставил такой же порт к ip адресу 1.1.1.2. Далее попытался пройти PC3, он использовал такие же порты, как и PC1. R0 не может установить порты 1025 и 1026, т.к. они используются в другой трансляции, поэтому он просто берет свободный (не используемый) порт – 1024. С сервером tacacsGUI (10.34.1.69) все тоже самое, как и с PC1. Но вот теперь самое интересное, что сервер tacacsGUI находится в сети 10.34.1.64/26, но почему-то выходит в интернет под адресом 1.1.1.3. Дело в том, что для этого сервера есть правило Static NAT, а оно имеет больший приоритет чем PAT (Overload).
При использовании NAT/PAT устройство, выходя в интернет, создает трансляцию, она состоит из ip адресов и портов. Роутер ее запоминает и просматривает каждые вернувшиеся пакеты (и сегменты) на соответствие с текущими трансляциями. Когда найдено точное совпадение ip адресов и портов, роутер меняет адреса в заголовке пакета (если надо меняет и порты в сегменте) и передает дальше, согласно настроенной маршрутизации.
-
Настроить Static PAT
Static PAT – это хорошая замена Static NAT, т.к. делает статическую трансляцию только на определенный порт.
Наша цель сделать Static PAT, используя адрес 1.1.1.6: для telnet к sw-1, по tcp порту 777; для веб-сервера tacacsGUI по tcp порту 8080 (мы могли бы использовать стандартные порты, но это было бы не так весело и интересно).
Static PAT устанавливается при помощи команды
ip nat inside source static <протокол> <внутренний ip> <внутренний порт> <внешний ip> <внешний порт>
.r1(config)# ip nat inside source static tcp ? //знаком ? узнаем, что еще следует дописать A.B.C.D Inside local IP addressr1(config)# ip nat inside source static tcp 10.34.1.67 ? <1-65535> Local UDP/TCP portr1(config)# ip nat inside source static tcp 10.34.1.67 23 ? A.B.C.D Inside global IP addressr1(config)# ip nat inside source static tcp 10.34.1.67 23 1.1.1.6 ? <1-65535> Global UDP/TCP portr1(config)# ip nat inside source static tcp 10.34.1.67 23 1.1.1.6 777 //собрали команду r1(config)# ip nat inside source static tcp 10.34.1.69 80 1.1.1.6 8080 r1(config)# exit r1# clear ip nat translation * Первой командой мы “пробросили” порт 23 (протокол tcp), теперь все что будет приходить по адресу 1.1.1.6 с портом tcp 777 будет передаваться на SW-1. Такая же ситуация со второй командой, только мы пробросили порт tcp 80, только все что приходит по адресу 1.1.1.6 с портом tcp 8080 будет передаваться на сервер tacacsGUI.
Время испытаний, переходим к PC_HOME. На рисунке 6.8 мы устанавливаем telnet сессию на адрес 1.1.1.6 с портом 777 и попадаем на sw-1.
Рисунок 6.8 Проверка Static PAT На рисунке 6.9 в браузере мы перешли по ссылке http://r.somecorp.com:8080 и открылась страница сервера tacacsGUI.
Рисунок 6.9 Проверка Static PAT И напоследок таблица трансляций.
r1# sh ip nat tr Pro Inside global Inside local Outside local Outside global icmp 1.1.1.3:1742 10.34.1.69:1742 5.5.5.4:1742 5.5.5.4:1742 ... icmp 1.1.1.3:1750 10.34.1.69:1750 5.5.5.4:1750 5.5.5.4:1750 --- 1.1.1.3 10.34.1.69 --- --- tcp 1.1.1.6:777 10.34.1.67:23 --- --- tcp 1.1.1.6:777 10.34.1.67:23 3.3.3.2:1029 3.3.3.2:1029 //зашли на sw-1 tcp 1.1.1.6:777 10.34.1.67:23 3.3.3.2:1031 3.3.3.2:1031 tcp 1.1.1.6:8080 10.34.1.69:80 --- --- tcp 1.1.1.6:8080 10.34.1.69:80 3.3.3.2:1032 3.3.3.2:1032//зашли на tacacsGUI Технологию Static PAT поддерживают практически все домашние роутеры. Зная как работает эта технология, вы можете настроить ее на своем роутере при помощи графического интерфейса. Например, я прокидывал tcp порт 25565 для minecraft сервера, а так же tcp порт 80 для временного веб-сервера :). Enjoy it!
Общая информация
Packet Tracer version: 6.2.0
Рабочий файл: скачать
Тип: Самостоятельная работа
Версия файла: 2.0
Уже получили: 49 пользователей
Начальные данные
Все “манипуляции” можно осуществлять при помощи PC0 (либо с других устройств). Пароль от оборудования cisco123, подключаться используя telnet. Для доступа на сетевое оборудование, используйте адресацию представленную на схеме, так же настроены dns-записи (представлены ниже). Между роутером и коммутатором настроен trunk.
Настроенные DNS-записи (сервер tacacsGUI):
- r1.local – 10.34.1.65
- sw-1.local – 10.34.1.67
- tacacsgui.com – 10.34.1.69
Настроенные DNS-записи (сервер DNS, в Internet):
- ciscolearning.ru – 5.5.5.4
- r.somecorp.com – 1.1.1.6
- tacacsgui.com – 1.1.1.3

Задание
- На коммутаторе sw-1 добавить VLAN 36. Добавить гостей в этот VLAN (настроить порты на коммутаторе, чтобы посмотреть на каком порту сидит гость, достаточно навести курсором на линк и порты “подсветятся”).
- На роутере создать subinterface, который будет смотреть в VLAN 36. Настроить на нем адрес 10.36.1.1/24.
- Настроить DHCP сервер для VLAN 36 (гостевой VLAN):
- DHCP pool name – dhcp-guest-vlan
- DHCP pool 10.36.1.10 – 10.36.1.254
- Gateway 10.36.1.1
- DNS 10.34.1.69
- Настроить PAT для vlan 36. (на интерфейсе прописать
ip nat inside
, создать ACL, установить nat overload через интерфейс Fa0/1) - Ограничить доступ для vlan 36 (гостевой VLAN). Устройствам в vlan 36 нельзя подключаться к адресам из сетей: 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16, кроме двух адресов 10.34.1.69 и 10.32.1.8. Весь остальной трафик должен быть разрешен.
- Настроить Static PAT. Один “очень важный гость” просит вас пробросить его сервер minecraft в интернет. Вам надо настроить проброс портов, с 1.1.1.2:25565 на 10.36.1.5:25565 (компьютер пользователя уже настроен). Проверить открытие порта можно с PC_HOME, вызвав команду
telnet 1.1.1.2 25565
. Ниже представлена проверка.
Проверка порта на доступность Обратите внимание! Чтобы выйти из telnet нужно воспользоваться сочетанием клавиш Ctrl + ], а после вызвать команду
quit
. Таким способом очень легко проверять доступность портов, т.е. проверять работоспособность 4-го уровня модели OSI (но только для протокола tcp!).
ID: 152 Created: Oct 19, 2016 Modified Oct 02, 2017