Сегодня мы будем изучать PAT (Port Address Translation), технологию трансляции IP- адресов с использованием портов, и NAT (Network Address Translation), технологию преобразования IP-адресов транзитных пакетов. PAT является частным случаем NAT. Мы рассмотрим три темы:
— приватные, или внутренние (внутрисетевые, локальные) IP-адреса и публичные, или внешние IP-адреса;
— NAT и PAT;
— настройка NAT/ PAT.
Начнем с внутренних адресов Private IP. Мы знаем, что они делятся на три класса: А, В и С.
Внутренние адреса класса А занимают диапазон «десятки» от 10.0.0.0 до 10.255.255.255, а внешние – диапазон от 1.0.0.0 до 9. 255.255.255 и от 11.0.0.0 до 126.255.255.255.
Внутренние адреса класса В занимают диапазон от 172.16.0.0 до 172.31.255.255, а внешние – от 128.0.0.0 до 172.15.255.255 и от 172.32.0.0 до 191.255.255.255.
Внутренние адреса класса С занимают диапазон от 192.168.0.0 до 192.168.255.255, а внешние – от 192.0.0 до 192.167.255.255 и от 192.169.0.0 до 223.255.255.255.
Адреса класса А – это адреса /8, класса В — /12 и класса С — /16. Таким образом, внешние и внутренние IP-адреса разных классов занимают разные диапазоны.
Мы неоднократно обсуждали, в чем состоит разница между приватными и публичными IP-адресами. В общих чертах, если у нас имеется роутер и группа внутренних IP-адресов, при попытке их выхода в интернет роутер конвертирует их во внешние IP-адреса. Внутренние адреса используются исключительно в локальных сетях, а не в Интернете.
Если я с помощью командной строки просмотрю сетевые параметры своего компьютера, то увижу там свой внутренний LAN IP-адрес 192.168.1.103.
Для того, чтобы узнать свой публичный IP-адрес, можно воспользоваться интернет-сервисом типа «Какой у меня IP»? Как видите, внешний адрес компьютера 78.100.196.163 отличается от его внутреннего адреса.
Во всех случаях мой компьютер виден в интернете именно по внешнему IP-адресу. Итак, внутренний адрес моего компьютера 192.168.1.103, а внешний — 78.100.196.163. Внутренний адрес используется только для локальной связи, с ним нельзя выйти в интернет, для этого вам нужен публичный IP-адрес. Вы можете вспомнить, зачем было сделано разделение на приватные и публичные адреса, пересмотрев видеоурок День 3.
Рассмотрим, что такое NAT. Существует три типа NAT: статический, динамический и «перегруженный» NAT, или PAT.
В Cisco существуют 4 термина, описывающие NAT. Как я сказал, NAT – это механизм преобразования внутренних адресов во внешние. Если устройство, подключенное к интернету, получит пакет от другого устройства из локальной сети, оно просто отбросит этот пакет, так как формат внутреннего адреса не соответствует формату адресов, используемых в глобальной сети интернет. Поэтому устройство должно получить публичный IP-адрес для выхода в интернет.
Итак, первый термин – это Inside Local, означающий IP-адрес хоста во внутренней, локальной сети. Проще говоря, это первичный адрес источника типа 192.168.1.10. Второй термин, Inside Global, это IP-адрес локального хоста, под которым он виден во внешней сети. В нашем случае это IP-адрес внешнего порта роутера 200.124.22.10.
Можно сказать, что Inside Local это приватный IP-адрес, а Inside Global – публичный IP-адрес. Запомните, что термин Inside употребляется по отношению к источнику трафика, а Outside – по отношению к назначению трафика. Outside Local – это IP-адрес хоста во внешней сети, под которым он виден для внутренней сети. Проще говоря, это адрес получателя, видимый из внутренней сети. Пример такого адреса – это IP-адрес 200.124.22.100 устройства, расположенного в интернете.
Outside Global – это IP-адрес хоста, видимый во внешней сети. В большинстве случаев адреса Outside Local и Outside Global выглядят одинаково, потому что даже после преобразования IP-адрес назначения видим для источника таким же, как и до преобразования.
Рассмотрим, что представляет собой статический NAT. Статический NAT означает взаимно однозначное преобразование внутренних IP-адресов во внешние, или преобразование «один к одному». Когда устройства отправляют трафик в Интернет, их внутренние адреса Inside Local преобразуются во внутренние адреса Inside Global.
В нашей локальной сети имеются 3 устройства, и когда они собираются выйти в Интернет, то каждое из них получает свой собственный адрес Inside Global. Эти адреса статически приписаны к источникам трафика. Принцип «один к одному» означает, что если в локальной сети расположены 100 устройств, они получают 100 внешних адресов.
NAT появился для того, чтобы спасти Интернет, в котором заканчивались публичные IP-адреса. Благодаря NAT множество компаний, множество сетей могут иметь один общий внешний IP-адрес, в который будут преобразовываться локальные адреса устройств при выходе в сеть Интернет. Вы можете сказать, что в данном случае статического NAT нет никакой экономии количества адресов, так как сотне локальных компьютеров присваивается сотня внешних адресов, и будете совершенно правы. Однако статический NAT все же обладает рядом преимуществ.
Например, у нас имеется сервер с внутренним IP-адресом 192.168.1.100. Если какое-то устройство из Интернета захочет с ним связаться, оно не сможет это сделать, используя внутренний адрес назначения, для этого ему необходимо использовать внешний адрес сервера 200.124.22.3. Если в роутере настроен статический NAT, весь трафик, адресованный 200.124.22.3, автоматически переадресовывается на 192.168.1.100. Таким образом обеспечивается внешний доступ к устройствам локальной сети, в данном случае к веб-серверу компании, что может быть необходимо в отдельных случаях.
Рассмотрим динамический NAT. Он очень похож на статический, но не присваивает постоянные внешние адреса каждому локальному устройству. Например, у нас имеется 3 локальных устройства и всего 2 внешних адреса. Если второе устройство захочет выйти в интернет, ему будет присвоен первый свободный IP-адрес. Если после него в интернет захочет выйти веб-сервер, роутер присвоит ему второй доступный внешний адрес. Если после этого во внешнюю сеть захочет выйти первое устройство, для него не окажется доступного IP-адреса, и роутер отбросит его пакет.
У нас может быть сотня устройств с внутренними IP-адресами, и каждое из этих устройств может выйти в интернет. Но так как у нас нет статического назначения внешних адресов, одновременно выйти в интернет смогут не более 2-х устройств из сотни, потому что у нас есть всего два динамически назначаемых внешних адреса.
В устройствах Cisco предусмотрено фиксированное время преобразования адресов, по умолчанию равное 24 часам. Его можно изменить на 1,2,3, 10 минут, на любое угодное вам время. По истечению этого времени внешние адреса высвобождаются и автоматически возвращаются в пул адресов. Если в этот момент первое устройство захочет выйти в интернет и какой-либо внешний адрес окажется доступным, то оно его получит. Роутер содержит таблицу NAT, которая динамически обновляется, и пока время преобразования не истекло, назначенный адрес сохраняется за устройством. Проще говоря, динамический NAT работает по принципу: «кто пришел первым, того и обслужили».
Рассмотрим, что представляет собой перегруженный NAT, или PAT. Это наиболее распространенный тип NAT. В вашей домашней сети может быть множество устройств – ПК, смартфон, ноутбук, планшет, и все они подсоединяются к роутеру, который имеет один внешний IP-адрес. Так вот, PAT позволяет множеству устройств с внутренними IP-адресами одновременно выходить в интернет под одним внешним IP-адресом. Это возможно благодаря тому, что каждый приватный, внутренний IP-адрес использует определенный номер порта во время сеанса связи.
Предположим, у нас имеется один публичный адрес 200.124.22.1 и множество локальных устройств. Так вот, при выходе в интернет все эти хосты будут получать один и тот же адрес 200.124.22.1. Единственное, что будет их отличать друг от друга, это номер порта.
Если вы помните обсуждение транспортного уровня, то знаете, что транспортный уровень содержит номера портов, причем номер порта источника представляет собой случайное число.
Предположим, что во внешней сети имеется хост с IP-адресом 200.124.22.10, который связан с интернетом. Если компьютер 192.168.1.11 захочет связаться с компьютером 200.124.22.10, он создаст случайный порт источника 51772. При этом порт назначения компьютера внешней сети будет 80.
Когда роутер получит пакет локального компьютера, направленный во внешнюю сеть, он транслирует его локальный адрес Inside Local в адрес Inside Global 200.124.22.1 и присвоит порту номер 23556. Пакет достигнет компьютера 200.124.22.10, и тот должен будет отослать обратно ответ согласно процедуре рукопожатия, при этом назначением будет адрес 200.124.22.1 и порт 23556.
Роутер имеет таблицу трансляции NAT, поэтому, получив пакет внешнего компьютера, он определит адрес Inside Local, соответствующий адресу Inside Global как 192.168.1.11: 51772, и перешлет ему пакет. После этого связь между двумя компьютерами можно считать установленной.
В это же время у вас может быть сотня устройств, использующих для связи один и тот же адрес 200.124.22.1, но разные номера портов, благодаря чему они все одновременно смогут выйти в интернет. Вот почему PAT является таким популярным способом трансляции.
Давайте рассмотрим настройку статического NAT. Для любой сети в первую очередь необходимо определить входной и выходной интерфейсы. На схеме показан роутер, через который осуществляется передача трафика от порта G0/0 к порту G0/1, то есть из внутренней сети во внешнюю сеть. Таким образом, у нас имеется входной интерфейс 192.168.1.1 и выходной интерфейс 200.124.22.1.
Для настройки NAT мы переходим к интерфейсу G0/0 и задаем параметры ip addres 192.168.1.1 255.255.255.0 и указываем, что данный интерфейс является входным, использовав команду ip nat inside.
Аналогичным образом мы настраиваем NAT на выходном интерфейсе G0/1, указав ip address 200.124.22.1, маску подсети 255.255.255.0 и ip nat outside. Запомните, что преобразование динамического NAT всегда осуществляется от входного к выходному интерфейсу, от inside к outside. Естественно, что для динамического NAT ответ приходит к входному интерфейсу через выходной, но при инициации трафика срабатывает именно направление in-out. В случае статического NAT инициация трафика может происходить в любом из направлений – in-out или out-in.
Далее нам необходимо составить таблицу статического NAT, где каждому локальному адресу соответствует отдельный глобальный адрес. В нашем случае имеется 3 устройства, поэтому таблица будет состоять из 3-х записей, в которых указывается Inside Local IP-адрес источника, который преобразовывается в Inside Global адрес: ip nat inside static 192.168.1.10 200.124.22.1.
Таким образом, в статическом NAT вы вручную прописываете преобразование для каждого адреса локального хоста. Сейчас я перейду к Packet Tracer и произведу описанные выше настройки.
Сверху у нас расположен сервер 192.168.1.100, ниже находится компьютер 192.168.1.10 и в самом низу компьютер 192.168.1.11. Порт G0/0 роутера Router0 имеет IP-адрес 192.168.1.1, а порт G0/1 – 200.124.22.1. В «облаке», изображающем интернет, я разместил Router1, которому присвоил IP-адрес 200.124.22.10.
Я захожу в настройки Router1 и набираю команду debug ip icmp. Теперь, как только пинг достигнет этого устройства, в окне настроек появится сообщение отладки, показывающее, что это за пакет.
Приступим к настройке роутера Router0. Я перехожу в режим глобальных настроек и вызываю интерфейс G0/0. Далее я ввожу команду ip nat inside, затем перехожу к интерфейсу g0/1 и ввожу команду ip nat outside. Таким образом я назначил входной и выходной интерфейсы роутера. Теперь мне нужно вручную настроить IP-адреса, то есть перенести в настройки строки приведенной ранее таблицы:
Ip nat inside source static 192.168.1.10 200.124.22.1
Ip nat inside source static 192.168.1.11 200.124.22.2
Ip nat inside source static 192.168.1.100 200.124.22.3
Сейчас я пропингую Router1 с каждого из наших устройств и посмотрю, какие IP-адреса покажет принятый им пинг. Для этого я располагаю открытое окно CLI роутера R1 в правой части экрана, чтобы видеть сообщения отладки. Теперь я перехожу в терминал командной строки PC0 и пингую адрес 200.124.22.10. После этого в окне появляется сообщение, что пинг получен с IP-адреса 200.124.22.1. Это означает, что IP-адрес локального компьютера 192.168.1.10 был преобразован в глобальный адрес 200.124.22.1.
То же самое я проделываю со следующим локальным компьютером и вижу, что его адрес был преобразован в 200.124.22.2. Затем я отправляю пинг с сервера и вижу адрес 200.124.22.3.
Таким образом, когда трафик с устройства локальной сети достигает роутера, на котором настроен статический NAT, роутер в соответствии с таблицей преобразует локальный IP-адрес в глобальный и отправляет трафик во внешнюю сеть. Чтобы проверить таблицу NAT, я ввожу команду show ip nat translations.
Теперь мы можем просмотреть все преобразования, которые совершает роутер. В первом столбце Inside Global расположен адрес устройства до трансляции, то есть тот адрес, под которым устройство видимо из внешней сети, далее следует адрес Inside Local, то есть адрес устройства в локальной сети. Третий столбец показывает Outside Local, а четвертый – адрес Outside Global, причем оба эти адреса одинаковы, потому что мы не подвергаем преобразованию IP-адрес назначения. Как видите, спустя несколько секунд таблица очистилась, потому что в Packet Tracer установлен короткий тайм-аут пинга.
Я могу пропинговать с роутера R1 сервер по адресу 200.124.22.3, и если снова перейти к настройкам роутера, можно увидеть, что таблица снова заполнилась четырьмя строками пинга с преобразованным адресом назначения 192.168.1.100.
Как я уже сказал, даже если сработал тайм-аут трансляции, при инициации трафика из внешнего источника механизм NAT автоматически активируется. Такое происходит только при использовании статического NAT.
Теперь рассмотрим, как работает динамический NAT. В нашем примере имеется 2 публичных адреса для трех устройств локальной сети, однако могут быть десятки и сотни таких приватных хостов. При этом одновременно выйти в интернет смогут всего 2 устройства. Рассмотрим, в чем, кроме этого, заключается разница между статическим и динамическим NAT.
Как и в предыдущем случае, сначала нужно определить входной и выходной интерфейсы роутера. Далее мы создаем своеобразный список доступа, однако это не тот ACL, о котором мы говорили на предыдущем уроке. Этот список доступа используется для идентификации трафика, который мы хотим преобразовать. Здесь появляется новый термин “interesting traffic”, или «интересный трафик». Это трафик, который интересует вас по какой-то причине, и когда этот трафик совпадает с условиями списка доступа, он попадает под действие NAT и преобразовывается. Данный термин применим к трафику во многих случаях, например, в случае с VPN «интересным» называют трафик, который собираются пропустить через VPN-туннель.
Мы должны создать ACL, который идентифицирует interesting traffic, в нашем случае это трафик целой сети 192.168.1.0, вместе с которым указывается обратная маска 0.0.0.255.
Затем мы должны создать NAT-пул, для чего используем команду ip nat pool < имя пула > и указываем пул IP-адресов 200.124.22.1 200.124.22.2. Это означает, что мы предоставляем только два внешних IP-адреса. Далее в команде используется ключевое слово netmask и вводится маска подсети 255.255.255.252. Последний октет маски равен (255 — количество адресов пула – 1), так что если у вас в пуле будет 254 адреса, то маска подсети будет 255.255.255.0. Это очень важный параметр, поэтому при настройке динамического NAT следите за тем, чтобы ввести правильное значение netmask.
Далее мы используем команду, которая запускает механизм NAT: ip nat inside sourse list 1 pool NWKING, где NWKING – имя пула, а list 1 означает список доступа ACL номер1. Запомните — для того, чтобы эта команда сработала, сначала необходимо создать пул динамических адресов и список доступа.
Итак, при наших условиях первое устройство, желающее выйти в интернет, сможет это сделать, второе устройство тоже, а вот третьему придется ждать, пока освободится один из адресов пула. Настройка динамического NAT состоит из 4-х шагов: определение входного и выходного интерфейса, определение «интересного» трафика, создание NAT – пула и собственно настройка.
Сейчас мы перейдем к Packet Tracer и попробуем настроить динамический NAT. Сначала мы должны удалить настройки статического NAT, для чего последовательно вводим команды:
no Ip nat inside source static 192.168.1.10 200.124.22.1
no Ip nat inside source static 192.168.1.11 200.124.22.2
no Ip nat inside source static 192.168.1.100 200.124.22.3.
Далее я создаю список доступа List 1 для целой сети командой access-list 1 permit 192.168.1.0 0.0.0.255 и формирую NAT- пул с помощью команды ip nat pool NWKING 200.124.22.1 200.124.22.2 netmask 255.255.255.252. В этой команде я указал имя пула, адреса, которые в него входят, и сетевую маску.
Затем я указываю, какой это NAT – внутренний или внешний, и источник, откуда NAT должен черпать информацию, в нашем случае это list, с помощью команды ip nat inside source list 1. После этого система выдаст подсказку – нужен ли целый пул или определенный интерфейс. Я выбираю pool потому что у нас более чем 1 внешний адрес. Если выбрать interface, то нужно будет указать порт с конкретным IP-адресом. В конечном виде команда будет выглядеть так: ip nat inside source list 1 pool NWKING. Сейчас этот пул состоит из двух адресов 200.124.22.1 200.124.22.2, однако вы свободно можете их изменить или добавить новые адреса, непривязанные к конкретному интерфейсу.
Вы должны убедиться, что ваша таблица маршрутизации обновилась так, что любой из этих IP-адресов в пуле должен быть направлен на это устройство, иначе вы не получите обратный трафик. Чтобы убедиться в работоспособности настроек, мы повторим процедуру пингования облачного роутера, которую проводили для статического NAT. Я открою окно роутера Router 1, чтобы видеть сообщения режима отладки, и пропингую его с каждого из 3-х устройств.
Мы видим, что все адреса источников, откуда приходят пакеты пинга, соответствуют настройкам. При этом пинг с компьютера PC0 не проходит, потому что ему не хватило свободного внешнего адреса. Если зайти в настройки Router 1, видно, что в данный момент используются адреса пула 200.124.22.1 и 200.124.22.2. Сейчас я отключу трансляцию, и вы увидите, как строки исчезают одна за другой. Я снова запускаю пинг с компьютера PC0, и как видите, теперь все работает, потому что он смог получить освободившийся внешний адрес 200.124.22.1.
Как можно очистить таблицу NAT и отменить заданное преобразование адресов? Заходим в настройки роутера Router0 и набираем команду clear ip nat translation * со «звездочкой» в конце строки. Если сейчас посмотреть на состояние преобразования с помощью команды show ip nat translation, система выдаст нам пустую строку.
Для просмотра статистики NAT используется команда show ip nat statistics.
Это очень полезная команда, благодаря которой можно узнать общее количество динамических, статических и расширенных преобразований NAT/PAT. Вы видите, что оно равно 0, поскольку мы очистили данные трансляции предыдущей командой. Здесь отображается входной и выходной интерфейсы, количество удачных и неудачных преобразований hits и misses (количество неудач связано с отсутствием свободного внешнего адреса для внутреннего хоста), название списка доступа и пула.
Теперь мы перейдем к самому популярному виду преобразования IP-адресов – расширенному NAT, или PAT. Для настройки PAT необходимо совершить те же шаги, что и для настройки динамического NAT: определить входной и выходной интерфейсы роутера, идентифицировать «интересный» трафик, создать пул NAT и настроить PAT. Мы можем создать такой же пул из нескольких адресов, как и в предыдущем случае, но в этом нет необходимости, потому что в PAT все время используется один и тот же внешний адрес. Разница между настройкой динамического NAT и PAT заключается только в ключевом слове overload, которым заканчивается последняя команда настройки. После ввода этого слова динамический NAT автоматически превращается в PAT.
Кроме того, вы используете только один адрес в пуле NWKING, например, 200.124.22.1, но указываете его два раза как начальный и конечный внешний адрес с сетевой маской 255.255.255.0. Можно поступить проще, использовав вместо строки ip nat 1 pool NWKING 200.124.22.1 200.124.22.1 netmask 255.255.255.0 параметр source interface и фиксированный адрес 200.124.22.1 интерфейса G0/1. В этом случае все локальные адреса при выходе в интернет будут преобразовываться в данный IP-адрес.
В пуле также можно использовать любой другой IP-адрес, не обязательно соответствующий конкретному физическому интерфейсу. Однако в этом случае вы должны убедиться, что все роутеры в сети смогут направлять ответный трафик выбранному вами устройству. Недостаток NAT состоит в том, что его нельзя использовать для сквозной адресации, ведь пока обратный пакет возвратится к локальному устройству, его динамический NAT IP-адрес может успеть поменяться. То есть вы должны быть уверены, что выбранный IP-адрес останется доступным на все время сеанса связи.
Давайте посмотрим на это через Packet Tracer. Сначала я должен удалить динамический NAT командой no Ip nat inside source list 1 NWKING и удалить пул NAT с помощью команды no Ip nat pool NWKING 200.124.22.1 200.124.22.2 netmask 225.255.255.252.
Затем я должен создать пул PAT командой Ip nat pool NWKING 200.124.22.2 200.124.22.2 netmask 225.255.255.255. На этот раз я использую IP-адрес, который не принадлежит физическому устройству, потому что физическое устройство имеет адрес 200.124.22.1, а я хочу использовать 200.124.22.2. В нашем случае это работает, потому что у нас локальная сеть.
Далее я настраиваю PAT командой Ip nat inside source list 1 pool NWKING overload. После ввода этой команды у нас активируется преобразование адресов PAT. Чтобы проверить корректность настройки, я перехожу к нашим устройствам, серверу и двум компьютерам, и пингую с компьютера PC0 Router1 по адресу 200.124.22.10. В окне настроек роутера видно строки отладки, в которых показано, что источником пинга, как мы и ожидали, является IP-адрес 200.124.22.2. С этого же адреса приходит пинг, посланный компьютером PC1 и сервером Server0.
Посмотрим, что происходит в таблице преобразований роутера Router0. Вы видите, что все преобразования успешны, каждому устройству присваивается свой собственный порт, и все локальные адреса связываются с Router1 через IP-адрес пула 200.124.22.2.
Я использую команду show ip nat statistics, чтобы просмотреть статистику PAT.
Мы видим, что общее число преобразований, или трансляций адресов, равно 12, видим характеристики пула и прочую информацию.
Сейчас я ещё кое-что проделаю — введу команду Ip nat inside source list 1 interface gigabit Ethernet g0/1 overload. Если после этого пропинговать роутер с компьютера PC0, видно, что пакет пришел с адреса 200.124.22.1, то есть с физического интерфейса! Это более легкий путь: если вы не хотите создавать пул, что чаще всего происходит при использовании домашних роутеров, то в качестве внешнего NAT-адреса можно использовать IP-адрес физического интерфейса роутера. Именно так чаще всего происходит преобразование адреса вашего приватного хоста для публичной сети.
Сегодня мы изучили очень важную тему, поэтому вам необходимо в ней попрактиковаться. Используйте Packet Tracer, чтобы проверить ваши теоретические знания в решении практических задач по настройке NAT и PAT. Мы подошли к концу изучения тематики ICND1 — первого экзамена курса CCNA, поэтому следующий видеоурок я, вероятно, посвящу подведению итогов.
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Автор: ua-hosting.company