Как работает NAT. NAT - это что такое? Настройка NAT

2 32 или 4 294 967 296 IPv4 адресов это много? Кажется, что да. Однако с распространением персональных вычислений, мобильных устройств и быстрым ростом интернета вскоре стало очевидно, что 4,3 миллиарда адресов IPv4 будет недостаточно. Долгосрочным решением было IPv6 , но требовались более быстрое решение для устранения нехватки адресов. И этим решением стал NAT (Network Address Translation) .

Что такое NAT

Сети обычно проектируются с использованием частных IP адресов. Это адреса 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16 . Эти частные адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, и они не маршрутизируются в интернете. Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть переведен на общедоступный публичный адрес.

И вот как раз NAT переводит приватные адреса, в общедоступные. Это позволяет устройству с частным адресом IPv4 обращаться к ресурсам за пределами его частной сети. NAT в сочетании с частными адресами IPv4 оказался полезным методом сохранения общедоступных IPv4-адресов. Один общедоступный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет частный IPv4-адрес. NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей.

Маршрутизаторы с поддержкой NAT могут быть настроены с одним или несколькими действительными общедоступными IPv4-адресами. Эти общедоступные адреса называются пулом NAT. Когда устройство из внутренней сети отправляет трафик из сети наружу, то маршрутизатор с поддержкой NAT переводит внутренний IPv4-адрес устройства на общедоступный адрес из пула NAT. Для внешних устройств весь трафик, входящий и выходящий из сети, выглядит имеющим общедоступный IPv4 адрес.

Маршрутизатор NAT обычно работает на границе Stub -сети. Stub-сеть – это тупиковая сеть, которая имеет одно соединение с соседней сетью, один вход и выход из сети.

Когда устройство внутри Stub-сети хочет связываться с устройством за пределами своей сети, пакет пересылается пограничному маршрутизатору, и он выполняет NAT-процесс, переводя внутренний частный адрес устройства на публичный, внешний, маршрутизируемый адрес.

Терминология NAT

В терминологии NAT внутренняя сеть представляет собой набор сетей, подлежащих переводу. Внешняя сеть относится ко всем другим сетям.

При использовании NAT, адреса IPv4 имеют разные обозначения, основанные на том, находятся ли они в частной сети или в общедоступной сети (в интернете), и является ли трафик входящим или исходящим.

NAT включает в себя четыре типа адресов:

  • Внутренний локальный адрес (Inside local address) ;
  • Внутренний глобальный адрес (Inside global address) ;
  • Внешний местный адрес (Outside local address) ;
  • Внешний глобальный адрес (Outside global address) ;

При определении того, какой тип адреса используется, важно помнить, что терминология NAT всегда применяется с точки зрения устройства с транслированным адресом:

  • Внутренний адрес (Inside address) - адрес устройства, которое транслируется NAT;
  • Внешний адрес (Outside address) - адрес устройства назначения;
  • Локальный адрес (Local address) - это любой адрес, который отображается во внутренней части сети;
  • Глобальный адрес (Global address) - это любой адрес, который отображается во внешней части сети;

Рассмотрим это на примере схемы.


На рисунке ПК имеет внутренний локальный (Inside local ) адрес 192.168.1.5 и с его точки зрения веб-сервер имеет внешний (outside ) адрес 208.141.17.4. Когда с ПК отправляются пакеты на глобальный адрес веб-сервера, внутренний локальный (Inside local ) адрес ПК транслируется в 208.141.16.5 (inside global ). Адрес внешнего устройства обычно не переводится, поскольку он является общедоступным адресом IPv4.

Стоит заметить, что ПК имеет разные локальные и глобальные адреса, тогда как веб-сервер имеет одинаковый публичный IP адрес. С его точки зрения трафик, исходящий из ПК поступает с внутреннего глобального адреса 208.141.16.5. Маршрутизатор с NAT является точкой демаркации между внутренней и внешней сетями и между локальными и глобальными адресами.

Термины, inside и outside , объединены с терминами local и global , чтобы ссылаться на конкретные адреса. На рисунке маршрутизатор настроен на предоставление NAT и имеет пул общедоступных адресов для назначения внутренним хостам.

На рисунке показано как трафик отправляется с внутреннего ПК на внешний веб-сервер, через маршрутизатор с поддержкой NAT, и высылается и переводится в обратную сторону.


Внутренний локальный адрес (Inside local address ) - адрес источника, видимый из внутренней сети. На рисунке адрес 192.168.1.5 присвоен ПК – это и есть его внутренний локальный адрес.

Внутренний глобальный адрес (Inside global address ) - адрес источника, видимый из внешней сети. На рисунке, когда трафик с ПК отправляется на веб-сервер по адресу 208.141.17.4, маршрутизатор переводит внутренний локальный адрес (Inside local address ) на внутренний глобальный адрес (Inside global address ). В этом случае роутер изменяет адрес источника IPv4 с 192.168.1.5 на 208.141.16.5.

Внешний глобальный адрес (Outside global address ) - адрес адресата, видимый из внешней сети. Это глобально маршрутизируемый IPv4-адрес, назначенный хосту в Интернете. На схеме веб-сервер доступен по адресу 208.141.17.4. Чаще всего внешние локальные и внешние глобальные адреса одинаковы.

Внешний локальный адрес (Outside local address ) - адрес получателя, видимый из внутренней сети. В этом примере ПК отправляет трафик на веб-сервер по адресу 208.141.17.4

Рассмотрим весь путь прохождения пакета. ПК с адресом 192.168.1.5 пытается установить связь с веб-сервером 208.141.17.4. Когда пакет прибывает в маршрутизатор с поддержкой NAT, он считывает IPv4 адрес назначения пакета, чтобы определить, соответствует ли пакет критериям, указанным для перевода. В этом пример исходный адрес соответствует критериям и переводится с 192.168.1.5 (Inside local address ) на 208.141.16.5. (Inside global address ). Роутер добавляет это сопоставление локального в глобальный адрес в таблицу NAT и отправляет пакет с переведенным адресом источника в пункт назначения. Веб-сервер отвечает пакетом, адресованным внутреннему глобальному адресу ПК (208.141.16.5). Роутер получает пакет с адресом назначения 208.141.16.5 и проверяет таблицу NAT, в которой находит запись для этого сопоставления. Он использует эту информацию и переводит обратно внутренний глобальный адрес (208.141.16.5) на внутренний локальный адрес (192.168.1.5), и пакет перенаправляется в сторону ПК.

Типы NAT

Существует три типа трансляции NAT:

  • Статическая адресная трансляция (Static NAT) - сопоставление адресов один к одному между локальными и глобальными адресами;
  • Динамическая адресная трансляция (Dynamic NAT) - сопоставление адресов “многие ко многим” между локальными и глобальными адресами;
  • Port Address Translation (NAT) - многоадресное сопоставление адресов между локальными и глобальными адресами c использованием портов. Также этот метод известен как NAT Overload ;

Статический NAT использует сопоставление локальных и глобальных адресов один к одному. Эти сопоставления настраиваются администратором сети и остаются постоянными. Когда устройства отправляют трафик в Интернет, их внутренние локальные адреса переводятся в настроенные внутренние глобальные адреса. Для внешних сетей эти устройства имеют общедоступные IPv4-адреса. Статический NAT особенно полезен для веб-серверов или устройств, которые должны иметь согласованный адрес, доступный из Интернета, как например веб-сервер компании. Статический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя.

Статическая NAT таблица выглядит так:


Динамический NAT использует пул публичных адресов и назначает их по принципу «первым пришел, первым обслужен». Когда внутреннее устройство запрашивает доступ к внешней сети, динамический NAT назначает доступный общедоступный IPv4-адрес из пула. Подобно статическому NAT, динамический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя.

Динамическая NAT таблица выглядит так:


Port Address Translation (PAT)

PAT транслирует несколько частных адресов на один или несколько общедоступных адресов. Это то, что делают большинство домашних маршрутизаторов. Интернет-провайдер назначает один адрес маршрутизатору, но несколько членов семьи могут одновременно получать доступ к Интернету. Это наиболее распространенная форма NAT.

С помощью PAT несколько адресов могут быть сопоставлены с одним или несколькими адресами, поскольку каждый частный адрес также отслеживается номером порта. Когда устройство инициирует сеанс TCP/IP , оно генерирует значение порта источника TCP или UDP для уникальной идентификации сеанса. Когда NAT-маршрутизатор получает пакет от клиента, он использует номер своего исходного порта, чтобы однозначно идентифицировать конкретный перевод NAT. PAT гарантирует, что устройства используют разный номер порта TCP для каждого сеанса. Когда ответ возвращается с сервера, номер порта источника, который становится номером порта назначения в обратном пути, определяет, какое устройство маршрутизатор перенаправляет пакеты.

Картинка иллюстрирует процесс PAT. PAT добавляет уникальные номера портов источника во внутренний глобальный адрес, чтобы различать переводы.


Поскольку маршрутизатор обрабатывает каждый пакет, он использует номер порта (1331 и 1555, в этом примере), чтобы идентифицировать устройство, с которого выслан пакет.

Адрес источника (Source Address ) - это внутренний локальный адрес с добавленным номером порта, назначенным TCP/IP. Адрес назначения (Destination Address ) - это внешний локальный адрес с добавленным номером служебного порта. В этом примере порт службы 80: HTTP.

Для исходного адреса маршрутизатор переводит внутренний локальный адрес во внутренний глобальный адрес с добавленным номером порта. Адрес назначения не изменяется, но теперь он называется внешним глобальным IP-адресом. Когда веб-сервер отвечает, путь обратный.

В этом примере номера портов клиента 1331 и 1555 не изменялись на маршрутизаторе с NAT. Это не очень вероятный сценарий, потому что есть хорошая вероятность того, что эти номера портов уже были прикреплены к другим активным сеансам. PAT пытается сохранить исходный порт источника. Однако, если исходный порт источника уже используется, PAT назначает первый доступный номер порта, начиная с начала соответствующей группы портов 0-511, 512-1023 или 1024-65535 . Когда портов больше нет, и в пуле адресов имеется более одного внешнего адреса, PAT переходит на следующий адрес, чтобы попытаться выделить исходный порт источника. Этот процесс продолжается до тех пор, пока не будет доступных портов или внешних IP-адресов.

То есть если другой хост может выбрать тот же номер порта 1444. Это приемлемо для внутреннего адреса, потому что хосты имеют уникальные частные IP-адреса. Однако на маршрутизаторе NAT номера портов должны быть изменены - в противном случае пакеты из двух разных хостов выйдут из него с тем же адресом источника. Поэтому PAT назначает следующий доступный порт (1445) на второй адрес хоста.

Подведем итоги в сравнении NAT и PAT. Как видно из таблиц, NAT переводит IPv4-адреса на основе 1:1 между частными адресами IPv4 и общедоступными IPv4-адресами. Однако PAT изменяет как сам адрес, так и номер порта. NAT перенаправляет входящие пакеты на их внутренний адрес, ориентируясь на входящий IP адрес источника, заданный хостом в общедоступной сети, а с PAT обычно имеется только один или очень мало публично открытых IPv4-адресов, и входящие пакеты перенаправляются, ориентируясь на NAT таблицу маршрутизатора.

А что относительно пакетов IPv4, содержащих данные, отличные от TCP или UDP? Эти пакеты не содержат номер порта уровня 4. PAT переводит наиболее распространенные протоколы, переносимые IPv4, которые не используют TCP или UDP в качестве протокола транспортного уровня. Наиболее распространенными из них являются ICMPv4. Каждый из этих типов протоколов по-разному обрабатывается PAT. Например, сообщения запроса ICMPv4, эхо-запросы и ответы включают идентификатор запроса Query ID . ICMPv4 использует Query ID. для идентификации эхо-запроса с соответствующим ответом. Идентификатор запроса увеличивается с каждым отправленным эхо-запросом. PAT использует идентификатор запроса вместо номера порта уровня 4.

Преимущества и недостатки NAT

NAT предоставляет множество преимуществ, в том числе:

  • NAT сохраняет зарегистрированную схему адресации, разрешая приватизацию интрасетей. При PAT внутренние хосты могут совместно использовать один общедоступный IPv4-адрес для всех внешних коммуникаций. В этом типе конфигурации требуется очень мало внешних адресов для поддержки многих внутренних хостов;
  • NAT повышает гибкость соединений с общедоступной сетью. Многочисленные пулы, пулы резервного копирования и пулы балансировки нагрузки могут быть реализованы для обеспечения надежных общедоступных сетевых подключений;
  • NAT обеспечивает согласованность для внутренних схем адресации сети. В сети, не использующей частные IPv4-адреса и NAT, изменение общей схемы адресов IPv4 требует переадресации всех хостов в существующей сети. Стоимость переадресации хостов может быть значительной. NAT позволяет существующей частной адресной схеме IPv4 оставаться, позволяя легко изменять новую схему общедоступной адресации. Это означает, что организация может менять провайдеров и не нужно менять ни одного из своих внутренних клиентов;

  • NAT обеспечивает сетевую безопасность. Поскольку частные сети не рекламируют свои адреса или внутреннюю топологию, они остаются достаточно надежными при использовании в сочетании с NAT для получения контролируемого внешнего доступа. Однако нужно понимать, что NAT не заменяет фаерволы;

Но у NAT есть некоторые недостатки. Тот факт, что хосты в Интернете, по-видимому, напрямую взаимодействуют с устройством с поддержкой NAT, а не с фактическим хостом внутри частной сети, создает ряд проблем:

  • Один из недостатков использования NAT связан с производительностью сети, особенно для протоколов реального времени, таких как VoIP . NAT увеличивает задержки переключения, потому что перевод каждого адреса IPv4 в заголовках пакетов требует времени;
  • Другим недостатком использования NAT является то, что сквозная адресация теряется. Многие интернет-протоколы и приложения зависят от сквозной адресации от источника до места назначения. Некоторые приложения не работают с NAT. Приложения, которые используют физические адреса, а не квалифицированное доменное имя, не доходят до адресатов, которые транслируются через NAT-маршрутизатор. Иногда эту проблему можно избежать, реализуя статические сопоставления NAT;
  • Также теряется сквозная трассировка IPv4. Сложнее трассировать пакеты, которые подвергаются многочисленным изменениям адресов пакетов в течение нескольких NAT-переходов, что затрудняет поиск и устранение неполадок;
  • Использование NAT также затрудняет протоколы туннелирования, такие как IPsec, поскольку NAT изменяет значения в заголовках, которые мешают проверкам целостности, выполняемым IPsec и другими протоколами туннелирования;
  • Службы, требующие инициирования TCP-соединений из внешней сети, или stateless протоколы, например, использующие UDP, могут быть нарушены. Если маршрутизатор NAT не настроен для поддержки таких протоколов, входящие пакеты не могут достичь своего адресата;

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

Ладно, забудем на время эту лирику.
Вообще говоря, списки доступа бывают разными:

Стандартные
- Расширенные
- Динамические
- Рефлексивные
- Повременные

Мы своё внимание остановим сегодня на первых двух, а более подробно обо всех вы можете прочитать у циски .

Входящий и исходящий трафик

Для почину давайте-ка разберёмся с одной вещью. Что понимать под входящим и исходящим трафиком? Это нам в будущем понадобится. Входящий трафик - этот тот, который приходит на интерфейс извне.

Исходящий - тот, который отправляется с интерфейса вовне.

Список доступа вы можете применить либо на входящий трафик, тогда неугодные пакеты не будут даже попадать на маршрутизатор и соответственно, дальше в сеть, либо на исходящий, тогда пакеты приходят на маршрутизатор, обрабатываются им, доходят до целевого интерфейса и только на нём дропятся.

Стандартный список доступа проверяет только адрес отправителя. Расширенный- адрес отправителя, адрес получателя, а также порт. Стандартные ACL рекомендуется ставить как можно ближе к получателю (чтобы не порезать больше, чем нужно), а расширенные- ближе к отправителю (чтобы как можно раньше дропнуть нежелательный трафик).

Практика

Давайте сразу к практике. Что бы нам такого наограничивать в нашей маленькой сети “Лифт ми Ап”?

А) WEB-сервер. Разрешить доступ всем по порту TCP 80 (протокол HTTP). Для того устройства, с которого будет производиться управление (у нас же есть админ) нужно открыть telnet и ftp, но ему мы дадим полный доступ. Всем остальным отбой.

Б) Файловый сервер. На него у нас должны попадать резиденты Лифт ми Ап по портам для общих папок, а все остальные по FTP.

В) Почтовый сервер. Тут у нас запущены SMTP и POP3, то есть порты TCP 25 и 110. Так же для админа открываем доступ на управление. Других блокируем.

Г) Для будущего DNS-сервера нужно открыть порт UDP 53

Д) В сеть серверов разрешить ICMP-сообщения

Е) Поскольку сеть Other у нас для всех беспартийных, кто не вошёл в ФЭО, ПТО и Бухгалтерию, то мы их всех ограничим, а некоторым только дадим доступ (в числе них мы и админ)

ё) В сеть управления нужно пускать опять же только админа, ну и конечно себя любимого.

Ж) Не будем строить препоны общению между собой сотрудников отделов.

а) Доступ на WEB-сервер

Тут у нас работает политика запрещено всё, что не разрешено. Поэтому нам сейчас надо кое-что открыть, а всё остальное закрыть.
Поскольку мы защищаем сеть серверов, то и лист будем вешать на интерфейс, идущий в сторону них то есть, на FE0/0.3 Вопрос только на in или на out нам нужно это делать? Если мы не хотим пускать пакеты в сторону серверов, которые уже оказались на маршрутизаторе, то это будет исходящий трафик. То есть адреса назначения (destination) у нас будут в сети серверов (из них мы будем выбирать на какой именно сервер идёт трафик), а адреса источников (source) могут быть любыми - как из нашей корпоративной сети, так и из интернета.
Ещё одно замечание: поскольку фильтровать мы будем в том числе по адресу назначения (на WEB-сервер одни правила, на почтовый - другие), то список контроля доступа нам понадобится расширенный (extended), только он позволяет делать это.

Правила в списке доступа проверяются по порядку сверху вниз до первого совпадения. Как только одно из правил сработало, независимо от того permit это или deny, проверка прекращается и обработка трафика происходит на основе сработавшего правила.
То есть если мы хотим защитить WEB-сервер, то в первую очередь нам нужно дать разрешение, потому что, если мы в первой же строке настроим deny ip any any - то оно всегда будет срабатывать и трафик не будет ходить вообще. Any - это специальное слово, которое означает адрес сети и обратную маску 0.0.0.0 0.0.0.0 и означает, что под правило подпадают абсолютно все узлы из любых сетей. Другое специальное слово - host - оно означает маску 255.255.255.255 - то есть именно один единственный указанный адрес.
Итак, первое правило: разрешить доступ всем по порту 80


msk-arbat-gw1(config-ext-nacl)# remark WEB
any host 172.16.0.2 eq 80

Разрешаем (permit ) TCP-трафик от любого узла (any ) на хост (host - именно один адрес) 172.16.0.2, адресованный на 80-й порт.
Пробуем повесить этот список доступа на интерфейс FE0/0.3:

msk-arbat-gw1(config-subif)# ip access-group Servers-out out

Проверяем с любого из наших подключенных компьютеров:

Как видите страничка открывается, но что там у нас с пингом?

И так с любого другого узла?

Дело в том, что после всех правил в цисковских ACL в конце дописывается неявное deny ip any any (implicit deny). Что для нас это означает? Любой пакет, выходящий с интерфейса и не отвечающий ни одному правилу из ACL, подпадает под implicit deny и отбрасывается. То есть хоть пинг, хоть фтп, хоть что угодно здесь уже не пройдёт.

Идём дальше: надо дать полный доступ компьютеру, с которого будет производиться управление. Это будет компьютер нашего админа с адресом 172.16.6.66 из сети Other.
Каждое новое правило добавляется автоматически в конец списка, если он уже существует:

msk-arbat-gw1(config)#
msk-arbat-gw1(config-ext-nacl)# permit tcp host 172.16.6.66 host 172.16.0.2 range 20 ftp
msk-arbat-gw1(config-ext-nacl)# permit tcp host 172.16.6.66 host 172.16.0.2 eq telnet

Вот и всё. Проверяем с нужного узла (поскольку серверами в РТ не поддерживается телнет, проверяем на FTP):

То есть FTP-сообщение пришло на маршрутизатор и должно уйти с интерфейса FE0/0.3. Маршрутизатор проверяет и видит, что пакет подходит под добавленное нами правило и пропускает его.

А с постороннего узла

Пакет FTP не попадает ни под одно из правил, кроме неявного deny ip any any и отбрасывается.

б)Доступ на файловый сервер

Тут бы надо в первую очередь определиться с тем, кто будет “резидентом”, кому нужно дать доступ. Конечно, это те, кто имеет адрес из сети 172.16.0.0/16 - только им и дадим доступ.
Теперь с общими папками. В большинстве современных систем уже используется для этого протокол SMB, которому нужен порт TCP 445. На более старых версиях использовался NetBios, который кормился аж через три порта: UDP 137 и 138 и TCP 139. Договорившись с нашим админом, настроим 445 порт (правда проверить в рамках РТ, конечно, не получится). Но кроме этого, нам понадобятся порты для FTP - 20, 21, причём не только для внутренних хостов, но и для соединений из интернета:
msk-arbat-gw1(config)# ip access-list extended Servers-out
msk-arbat-gw1(config-ext-nacl)# permit tcp 172.16.0.0 0.0.255.255 host 172.16.0.3 eq 445
msk-arbat-gw1(config-ext-nacl)# permit tcp any host 172.16.0.3 range 20 21

Тут мы повторно применили конструкцию range 20 21 - для того, чтобы в одной строке задать несколько портов. Для FTP, вообще говоря, недостаточно только 21-го порта. Дело в том, что если вы откроете только его, то авторизация у вас будет проходить, а передача файлов нет.

0.0.255.255 - обратная маска (wildcard mask). О том, что это такое, поговорим чуточку позже

в) Доступ на почтовый сервер

Продолжаем нарабатывать практику - теперь с почтовым сервером. В рамках того же списка доступа добавляем новые нужные нам записи.
Вместо номеров портов для широкораспространённых протоколов можно указывать их имена:
msk-arbat-gw1(config)# ip access-list extended Servers-out
msk-arbat-gw1(config-ext-nacl)#permit tcp any host 172.16.0.4 eq pop3
msk-arbat-gw1(config-ext-nacl)#permit tcp any host 172.16.0.4 eq smtp

г) DNS-сервер

msk-arbat-gw1(config)# ip access-list extended Servers-out
msk-arbat-gw1(config-ext-nacl)# permit udp 172.16.0.0 0.0.255.255 host 172.16.0.5 eq 53

д) ICMP

Осталось исправить ситуацию с пингом. Ничего страшного нет в том, чтобы добавить правила в конец списка, но как-то эстетически приятнее будет увидеть их вначале.
Используем несложный чит для этого. Для это можно воспользоваться текстовым редактором, например. Скопируйте туда из show run кусок про ACL и добавьте следующие строки:
no ip access-list extended Servers-out
ip access-list extended Servers-out
permit icmp any any
remark WEB



remark FILE


remark MAIL


remark DNS

Первой строкой мы удаляем существующий список, далее создаём его заново и перечисляем все новые правила в нужном нам порядке. Командой в третьей строке мы разрешили проход всех ICMP-пакетов от любых хостов на любые хосты.

Далее просто копируем всё скопом и вставляем в консоль. Интерфейс интерпретирует каждую строку как отдельную команду и выполняет её. Таким образом, мы заменили старый список новым.
Проверяем, что пинг есть:

Прекрасно.

Данный “чит” хорош для первоначальной конфигурации или если вы точно понимаете, что делаете. На рабочей сети, когда вы настраиваете удалённо ACL, вы рискуете остаться без доступа на настраиваемую железку.

Чтобы вставить правило в начало или в любое другое нужное место, вы можете прибегнуть к такому приёму:
ip access-list extended Servers-out
1 permit icmp any any

Каждое правило в списке пронумеровано с определённым шагом и если перед словом permit/deny вы поставите число, то правило будет добавлено не в конец, а в нужное вам место. К сожалению, такая фича не работает в РТ.
Если будет вдруг необходимо (заняты все подряд идущие числа между правилами) вы всегда можете перенумеровать правила (в этом примере назначается номер первого правила 10(первое число) и инкремент 10):
ip access-list resequence Servers-out 10 10

В итоге Access List на серверную сеть будет выглядеть так:
ip access-list extended Servers-out
permit icmp any any
remark WEB
permit tcp any host 172.16.0.2 eq www
permit tcp host 172.16.6.66 host 172.16.0.2 range 20 ftp
permit tcp host 172.16.6.66 host 172.16.0.2 eq telnet
remark FILE
permit tcp 172.16.0.0 0.0.255.255 host 172.16.0.3 eq 445
permit tcp any host 172.16.0.3 range 20 21
remark MAIL
permit tcp any host 172.16.0.4 eq pop3
permit tcp any host 172.16.0.4 eq smtp
remark DNS
permit udp 172.16.0.0 0.0.255.255 host 172.16.0.5 eq 53

Сейчас наш админ имеет доступ только на WEB-сервер. Откройте ему полный доступ на всю сеть. Это первое домашнее задание.

е) Права пользователей из сети Other

До сих пор нам нужно было не впускать кого-то куда-то, поэтому мы обращали внимание на адрес назначения и список доступа вешали на исходящий с интерфейса трафик.

Теперь нам нужно не выпускать : никакие запросы от компьютеров из сети Other не должны выходить за пределы. Ну, конечно, кроме тех, которые мы специально разрешим.

msk-arbat-gw1(config)# ip access-list extended Other-in

msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.6.61 any



Тут мы не могли сначала запретить всем, а потом разрешить избранным, потому что абсолютно все пакеты попадали бы под правило deny ip any any и permit не срабатывал бы вообще.
Применяем на интерфейс. На этот раз на вход:
msk-arbat-gw1(config)#int fa0/0.104
msk-arbat-gw1(config-subif)#ip access-group Other-in in

то есть все IP-пакеты от хоста с адресом 172.16.6.61 или 172.16.6.66 разрешено передавать куда бы они ни были предназначены. Почему мы тут используем тоже расширенный список доступа? Ведь, казалось бы, мы проверяем только адрес отправителя. Потому что админу мы дали полный доступ, а вот гостю компании “Лифт ми Ап”, например, который попадёт в эту же сеть совсем ни к чему доступ куда-либо, кроме как в Интернет.

ё) Сеть управления

Ничего сложного. Правило будет выглядеть так:
msk-arbat-gw1(config)# ip access-list extended Management-out
msk-arbat-gw1(config-ext-nacl)# remark IAM
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.6.61 172.16.1.0 0.0.0.255
msk-arbat-gw1(config-ext-nacl)# remark ADMIN
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.6.66 172.16.1.0 0.0.0.255

Данный ACL применяем на out на интерфейс FE 0/0.2:
msk-arbat-gw1(config)# int fa0/0.2
msk-arbat-gw1(config-subif)#ip access-group Management-out out

ж) Более никаких ограничений

Готово

Маска и обратная маска

До сих пор мы без объяснения давали странный параметр вида 0.0.255.255, подозрительно напоминающий маску подсети.
Немного сложная для понимания, но именно она - обратная маска - используется для определения хостов, которые подпадут под правило.
Чтобы понять что такое обратная маска, вы должны знать, что такое обычная.

Начнём с самого простого примера.

Обычная сеть на 256 адресов: 172.16.5.0/24, например. Что означает эта запись?
А означает она ровно следующее

IP-адрес. Десятичная запись 172 16 5 0
IP-адрес. Двоичная запись 10101100 00010000 00000101 00000000
11111111 11111111 11111111 00000000
255 255 255 0

IP-адрес - это параметр длиною 32 бита, поделенный на 4 части, который вы привыкли видеть в десятичной форме.
Маска подсети также имеет длину 32 бита - она фактически шаблон, трафарет, по которому определяется принадлежность адреса подсети. Там, где в маске стоят единицы, значение меняться не может, то есть часть 172.16.5 совершенно неизменна и она будет одинакова для всех хостов этой подсети, а вот та, где нули - варьируется.
То есть во взятом нами примере 172.16.5.0/24 - это адрес сети, а хосты будут 172.16.5.1-172.16.5.254 (последний 255 - широковещательный), потому что 00000001 - это 1, а 11111110 - 254 (речь о последнем октете адреса). /24 означает, что длина маски 24 бита, то есть у нас идёт 24 единицы - неизменная часть и 8 нулей.
Другой случай, когда маска у нас, например, 30 бит, а не 24.
К примеру 172.16.2.4/30. Распишем это так:

IP-адрес. Десятичная запись 172 16 2 4
IP-адрес. Двоичная запись 10101100 00010000 00000010 00000100
Маска подсети. Двоичная запись 11111111 11111111 11111111 11111100
Маска подсети. Десятичная запись 255 255 255 252

Как видите, для этой подсети могут меняться только последние два бита. Последний октет может принимать следующие 4 значения:
00000100 - адрес подсети (4 в десятичной системе)
00000101 - адрес узла (5)
00000110 - адрес узла (6)
00000111 - широковещательный (7)
Всё, что за пределами этого - уже другая подсеть

То есть теперь вам должно быть чуть-чуть понятно, что маска подсети - это последовательность 32-х бит, где сначала идут единицы, означающие адрес подсети, потом идут нули, означающие адрес хоста. При этом чередоваться нули и единицы в маске не могут чередоваться. То есть маска 11111111.11100000.11110111.00000000 невозможна

А что же такое обратная маска (wildcard)?
Для подавляющего большинства админов и некоторых инженеров - это не более, чем инверсия обычной маски. То есть нули вначале задают адрес части, которая должна совпадать обязательно, а единицы наоборот свободную часть.
То есть на взятом нами первом примере, если вы хотите отфильтровать все хосты из подсети 172.16.5.0/24, то вы зададите правило в Access-листе:
…. 172.16.5.0 0.0.0.255
Потому что обратная маска будет выглядеть так:

00000000.00000000.00000000.11111111

Во втором примере с сетью 172.16.2.4/30 обратная маска будет выглядеть так: 30 нулей и две единицы:

Обратная маска. Двоичная запись 00000000 00000000 00000000 00000011
Обратная маска. Десятичная запись 0 0 0 3

Соответственно параметр в access-листе будет выглядеть так:
…. 172.16.2.4 0.0.0.3
Позже, когда вы съедите собаку на просчётах масок и обратных масок, вы запомните самые употребляемые цифры, количество хостов в той или иной маске, поймёте, что в описанных ситуациях последний октет обратной маски получается вычитанием из 255 цифры последнего октета обычной маски (255-252=3) и т.д. А пока нужно много трудиться и считать)

Но на самом деле обратная маска - это несколько более богатый инструмент, здесь вы можете объединять адреса внутри одной подсети или даже объединять подсети, но самое главное отличие, вы можете чередовать нули и единицы. Это позволяет вам, например, отфильтровать определённый узел (или группу) в нескольких подсетях одной строкой.

Пример 1

Дано: сеть 172.16.16.0/24
Надо: отфильтровать первые 64 адреса (172.16.16.0-172.16.16.63)
Решение: 172.16.16.0 0.0.0.63

Пример 2

Дано: сети 172.16.16.0/24 и 172.16.17.0/24
Надо: отфильтровать адреса из обеих сетей
Решение: 172.16.16.0 0.0.1.255

Пример 3

Дано: Сети 172.16.0.0-172.16.255.0
Надо: отфильтровать хост с адресом 4 из всех подсетей
Решение: 172.16.16.0 0.0.255.4

Работа ACL в картинках

Гипотетическая сеть:

1) На маршрутизаторе RT1 на интерфейсе FE0/1 на вход у нас разрешено всё, кроме ICMP.

2) На маршрутизаторе RT2 на интерфейсе FE0/1 на выход запрещены SSH и TELNET

Тесты
кликабельны
1) Пинг с компьютера ПК1 на Сервер1

2) TELNET с компьютера ПК1 на Сервер1

3) SSH с компьютера ПК1 на Сервер2

4) Пинг с Сервера2 на ПК1

Дополнения

1) Правила, действующие на исходящий трафик (out) не будут фильтровать трафик самого устройства. То есть, если нужно запретить самой циске доступ куда-либо, то вам придётся на этом интерфейсе фильтровать входящий трафик (ответный оттуда, куда надо запретить доступ).

2) C ACL надо быть аккуратнее. При небольшой ошибке в правиле, неправильном порядке настройки или вообще плохо продуманном списке вы можете остаться без доступа к устройству.
Например, вы хотите закрыть доступ куда угодно для сети 172.16.6.0/24, кроме своего адреса 172.16.6.61 и задаёте правила так:

deny ip 172.16.6.0 0.0.0.255 any
permit ip host 172.16.6.61 any

Как только вы примените ACL на интерфейс, вы сразу потеряете доступ к маршрутизатору, потому что вы попадаете под первое правило и второе даже не проверяется.
Вторая неприятная ситуация, которая может с вами приключиться: под ACL попадёт трафик, который не должен был попасть.
Вообразите такую ситуацию: у нас в серверной есть FTP-сервер в пассивном режиме. Для доступа к нему вы открыли 21-й порт в ACL Servers-out . После первичного установления соединения FTP-сервер сообщает клиенту порт, по которому он готов передавать/принимать файлы, например, 1523-й. Клиент пытается установить TCP-соединение на этот порт, но натыкается на ACL Servers-out, где такого разрешения нету - так и кончается сказка про успешный трансфер. В нашем примере выше, где мы настраивали доступ на файловый сервер, мы открыли доступ только по 20 и 21-му, потому что для примера этого достаточно. В реальной жизни придётся повозиться. Немного примеров конфигурации ACL для распространенных случаев.

3) Из 2-го пункта вытекает очень похожая и интересная проблема.
Вздумалось вам, например повесить на интерфейс в интернет такие вот ACL:

access-list out permit tcp host 1.1.1.1 host 2.2.2.2 eq 80
access-list in permit tcp host 2.2.2.2 any eq 80

Казалось бы: хосту с адресом 1.1.1.1 разрешён доступ по 80-му порту на сервер 2.2.2.2 (первое правило). И обратно от сервера 2.2.2.2 разрешены соединения внутрь.
Но нюанс тут в том, что компьютер 1.1.1.1 устанавливает соединение НА 80-й порт, но С какого-то другого, например, 1054, то есть ответный пакет от сервера приходит на сокет 1.1.1.1:1054, не подпадает под правило в ACL на IN и отбрасывается ввиду неявного deny ip any any.
Чтобы избежать такой ситуации, и не открывать всем пучком порты, можно прибегнуть к такой хитрости в ACL на in:
permit tcp host 2.2.2.2 any established.

Подробности такого решения в одной из следующих статей.

4) Говоря про современный мир, нельзя обойти такой инструмент, как объектные группы (Object-group).

Допустим, надо составить ACL, выпускающий три определенных адреса в интернет по трем одинаковым портам c перспективой расширения количества адресов и портов. Как это выглядит без знания объектных групп:

ip access-list extended TO-INTERNET
permit tcp host 172.16.6.66 any eq 80
permit tcp host 172.16.6.66 any eq 8080
permit tcp host 172.16.6.66 any eq 443

Permit tcp host 172.16.6.67 any eq 80
permit tcp host 172.16.6.67 any eq 8080
permit tcp host 172.16.6.67 any eq 443

Permit tcp host 172.16.6.68 any eq 80
permit tcp host 172.16.6.68 any eq 8080
permit tcp host 172.16.6.68 any eq 443


При увеличении количества параметров сопровождать такой ACL становится всё труднее и труднее, легко ошибиться при настройке.
Зато, если обратиться к объектным группам, то это приобретает следующий вид:
object-group service INET-PORTS
description Ports allowed for some hosts
tcp eq www
tcp eq 8080
tcp eq 443

Object-group network HOSTS-TO-INET
description Hosts allowed to browse the net
host 172.16.6.66
host 172.16.6.67
host 172.16.6.68

Ip access-list extended INET-OUT
permit object-group INET-PORTS object-group HOSTS-TO-INET any


на первый взгляд несколько угрожающе выглядит, но если разобраться, то это очень удобно.

4) Очень полезную для траблшутинга информацию можно получить из вывода команды show ip access-lists %имя ACL% . Кроме собственно списка правил указанного ACL, эта команда показывает количество совпадений по каждому правилу.

msk-arbat-gw1#sh ip access-lists nat-inet
Extended IP access list nat-inet





(4 match(es))



А дописав в конце любого правила log , мы сможем получать сообщения о каждом совпадении в консоль. (последнее не работает в PT)

NAT

Network Address Translation - механизм в хозяйстве совершенно необходимый уже с 1994-го года. Много сессий об него сломано и пакетов потеряно.
Нужен он чаще всего для подключения вашей локальной сети к Интернету. Дело в том, что теоретически существует 255*255*255*255=4 228 250 625. 4 миллиарда адресов. Даже если бы у каждого жителя планеты был всего один компьютер, адресов бы уже не хватало. А тут разве что утюги к Интернету не подключаются. Умные люди сообразили это ещё в начале 90-х и как временное решение предложили разделить пространство адресов на публичные (белые) и приватные (частные, серые).
К последним относятся три диапазона:

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

Их вы свободно можете использовать в своей частной сети, и поэтому, разумеется, они будут повторяться. Как же быть с уникальностью? Кому будет отвечать WEB-сервер, которому пришёл запрос с обратным адресом 192.168.1.1? Ростелекому? Компании Татнефть? Или вашему комнатному Длинку? В большом интернете никто ничего не знает о приватных сетях - они не маршрутизируются.
Тут и выходит на сцену NAT. По большому счёту, это обман, подстава. На натирующем устройстве ваш приватный адрес, грубо говоря, просто подменяется на белый адрес, который и будет фигурировать далее в пакете, пока он путешествует до WEB-сервера. А вот белые адреса очень даже хорошо маршрутизируются, и пакет точно вернётся обратно на натирующее устройство.
Но как оно в свою очередь поймёт, что с ним делать дальше? Вот с этим и разберёмся.

Типы NAT

Статический

В этом случае один внутренний адрес преобразуется в один внешний. И при этом все запросы, приходящие на внешний адрес будут транслироваться на внутренний. Словно бы этот хост и является обладателем этого белого IP-адреса.

Настраивается следующей командой:

Router (config)# ip nat inside source static 172.16.6.5 198.51.100.2

Что происходит:
1) Узел 172.16.6.5 обращается WEB-серверу. Он отправляет IP-пакет, где в качестве адреса получателя стоит 192.0.2.2, а отправителя 172.16.6.5.

2) По корпоративной сети пакет доставляется к шлюзу 172.16.6.1, где и настроен NAT

3) Согласно настроенной команде, маршрутизатор снимает текущий заголовок IP и меняет его на новый, где в качестве адреса отправителя уже фигурирует белый адрес 198.51.100.2.


4) По большому Интернету обновлённый пакет достигает сервера 192.0.2.2.

5) Тот видит, что ответ надо слать на 198.51.100.2 И подготавливает ответный IP-пакет. В качестве адреса отправителя собственно адрес сервера 192.0.2.2, адрес назначения - 198.51.100.2


6) Пакет обратно летит через Интернет, причём не факт, что тем же путём.

7) На натирующем устройстве указано, что все запросы на адрес 198.51.100.2 нужно перенаправлять на 172.16.6.5. Маршрутизатор снова раздевает спрятанный внутри TCP-сегмент и задаёт новый IP-заголовок (адрес отправителя не меняется, адрес назначения 172.16.6.5).


8) По внутренней сети пакет возвращается инициатору, которому даже и невдомёк, какие чудеса с ним творились на границе.
И так будет с каждым.
При этом если соединение инициируется из Интернета, пакеты автоматически, проходя через натирующее устройство, попадают на внутренний хост.

Такой подход бывает полезным, когда у вас есть сервер внутри вашей сети, к которому необходим полный доступ извне. Разумеется, этот вариант вы не можете использовать, если хотите триста хостов выпустить в Интернет через один адрес. Такой вариант NAT’а никак не поможет сохранить белые IP-адреса, но тем не менее он бывает полезен.

Динамический

У вас есть пул белых адресов, например, провайдер выделил вам сеть 198.51.100.0/28 c 16-ю адресами. Два из них (первый и последний) - адрес сети и широковещательный, ещё два адреса назначаются на оборудование для обеспечения маршрутизации. 12 оставшихся адресов вы можете использовать для NAT’а и выпускать через них своих пользователей.
Ситуация похожа на статический NAT - один приватный адрес транслируется на один внешний, - но теперь внешний не чётко зафиксирован, а будет выбираться динамически из заданного диапазона.
Настраивается он так:
Router(config)#ip nat pool lol_pool 198.51.100.3 198.51.103.14

Задали пул (диапазон) публичных адресов, из которого будет выбираться адрес для натирования
Router(config)#access-list 100 permit ip 172.16.6.0 0.0.0.255 any

Задаём список доступа, который пропускает все пакеты с адресом источника 172.16.6.х, где х варьируется 0-255.
Router(config)#ip nat inside source list 100 pool lol_pool

Этой командой мы стыкуем созданный ACL и пул.

Этот вариант тоже не универсальный, своих 300 пользователей вы так же не сможете выпустить всех в Интернет, если у вас нет 300 внешних адресов. Как только белые адреса исчерпаются, никто новый уже не сможет получить доступ в Интернет. При этом те пользователи, что уже успели отхватить себе внешний адрес, будут работать. Скинуть все текущие трансляции и освободить внешний адреса вам поможет команда clear ip nat translation *
Помимо динамического выделения внешних адресов, этот динамически NAT отличается от статического тем, что без отдельной настройки проброса портов уже невозможно внешнее соединение на один из адресов пула.

Many-to-One

Следующий тип имеет несколько названий: NAT Overload, Port Address Translation (PAT), IP Masquerading, Many-to-One NAT.
Последнее название говорит само за себя - через один внешний адрес выходит в мир много приватных. Это позволяет решить проблему с нехваткой внешних адресов и выпустить в мир всех желающих.
Тут надо бы дать пояснение, как это работает. Как два приватных адреса транслируются в один можно представить, но как маршрутизатор понимает кому нужно переслать пакет, вернувшийся из Интернета на этот адрес?
Всё очень просто:
Предположим, что от двух хостов из внутренней сети приходят пакеты на натирующее устройство. Оба с запросом к WEB-серверу 192.0.2.2.
Данные от хостов выглядят так:

Маршрутизатор расчехляет IP-пакет от первого хоста, извлекает из него TCP-сегмент, распечатывает его и узнаёт, с какого порта устанавливается соединение. У него есть внешний адрес 198.51.100.2, на который будет меняться адрес из внутренней сети.
Далее он выбирает свободный порт, например, 11874. И что он делает дальше? Все данные уровня приложений он упаковывает в новый TCP сегмент, где в качестве порта назначения по-прежнему остаётся 80 (именно на него ждёт коннектов WEB-сервер), а порт отправителя меняется с 23761 на 11874. Этот TCP-сегмент инкапсулируется в новый IP-пакет, где меняется IP-адрес отправителя с 172.16.6.5 на 198.51.100.2.
То же самое происходит для пакета от второго хоста, только выбирается следующий свободный порт, например 11875. “Свободный” означает, что он ещё не занят другими такими соединениями.
Данные, которые отправляются в интернет, теперь буду выглядеть так.

В свою NAT-таблицу он заносит данные отправителей и получателей

Для WEB-сервера - это два совершенно разных запроса, которые он должен обработать каждый индивидуально. После этого он отсылает ответ, который выглядит так:

Когда один из этих пакетов доходит до нашего маршрутизатора, тот сопоставляет данные в этом пакете со своими записями в NAT-таблице. Если совпадение найдено, происходит обратная процедура - пакету и TCP сегменту возвращаются его изначальные параметры только в качестве назначения:

И теперь пакеты доставляется по внутренней сети компьютерам-инициаторам, которым и невдомёк даже, что где-то с их данными так жёстко обошлись на границе.

Каждое ваше обращение - это отдельное соединение. То есть попытались вы открыть WEB-страницу - это протокол HTTP, использующий порт 80. Для этого ваш компьютер должен установить TCP-сессию с удалённым сервером. Такая сессия (TCP или UDP) определяется двумя сокетами: локальный IP-адрес: локальный порт и удалённый IP-адрес: удалённый порт. В обычной ситуации у вас устанавливается одно соединение компьютер-сервер, в случае же NATа соединения будет как бы два:, маршрутизатор-сервер и компьютер думает, что у него есть сессия компьютер-сервер.

Настройка отличается совершенно незначительно: добавочным словом overload:

Router(config)#access-list 101 permit 172.16.4.0 0.0.0.255
Router(config)#ip nat inside source list 101 interface fa0/1 overload

При этом, разумеется, сохраняется возможность настроить пул адресов:
Router(config)#ip nat pool lol_pool 198.51.100.2 198.51.103.14
Router(config)#access-list 100 permit 172.16.6.0 0.0.0.255
Router(config)#ip nat inside source list 100 pool lol_pool overload

Перенаправление портов

Иначе говорят ещё проброс портов или mapping.
Когда мы только начали говорить про NAT, трансляция у нас была один-в-один и все запросы, приходящие извне автоматически перенаправлялись на внутренний хост. Таким образом можно было бы выставить сервер наружу в Интернет.
Но если у вас нет такой возможности - вы ограничены в белых адресах, или не хотите выставлять всем пучком портов его наружу, что делать?
Вы можете указать, что все запросы, приходящие на конкретный белый адрес и конкретный порт маршрутизатора, должны быть перенаправлены на нужный порт нужного внутреннего адреса.
Router(config)#ip nat inside source static tcp 172.16.0.2 80 198.51.100.2 80 extendable

Применение данной команды означает, что TCP-запрос, пришедший из интернета на адрес 198.51.100.2 по порту 80, будет перенаправлен на внутренний адрес 172.16.0.2 на тот же 80-й порт. Разумеется, вы можете пробрасывать и UDP и делать перенаправление с одного порта на другой. Это, например, может оказаться полезным, если у вас есть два компьютера, к которым нужен доступ по RDP извне. RDP использует порт 3389. Один и тот же порт вы не можете пробросить на разные хосты (при использовании одного внешнего адреса). Поэтому вы можете сделать так:
Router(config)# ip nat inside source static tcp 172.16.6.61 3389 198.51.100.2 3389
Router(config)# ip nat inside source static tcp 172.16.6.66 3389 198.51.100.2 3398

Тогда, чтобы попасть на компьютер 172.16.6.61 вы запускаете RDP-сессию на порт 198.51.100.2:3389, а на 172.16.6.66 - 198.51.100.2:3398. Маршрутизатор сам раскидает всё, куда надо.

Кстати, эта команда - частный случай самой первой: ip nat inside source static 172.16.6.66 198.51.100.2. Только в этом случае речь идёт о пробросе всего трафика, а в наших примерах - конкретных портов протокола TCP.

Вот так в общих чертах фунциклирует NAT. Про его особенности, плюсы/минусы написано куча статей, но не отметить их нельзя.

Слабости и силости NAT

+

- В первую очередь NAT позволяет сэкономить публичные IP-адреса. Собственно для этого он и был создан. Через один адрес, теоретически можно выпустить больше 65000 серых адресов (по количеству портов).
- Во-вторых , PAT и динамический NAT является в какой-то степени файрволом, препятствуя внешним соединениям доходить до конечных компьютеров, на которых может не оказаться своего файрвола и антивируса. Дело в том, что если извне на натирующее устройство приходит пакет, который тут не ожидается или не разрешён, он просто отбрасывается.
Чтобы пакет был пропущен и обработан, должны выполниться следующие условия:
1) В NAT-таблице должна быть запись для этого внешнего адреса, указанного как адрес отправителя в пакете
И
2) Порт отправителя в пакете должен совпадать с портом для этого белого адреса в записи
И
3) Порт назначения в пакете, совпадает с портом в записи.
ИЛИ
Настроен проброс портов.
Но не нужно рассматривать NAT именно как файрвол - это не более, чем дополнительная его плюшка.

- В-третьих , NAT скрывает от посторонних глаз внутреннюю структуру вашей сети - при трассировке маршрута извне вы не увидите ничего далее натирующего устройства.

-

Есть у NAT’а и минусы. Самые ощутимые из них, пожалуй, следующие:
- Некоторые протоколы не могут работать через NAT без костылей. Например, FTP или протоколы туннелирования (несмотря на то, как просто я настроил FTP в лабораторке, в реальной жизни это может создать кучу проблем)
- Другая проблема кроется в том, с одного адреса идёт много запросов на один сервер. Многие были свидетелем этого, когда заходишь на какой-нибудь Rapidshare, а он говорит, что с вашего IP уже было соединение, вы думаете, что “врёт, собака”, а это ваш сосед уже сосет. По этой же причине бывали проблемы c ICQ, когда сервера отказывали в регистрации.
- Не очень актуальная сейчас проблема: нагрузка на процессор и оперативную память. Поскольку объём работы довольно велик по сравнению с простой маршрутизацией (это надо не просто глянуть заголовок IP, надо его снять, TCP-заголовок снять, в таблицу занести, новые заголовки прикрутить) в мелких конторах с этим бывают проблемы.
Я сталкивался с такой ситуацией.
Одно из возможных решений - вынести функцию NAT на отдельный ПК либо на специализированное устройство, например Cisco ASA.
Для больших игроков, у которых маршрутизаторы ворочают по 3-4 BGP full-view, сейчас это не составляет проблем.

Что ещё нужно знать?
- NAT применяется в основном для обеспечения доступа в Интернет хостам с приватными адресами. Но бывает и иное применение - связь между двумя частными сетями с пересекающимися адресными пространствами.
Например, ваша компания покупает себе филиал в Актюбинске. У вас адресация 10.0.0.0-10.1.255.255, а у них 10.1.1.0-10.1.10.255. Диапазоны явно пересекаются, настроить маршрутизацию никак не получится, потому что один и тот же адрес может оказаться и в Актюбинске и у вас в штаб-квартире.
В таком случае на месте стыка настраивается NAT. Поскольку серых адресов у нас не мерено, можно выделить, к примеру, диапазон 10.2.1.0-10.2.10.255 и делать трансляцию один-в-один:
10.1.1.1-10.2.1.1
10.1.1.2-10.2.1.2

10.1.10.255-10.2.10.255

В больших игрушках для взрослых NAT может быть реализован на отдельной плате (и часто так и есть) и без неё не заработает. А на офисных железках, напротив, есть почти всегда.

С повсеместным внедрением IPv6 необходимость в NAT’e будет сходить на нет. Уже сейчас большие заказчики начинают интересоваться функционалом NAT64 - это когда у вас выход в мир через IPv4, а внутренняя сеть уже на IPv6

Разумеется, это лишь поверхностный взгляд на NAT и есть ещё море нюансов, не утонуть в котором вам поможет самообразование.

Практика NAT

Чего от нас требует реальность?
1) Сеть управления не имеет доступа в интернет вообще
2) Хосты из сети ПТО имеют доступ только к профильным сайтам, например, Linkmeup.ru
3) Милым дамам из бухгалтерии нужно вырубить окно в мир клиент-банков.
4) ФЭО не выпускать никуда, за исключением финансового директора
5) В сети Other наш компьютер и компьютер админа - им дадим полный доступ в интернет. Всем остальным можно открывать по письменному запросу.
6) Не забудем про филиалы в Питере и в Кемерово. Для простоты настроим полный доступ для эникиев из этих подсетей.
7) С серверами отдельная песня. Для них мы настроим перенаправление портов. Всё, что нам нужно:
а) WEB-сервер должен быть доступен по 80-му порту
б) Почтовый сервер по 25-му и 110-му
в) Файловый сервер доступен из мира по FTP.
8) Компьютеры админа и наш должны быть доступны из Интернета по RDP. Вообще-то это неправильный путь - для удалённого подключения нужно использовать VPN-подключение и уже будучи в локальной сети использовать RDP, но это тема отдельной совсем другой статьи.

Сначала подготовим тестовую площадку:

Подключение к Интернету будет организовано через существующий линк, который предоставляет провайдер.
Он уходит в сеть провайдера. Напоминаем, что всё в этом облаке - это абстрактная сеть, которая на деле может состоять из десятков маршрутизаторов и сотен коммутаторов. Но нам нужно нечто управляемое и предсказуемое, поэтому водружаем сюда ещё маршрутизатор. С одной стороны в него линк из коммутатора, с другой сервера в Интернете.

Сервера нам понадобятся следующие:
1. Два клиент-банка для бухгалтеров (sperbank.ru, mmm-bank.ru)
2. Linkmeup.ru для ПТОшников
3. яндекс (yandex.ru)

Для такого подключения мы поднимем ещё один влан на msk-arbat-gw1. Его номер, разумеется, согласуется с провайдером. Пусть это будет VLAN 6
Предположим, провайдер предоставляет нам подсеть 198.51.100.0/28 . Первые два адреса используются для организации линка (198.51.100.1 и 198.51.100.2), а оставшиеся мы используем, как пул для NAT’a. Впрочем, никто совершенно нам не мешает использовать и адрес 198.51.100.2 для пула. Так и сделаем: пул: 198.51.100.2-198.51.100.14
Для простоты предположим, что публичные сервера у нас находятся в одной подсети:
192.0.2.0/24 .
Как настроить линк и адреса вы вполне уже в курсе.
Поскольку у нас только один маршрутизатор в сети провайдера, и все сети подключены непосредственно к нему, то необходимости настраивать маршрутизацию нету.
А вот наш msk-arbat-gw1 должен знать куда отправлять пакеты в Интернет, поэтому нам нужен маршрут по умолчанию:

msk-arbat-gw1(config)# ip route 0.0.0.0 0.0.0.0 198.51.100.1

Теперь по порядку

Во первых настроим пул адресов

msk-arbat-gw1(config)# ip nat pool main_pool 198.51.100.2 198.51.100.14 netmask 255.255.255.240

Теперь собираем ACL:
msk-arbat-gw1(config)# ip access-list extended nat-inet

1) Сеть управления

не имеет доступа в интернет вообще
Готово

2) Хосты из сети ПТО

Имеют доступ только к профильным сайтам, например, Linkmeup.ru
msk-arbat-gw1(config-ext-nacl)# permit tcp 172.16.3.0 0.0.0.255 host 192.0.2.2 eq 80

3)Бухгалтерия

Даём доступ всем хостам на оба сервера
msk-arbat-gw1(config-ext-nacl)# permit ip 172.16.5.0 0.0.0.255 host 192.0.2.3
msk-arbat-gw1(config-ext-nacl)# permit ip 172.16.5.0 0.0.0.255 host 192.0.2.4

4) ФЭО

Даём разрешение только финансовому директору - это только один хост.
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.4.123 any

5) Other

Наши компьютеры с полным доступом
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.6.61 any
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.6.66 any

6) Филиалы в Санкт-Петербурге и Кемерово

Пусть адреса эникиев будут одинаковыми: 172.16.х.222
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.16.222 any
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.17.222 any
msk-arbat-gw1(config-ext-nacl)# permit ip host 172.16.24.222 any

Вот так выглядит сейчас ACL полностью:
ip access-list extended nat-inet
remark PTO
permit tcp 172.16.3.0 0.0.0.255 host 192.0.2.2 eq www
remark ACCOUNTING
permit ip 172.16.5.0 0.0.0.255 host 192.0.2.3
permit ip 172.16.5.0 0.0.0.255 host 192.0.2.4
remark FEO
permit ip host 172.16.4.123 any
remark IAM
permit ip host 172.16.6.61 any
remark ADMIN
permit ip host 172.16.6.66 any
remark SPB_VSL_ISLAND
permit ip host 172.16.16.222 any
remark SPB_OZERKI
permit ip host 172.16.17.222 any
remark KMR
permit ip host 172.16.24.222 any

Запускаем:

msk-arbat-gw1(config)# ip nat inside source list nat-inet pool main_pool overload

Но счастье не будет полным без настройки интерфейсов:
На внешнем интерфейсе нужно дать команду ip nat outside
На внутреннем: ip nat inside
msk-arbat-gw1(config)# int fa0/0.101
msk-arbat-gw1(config)# int fa0/0.102
msk-arbat-gw1(config-subif)# ip nat inside
msk-arbat-gw1(config)# int fa0/0.103
msk-arbat-gw1(config-subif)# ip nat inside
msk-arbat-gw1(config)# int fa0/0.104
msk-arbat-gw1(config-subif)# ip nat inside

Msk-arbat-gw1(config)# int fa0/1.6
msk-arbat-gw1(config-subif)# ip nat outside

Это позволит маршрутизатору понять откуда ждать пакеты, которые нужно будет обработать и куда их потом слать.

Чтобы сервера в интернете были доступны по доменному имени, нам бы неплохо было обзавестись DNS-сервером в нашей сети:


Естественно его, нужно прописать на тех устройствах, с которых будем проверять доступ:

Show must go on!

С компьютера админа доступно всё:

Из сети ПТО есть доступ только на сайт linkmeup.ru по 80-му порту (HTTP):



В сети ФЭО в мир выходит только 4.123 (финдиректор)



В бухгалтерии работают только сайты клиент-банков. Но, поскольку разрешение дано полностью на протокол IP, то их можно и пинговать:


7) Cервера

Тут нам нужно настроить проброс портов, чтобы к ним можно было обращаться из Интернета:

a) Веб-сервер

msk-arbat-gw1(config)# ip nat inside source static tcp 172.16.0.2 80 198.51.100.2 80

Сразу проверяем, например, мы можем это делать с тестового ПК c аресом 192.0.2.7.
Сейчас ничего не заработает, потому что для сети серверов у нас не настроен интерфейс на msk-arbat-gw1:
msk-arbat-gw1(config)# int fa0/0.3
msk-arbat-gw1(config-subif)# ip nat inside

А теперь:

б) Файловый сервер

msk-arbat-gw1(config)# ip nat inside source static tcp 172.16.0.3 20 198.51.100.3 20
msk-arbat-gw1(config)# ip nat inside source static tcp 172.16.0.3 21 198.51.100.3 21

Вот для этого в ACL Servers-out мы открывали также и 20-21-й порты для всех

в) Почтовый сервер

msk-arbat-gw1(config)# ip nat inside source static tcp 172.16.0.4 25 198.51.100.4 25
msk-arbat-gw1(config)# ip nat inside source static tcp 172.16.0.4 110 198.51.100.4 110

Проверить также не сложно. Следуйте инструкциям:
Сначала настраиваем почтовый сервер. Указываем домен и создаём двух пользователей.

Настраиваем компьютер из нашей сети:

Из внешней:

Готовим письмо:

На локальном хосте нажимаем Receive:

8) Доступ по RDP к компьютерам админа и нашему

msk-arbat-gw1(config)# ip nat inside source static tcp 172.16.6.61 3389 198.51.100.10 3389
msk-arbat-gw1(config)# ip nat inside source static tcp 172.16.6.66 3389 198.51.100.10 3398

Безопасность

На последок одно замечание. Скорее всего натирующее устройство, у вас смотрит своим ip nat outside интерфейсом наружу - в Интернет. Поэтому на этот интерфейс не помешало бы повешать ACL, где вы запретите, разрешите, то что вам нужно. На этом вопросе не будем останавливаться уже в данной статье.

На этом первое знакомство с технологией NAT можно считать законченным.
В качестве ещё одного ДЗ ответьте на вопрос, почему нет доступа в Интернет с компьютеров эникиев в Питере и в Кемерово. Ведь мы их добавили уже в список доступа.

Количества публичных IPv4-адресов недостаточно, чтобы назначить уникальные адреса всем устройствам, подключённым к Интернету. В большинстве случаев, сети реализуются с использованием частных IPv4-адресов в соответствии с RFC 1918. На рис. 1 показан диапазон адресов, включённых в RFC 1918. Вероятнее всего, компьютеру, на котором вы сейчас просматриваете материал учебного курса, назначен частный адрес.

Эти частные адреса используются в рамках организации или объекта с целью обеспечения взаимодействия устройств на локальном уровне. Но поскольку эти адреса не определяют конкретную компанию или организацию, частные IPv4-адреса нельзя использовать для маршрутизации через Интернет. Для того, чтобы разрешить устройству с частным IPv4-адресом доступ к устройствам и ресурсам вне локальной сети, частный адрес сначала необходимо преобразовать в публичный адрес.

Как показано на рис. 2, NAT обеспечивает преобразование частных адресов в публичные адреса. Это позволяет устройству с частным IPv4-адресом получать доступ к ресурсам вне своей частной сети, включая ресурсы, найденные в Интернете. В сочетании с частными IPv4-адресами, NAT продемонстрировал свою целесообразность в отношении экономии публичных IPv4-адресов. Один публичный IPv4-адрес может совместно использоваться сотнями, даже тысячами устройств, для каждого из которых настроен уникальный частный IPv4-адрес.

Без использования NAT адресное пространство IPv4 было бы исчерпано задолго до наступления 2000 года. Несмотря на свои преимущества, NAT имеет ряд ограничений, которые будут подробно рассматриваться далее в этой главе. Решением проблемы исчерпания пространства IPv4-адресов и ограничений NAT является окончательный переход на IPv6.

Характеристики NAT

Преобразование сетевых адресов NAT используется в различных целях, однако основной задачей данного механизма является сохранение публичных IPv4-адресов. Это достигается путём разрешения сетям использовать частные IPv4-адреса для внутреннего взаимодействия и преобразования их в публичные адреса только в случае необходимости. Дополнительное преимущество NAT - повышение степени конфиденциальности и безопасности сети - объясняется тем, что данный механизм скрывает внутренние IPv4-адреса от внешних сетей.

Для маршрутизатора с поддержкой NAT можно настроить один или несколько действующих публичных IPv4-адресов. Эти публичные адреса известны как пул адресов NAT. Когда внутреннее устройство отправляет трафик за пределы сети, маршрутизатор с поддержкой NAT преобразует внутренний IPv4-адрес устройства в публичный адрес из пула NAT. Внешним устройствам кажется, что весь трафик, входящий в сеть и выходящий из неё, использует публичные IPv4-адреса из предоставленного пула адресов.

Маршрутизатор NAT обычно работает на границе тупиковой сети. Тупиковая сеть - это сеть, использующая единственное соединение с соседней сетью, один входящий маршрут и один исходящий маршрут. В примере, показанном на рисунке, R2 является пограничным маршрутизатором. С точки зрения интернет-провайдера, маршрутизатор R2 создаёт тупиковую сеть.

Когда устройству в тупиковой сети требуется соединение с устройством вне его сети, пакет пересылается пограничному маршрутизатору. Пограничный маршрутизатор выполняет процесс NAT, преобразуя внутренний частный адрес устройства в публичный, внешний, маршрутизируемый адрес.

Примечание . Подключение к сети интернет-провайдера может также использовать частный адрес или публичный адрес, совместно используемый клиентами поставщика. В рамках рассматриваемой темы в качестве примера приведён публичный адрес.

В терминологии NAT под «внутренней сетью» подразумевается набор сетей, задействованных в преобразовании. Термин «внешняя сеть» относится ко всем остальным сетям.

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

В NAT предусмотрено 4 типа адресов:

  • внутренний локальный адрес;
  • внутренний глобальный адрес;
  • внешний локальный адрес;
  • внешний глобальный адрес.

При определении используемого типа адреса важно помнить, что терминология NAT всегда применяется с точки зрения устройства с преобразуемым адресом:

  • Внутренний адрес - это адрес устройства, преобразуемый механизмом NAT.
  • Внешний адрес - это адрес устройства назначения.

В рамках NAT по отношению к адресам также используется понятие локальности или глобальности:

  • Локальный адрес - это любой адрес, появляющийся во внутренней части сети.
  • Глобальный адрес - это любой адрес, появляющийся во внешней части сети.

На рисунке внутренним локальным адресом PC1 является 192.168.10.10. С точки зрения PC1 веб-сервер использует внешний адрес 209.165.201.1. Когда пакеты отправляются из PC1 по глобальному адресу веб-сервера, внутренний локальный адрес PC1 преобразуется в 209.165.200.226 (внутренний глобальный адрес). Адрес внешнего устройства обычно не преобразуется, так как этот адрес обычно уже является публичным IPv4-адресом.

Обратите внимание, что для PC1 используются разные локальный и глобальный адреса, а для веб-сервера в обоих случаях используется один публичный IPv4-адрес. С точки зрения веб-сервера трафик, исходящий от PC1, представляется поступающим с адреса 209.165.200.226, внутреннего глобального адреса.

Маршрутизатор NAT (R2 на рисунке) представляет собой точку разграничения между внутренней и внешней сетями, а также между локальными и глобальными адресами.

Термины «внутренний» и «внешний» используются в сочетании с терминами «локальный» и «глобальный», когда речь идёт о конкретных адресах. На рисунке маршрутизатор R2 настроен на использование механизма NAT. Он использует пул публичных адресов, назначаемых внутренним узлам.

  • Внутренний локальный адрес - это адрес источника, видимый из внутренней сети. На рисунке PC1 назначен IPv4-адрес 192.168.10.10. Это внутренний локальный адрес PC1.
  • Внутренний глобальный адрес - это адрес источника, видимый из внешней сети. На рисунке, когда PC1 отправляет трафик веб-серверу с адресом 209.165.201.1, R2 преобразует внутренний локальный адрес во внутренний глобальный адрес. В этом случае R2 меняет исходный IPv4-адрес с 192.168.10.10 на 209.165.200.226. В терминологии NAT, внутренний локальный адрес 192.168.10.10 преобразуется во внутренний глобальный адрес 209.165.200.226.
  • Внешний глобальный адрес - это адрес назначения, видимый из внешней сети. Это глобально маршрутизируемый IPv4-адрес, назначенный узлу в Интернете. Например, веб-сервер доступен по IPv4-адресу 209.165.201.1. В большинстве случаев внешний локальный и внешний глобальный адреса совпадают.
  • Внешний локальный адрес - это адрес назначения, видимый из внутренней сети. В этом примере PC1 отправляет трафик веб-серверу с IPv4-адресом 209.165.201.1. В редких случаях этот адрес может отличаться от глобально маршрутизируемого адреса назначения.

На рисунке показано, как адресуется трафик, отправленный внутренним компьютером внешнему веб-серверу через маршрутизатор с поддержкой NAT. Также показано, как первоначально адресуется и преобразуется обратный трафик.

Примечание . Использование внешнего локального адреса не рассматривается в материале данного учебного курса.

Типы преобразования сетевых адресов NAT

Существуют три механизма преобразования сетевых адресов:

  • Статическое преобразование сетевых адресов (статический NAT) - это взаимно-однозначное соответствие между локальным и глобальным адресами.
  • Динамическое преобразование сетевых адресов (динамический NAT) - это сопоставление адресов по схеме «многие ко многим» между локальными и глобальными адресами.
  • Преобразование адресов портов (PAT) - это сопоставление адресов по схеме «многие к одному» между локальными и глобальным адресами. Данный метод также называется перегрузкой (NAT с перегрузкой).

Статическое преобразование сетевых адресов (NAT)

Статический NAT использует сопоставление локальных и глобальных адресов по схеме «один в один». Эти соответствия задаются администратором сети и остаются неизменными.

На рисунке для маршрутизатора R2 настроены статические соответствия для внутренних локальных адресов Svr1, PC2 и PC3. Когда эти устройства отправляют трафик в Интернет, их внутренние локальные адреса преобразуются в заданные внутренние глобальные адреса. Для внешних сетей эти устройства используют публичные IPv4-адреса.

Метод статического преобразования сетевых адресов особенно полезен для веб-серверов или устройств, которые должны иметь постоянный адрес, доступный из Интернета - например, для веб-сервера компании. Статический NAT также подходит для устройств, которые должны быть доступны авторизованному персоналу, работающему вне офиса, но при этом оставаться закрытыми для общего доступа через Интернет. Например, сетевой администратор может с PC4 подключиться с помощью SSH к внутреннему глобальному адресу Svr1 (209.165.200.226). Маршрутизатор R2 преобразует этот внутренний глобальный адрес во внутренний локальный адрес и подключает сеанс администратора к Svr1.

Для статического NAT требуется достаточное количество публичных адресов, доступных для общего количества одновременных сеансов пользователей.

Динамическое преобразование адресов NAT

Метод динамического преобразования сетевых адресов (динамический NAT) использует пул публичных адресов, которые присваиваются в порядке живой очереди. Когда внутреннее устройство запрашивает доступ к внешней сети, динамический NAT присваивает доступный публичный IPv4-адрес из пула.

На рисунке PC3 получает доступ к Интернету, используя первый доступный адрес в пуле динамического NAT. Другие адреса по-прежнему доступны для использования. Аналогично статическому NAT, для динамического NAT требуется достаточное количество публичных адресов, способное обеспечить общее количество одновременных сеансов пользователей.

Преобразование адресов портов (PAT)

Также называемое NAT с перегрузкой, сопоставляет множество частных IPv4-адресов одному или нескольким публичным IPv4-адресам. Именно этот метод реализуется большинством домашних маршрутизаторов. Интернет-провайдер назначает маршрутизатору один адрес, но несколько членов семьи могут одновременно получать доступ в Интернет. NAT с нагрузкой - это наиболее распространенный метод преобразования сетевых адресов.

С помощью данного метода множество адресов могут быть сопоставлены одному или нескольким адресам, поскольку каждый частный адрес также отслеживаются по номеру порта. Если устройство начинает сеанс TCP/IP, оно создаёт значение порта TCP или UDP для источника, чтобы уникальным образом определить сеанс. Когда маршрутизатор NAT получает пакет от клиента, он использует свой номер порта источника, чтобы уникальным образом определить конкретное преобразование NAT.

PAT гарантирует, что устройства будут использовать разные номера портов TCP для каждого сеанса взаимодействия с сервером в Интернете. При возвращении ответа от сервера номер порта источника, который становится номером порта назначения при обратной передаче, определяет, какому устройству маршрутизатор перешлет соответствующие пакеты. Процесс PAT также убеждается в том, что входящие пакеты действительно были запрошены, повышая таким образом степень безопасности сеанса.

Для управления анимацией используйте кнопки «Воспроизведение» и «Пауза» на рисунке.

Анимация иллюстрирует процесс преобразования адресов портов (PAT). Для того, чтобы различать преобразования, механизм PAT добавляет уникальные номера портов источника к внутреннему глобальному адресу.

Поскольку маршрутизатор R2 обрабатывает каждый пакет, он использует номер порта (в рассматриваемом примере 1331 и 1555) для идентификации устройства, с которого поступил пакет. Адрес источника (SA) - это внутренний локальный адрес с добавленным назначенным номером порта TCP/IP. Адрес назначения (DA) - это внешний локальный адрес с добавленным номером порта службы. В данном примере порт службы равен 80: HTTP.

Для адреса источника маршрутизатор R2 преобразует внутренний локальный адрес во внутренний глобальный адрес с добавленным номером порта. Адрес назначения не меняется, но теперь он становится внешним глобальным IP-адресом. Когда веб-сервер отвечает, путь проходится снова, только в обратном порядке.

В предыдущем примере номера портов клиента, 1331 и 1555, не изменялись на маршрутизаторе с поддержкой NAT. Данный сценарий не очень правдоподобен, поскольку велика вероятность того, что эти номера портов уже используются для других активных сеансов.

Преобразование PAT пытается сохранить оригинальный порт источника. В том случае, если оригинальный порт источника уже используется, PAT назначает первый доступный номер порта, начиная с начала соответствующей группы портов - 0-511, 512-1023 или 1024-65535. Если доступных портов больше нет, а в пуле адресов есть несколько внешних адресов, PAT переходит к следующему адресу, пытаясь выделить оригинальный порт источника. Данный процесс продолжается до тех пор, пока не исчерпаются как доступные порты, так и внешние IP-адреса.

Для ознакомления с принципом работы PAT нажмите кнопку «Воспроизведение» на рисунке.

В анимации узлы выбирают один и тот же номер порта - 1444. Это допустимо для внутреннего адреса, поскольку узлам назначены уникальные частные IP-адреса. Но на маршрутизаторе с поддержкой NAT номера портов необходимо изменить. В противном случае пакеты от двух различных узлов выходили бы из R2 с одинаковым адресом источника. В рассматриваемом примере в процессе преобразования PAT второму адресу узла назначается следующий доступный порт (1445).

Сравнение NAT и PAT

Сформулированные ниже различия между NAT и PAT помогут понять особенности каждого из этих методов преобразования сетевых адресов.

Как показано на рисунке, NAT преобразует IPv4-адреса, исходя из схемы 1:1 для частных IPv4-адресов и публичных IPv4-адресов. В то же время, PAT меняет и адрес, и номер порта.

NAT пересылает входящие пакеты по их внутреннему назначению, используя входящий IPv4-адрес источника, предоставленный узлом в публичной сети. При использовании PAT обычно задействуется только один или небольшое количество публично представленных IPv4-адресов. Входящие пакеты из публичной сети направляются адресатам в частной сети с помощью таблицы маршрутизатора NAT. Данная таблица отслеживает пары публичных и частных портов, что называется отслеживанием соединений.

Пакеты без сегмента уровня 4

Что же происходит с пакетами IPv4, передающими данные, не являющиеся сегментом TCP или UDP? Данные пакеты не содержат номера порта уровня 4. PAT преобразует большинство основных протоколов, передаваемых с помощью IPv4 и не использующих TCP или UDP, в протокол транспортного уровня. Самым распространённым среди таких протоколов является протокол ICMPv4. Процесс преобразования PAT обрабатывает каждый из этих протоколов по-разному. Например, сообщения запросов ICMPv4, эхо-запросы и эхо-ответы содержат идентификатор запроса (Query ID). ICMPv4 использует идентификатор запроса (Query ID), чтобы определить эхо-запрос с соответствующим эхо-ответом. Идентификатор запроса увеличивается с каждым отправленным эхо-запросом. PAT использует идентификатор запроса вместо номера порта уровня 4.

Примечание . Другие сообщения ICMPv4 не используют идентификатор запроса (Query ID). Эти сообщения и другие протоколы, не использующие номера портов TCP и UDP, могут отличаться друг от друга и не рассматриваются в рамках материала настоящего учебного курса.

Настройка NAT

Настройка статического NAT

Статическое преобразование сетевых адресов NAT - это взаимно-однозначное сопоставление внутреннего и внешнего адресов. Статический NAT позволяет внешним устройствам инициировать подключение к внутренним устройствам с помощью статически назначенного публичного адреса. Например, внутреннему веб-серверу может быть сопоставлен внутренний глобальный адрес, определенный таким образом, чтобы он был доступен из внешних сетей.

На рис. 1 показана внутренняя сеть, содержащая веб-сервер с частным IPv4-адресом. На маршрутизаторе R2 настроен статический NAT, чтобы предоставить доступ к веб-серверу устройствам из внешней сети (Интернет). Клиент из внешней сети обращается к веб-серверу, используя публичный IPv4-адрес. Статический NAT преобразует публичный IPv4-адрес в частный IPv4-адрес.

Настройка статического NAT сопряжена с двумя основными задачами.

Шаг 1. Первой задачей является создание соответствия между внутренним локальным и внутренним глобальным адресами. Например, на рис. 1 в качестве статического преобразования NAT настроены внутренний локальный адрес 192.168.10.254 и внутренний глобальный адрес 209.165.201.5.

Шаг 2. После настройки соответствия интерфейсы, участвующие в преобразовании, настраиваются как внутренние или внешние относительно NAT. В этом примере интерфейс Serial 0/0/0 маршрутизатора R2 является внутренним, а Serial 0/1/0 - внешним интерфейсом.

Пакеты, поступающие на внутренний интерфейс маршрутизатора R2 (Serial 0/0/0) от настроенного внутреннего локального IPv4-адреса (192.168.10.254) преобразуются, а затем передаются во внешнюю сеть. Пакеты, поступающие на внешний интерфейс маршрутизатора R2 (Serial 0/1/0), адресованные настроенному внутреннему глобальному IPv4-адресу (209.165.201.5), преобразуются к внутреннему локальному адресу (192.168.10.254) и затем передаются во внутреннюю сеть.

На рис. 2 приведены команды, необходимые для настройки статического NAT.

На рис. 3 показаны команды, необходимые для создания на маршрутизаторе R2 статического сопоставления NAT для веб-сервера в справочной топологии. В рамках показанной конфигурации R2 преобразует в пакетах, отправленных веб-сервером, адрес 192.168.10.254 в публичный IPv4-адрес 209.165.201.5. Интернет-клиент направляет веб-запросы на публичный IPv4-адрес 209.165.201.5. Маршрутизатор R2 пересылает этот трафик веб-серверу по адресу 192.168.10.254.

Используйте средство проверки синтаксиса (см. рис. 4) для настройки дополнительной записи статического преобразования NAT на маршрутизаторе R2.

На этом рисунке показывается процесс статического преобразования NAT между клиентом и веб-сервером с использованием предыдущей конфигурации. Статические преобразования обычно используются, когда клиентам из внешней сети (Интернет) нужно обратиться к серверам внутренней сети.

1. Клиенту нужно подключиться к веб-серверу. Клиент передает пакет на веб-сервер, используя публичный IPv4-адрес назначения 209.165.201.5. Это внутренний глобальный адрес веб-сервера.

2. Первый пакет, который маршрутизатор R2 получает от клиента на свой внешний интерфейс NAT, заставляет R2 проверить свою таблицу NAT. IPv4-адрес назначения находится в таблице NAT, и маршрутизатор выполняет соответствующее преобразование.

3. R2 заменяет внутренний глобальный адрес 209.165.201.5 внутренним локальным адресом 192.168.10.254. Затем R2 пересылает пакет веб-серверу.

4. Веб-сервер получает пакет и отвечает клиенту, используя внутренний локальный адрес 192.168.10.254.

5а. R2 получает пакет от веб-сервера на свой внутренний интерфейс NAT с адресом источника, соответствующим внутреннему локальному адресу веб-сервера, 192.168.10.254.

5b. R2 проверяет таблицу NAT на предмет наличия преобразования для внутреннего локального адреса. Этот адрес присутствует в таблице NAT. R2 выполняет обратное преобразование адреса источника во внутренний глобальный адрес 209.165.201.5 и пересылает пакет клиенту через свой интерфейс Serial 0/1/0.

6. Клиент получает пакет и продолжает диалог. Маршрутизатор NAT выполняет шаги 2-5b для каждого пакета (шаг 6 на рисунке не показан).

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

Для проверки работы NAT используется команда show ip nat translations . Эта команда отображает активные преобразования NAT. В отличие от динамических преобразований, статические преобразования всегда присутствуют в таблице NAT. На рис. 1 показан результат этой команды для предыдущего примера конфигурации. Поскольку в примере приводится статическая конфигурация, преобразование всегда присутствует в таблице NAT независимо от активных взаимодействий. Если команда вводится во время активного сеанса, выходные данные будут также содержать адрес внешнего устройства, как показано на рис. 1.

Другой полезной командой являетсяshow ip nat statistics . Как показано на рис. 2, команда show ip nat statistics

Чтобы убедиться в правильности работы преобразования NAT, перед тестированием рекомендуется очистить статистику всех предыдущих преобразований с помощью командыclear ip nat statistics .

До начала взаимодействия с веб-сервером команда show ip nat statistics не должна показывать каких-либо совпадений. После установки клиентом сеанса с веб-сервером результат команды show ip nat statistics покажет увеличение количества совпадений до 5. Это подтверждает выполнение статического преобразования NAT на R2.

Настройка динамического NAT

В то время как статическое преобразование NAT обеспечивает постоянное соответствие между внутренним локальным адресом и внутренним глобальным адресом, динамическое преобразование NAT поддерживает автоматическое сопоставление внутренних локальных адресов внутренним глобальным адресам. Эти внутренние глобальные адреса обычно являются публичными IPv4-адресами. Динамический NAT использует для преобразования группу или пул публичных IPv4-адресов.

Для динамического NAT, как и для статического NAT, требуется настройка внутреннего и внешнего интерфейсов, участвующих в преобразовании NAT. Однако, если статическое преобразование NAT создаёт постоянное сопоставление с одним адресом, для динамического NAT используется пул адресов.

Примечание . Преобразование между публичными и частными IPv4-адресами является самым распространённым применением NAT. Тем не менее, преобразования NAT могут возникать между любыми парами адресов.

В справочной топологии, показанной на рисунке, внутренняя сеть использует адреса из пространства частных адресов, определённого в RFC 1918. К маршрутизатору R1 подключены две локальных сети - 192.168.10.0/24 и 192.168.11.0/24. Пограничный маршрутизатор R2 настроен на динамическое преобразование NAT с использованием пула публичных IPv4-адресов от 209.165.200.226 до 209.165.200.240.

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

На рис. показаны шаги и команды, используемые для настройки динамического NAT.

Шаг 1. С помощью команды ip nat pool задайте пул адресов, которые будут использоваться для преобразования. Данный пул адресов обычно является группой публичных адресов. Эти адреса определяются с помощью указания начального и конечного IP-адресов пула. Ключевое слово netmask или prefix-length указывает, какие биты адреса относятся к сети, а какие - к диапазону адресов узлов.

Шаг 2. Настройте стандартный ACL-список, чтобы определить (разрешить) только те адреса, которые должны быть преобразованы. ACL-список со слишком большим количеством разрешающих команд может привести к непредсказуемым результатам. Помните, что в конце каждого ACL-списка находится строка deny all .

Шаг 3. Выполните привязку ACL-списка к пулу. Команда ip nat inside source list access-list-number number pool pool name используется для привязки списка к пулу. Эта конфигурация используется маршрутизатором, чтобы определить, какие устройства (list ) получают какие адреса (pool ).

Шаг 4. Определите интерфейсы, являющиеся внутренними по отношению к NAT, т.е. любой интерфейс, подключенный к внутренней сети.

Шаг 5. Определите интерфейсы, являющиеся внешними относительно NAT, т.е. любой интерфейс, подключенный к внешней сети.

На рис. 2 приведен пример топологии и соответствующая конфигурация. Данная конфигурация разрешает преобразование для всех узлов сети 192.168.0.0/16, содержащей локальные сети 192.168.10.0 и 192.168.11.0, когда узлы создают трафик, входящий в S0/0/0 и выходящий из S0/1/0. Адреса этих узлов преобразуются в доступный адрес из пула в диапазоне от 209.165.200.226 до 209.165.200.240.

На рис. 3 показана топология, используемая для конфигурации инструмента проверки синтаксиса. Используйте инструмент проверки синтаксиса на рис. 4, чтобы настроить динамическое преобразование NAT на маршрутизаторе R2.

Анализ динамического NAT

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

На рис. 1 показан поток трафика изнутри наружу.

1. Узлы с IPv4-адресами источника (192.168.10.10 (PC1) и 192.168.11.10 (PC2)) отправляют пакеты, запрашивающие подключение к серверу на публичный IPv4-адрес (209.165.200.254).

2. Маршрутизатор R2 получает первый пакет от узла 192.168.10.10. Поскольку этот пакет был получен на интерфейс, настроенный как внутренний интерфейс NAT, R2 проверяет конфигурацию NAT, чтобы определить, следует ли выполнять преобразование для данного пакета. ACL-список разрешает этот пакет, поэтому R2 выполняет его преобразование. Маршрутизатор R2 проверяет свою таблицу NAT. Поскольку для данного IP-адреса нет записей преобразования, R2 решает, что для адреса источника 192.168.10.10 требуется динамическое преобразование. Маршрутизатор R2 выбирает доступный глобальный адрес из пула динамических адресов и создает запись преобразования - 209.165.200.226. Первоначальный IPv4-адрес источника (192.168.10.10) - это внутренний локальный адрес, а используемый для преобразования адрес - это внутренний глобальный адрес (209.165.200.226) в таблице NAT.

R2 повторяет процедуру для второго узла, 192.168.11.10, выбирая следующий доступный глобальный адрес из пула динамических адресов и создавая вторую запись преобразования, 209.165.200.227.

3. R2 заменяет внутренний локальный адрес источника PC1 (192.168.10.10) используемым для преобразования внутренним глобальным адресом (209.165.200.226) и пересылает пакет. Те же действия выполняются для пакета, отправленного PC2, с использованием для преобразования адресом, соответствующим PC2 (209.165.200.227).

Рис 1

На рис. 2 показан поток трафика снаружи вовнутрь.

4. Сервер получает пакет от PC1 и отвечает, используя IPv4-адрес назначения 209.165.200.226. Получив второй пакет, сервер отвечает PC2, используя IPv4-адрес назначения 209.165.200.227.

5а. Получив пакет с IPv4-адресом назначения 209.165.200.226, маршрутизатор R2 выполняет поиск в таблице NAT. С помощью сопоставления из таблицы маршрутизатор R2 выполняет преобразование адреса обратно во внутренний локальный адрес (192.168.10.10) и пересылает пакет PC1.

5b. Получив пакет с IPv4-адресом назначения 209.165.200.227, маршрутизатор R2 выполняет поиск в таблице NAT. С помощью сопоставления из таблицы маршрутизатор R2 выполняет преобразование адреса обратно во внутренний локальный адрес (192.168.11.10) и пересылает пакет PC2.

6. PC1 с адресом 192.168.10.10 и PC2 с адресом 192.168.11.10 получают пакеты и продолжают диалог. Маршрутизатор NAT выполняет шаги 2-5b для каждого пакета (шаг 6 не приводится на рисунках).

Рис 2

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

Результаты команды show ip nat translations , показанные на рис. 1, содержат сведения о двух предыдущих назначениях NAT. Команда отображает все настроенные статические преобразования адресов и все динамические преобразования, созданные в результате обработки трафика.

Добавление ключевого слова verbose выводит дополнительную информацию о каждом преобразовании, включая время, прошедшее после создания и использования записи.

По умолчанию срок действия записей преобразования истекает через 24 часа, если настройка таймеров не была изменена с помощью команды ip nat translation timeout timeout-seconds в режиме глобальной конфигурации.

Для удаления динамических записей до истечения их времени действия используйте команду режима глобальной конфигурации clear ip nat translation . При проведении проверки конфигурации NAT рекомендуется удалять динамические записи. Как показано в таблице, эту команду можно использовать с ключевыми словами и переменными, чтобы определить удаляемые записи. Конкретные записи можно удалить во избежание сбоев активных сеансов. Чтобы удалить из таблицы все преобразования, используйте команду глобальной конфигурации clear ip nat translation * .

Примечание . Из таблицы удаляются только динамические преобразования. Статические преобразования невозможно удалить из таблицы преобразований.

Как показано, команда show ip nat statistics выводит сведения о суммарном количестве активных преобразований, параметрах конфигурации NAT, числе адресов в пуле и числе выделенных адресов.

В качестве альтернативы, можно воспользоваться командой show running-config и найти команды NAT, ACL, интерфейса или пула с нужными значениями. Внимательно изучите результаты и исправьте все обнаруженные ошибки.

Настройка преобразования адресов портов (PAT)

Преобразование адресов портов PAT (также называемое NAT с перегрузкой) экономит адреса во внутреннем глобальном пуле, разрешая маршрутизатору использовать один внутренний глобальный адрес для нескольких внутренних локальных адресов. Другими словами, один публичный IPv4-адрес может использоваться для сотен или даже тысяч внутренних IPv4-частных адресов. Если настроен данный тип преобразования, маршрутизатор хранит достаточный объём информации протоколов более высоких уровней, например, номера портов TCP или UDP, для обратного преобразования внутреннего глобального адреса в нужный внутренний локальный адрес. При привязке нескольких внутренних локальных адресов к одному внутреннему глобальному адресу для различения локальных адресов используются номера портов TCP или UDP.

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

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

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

Если объекту было выделено несколько публичных IPv4-адресов, то эти адреса могут быть частью пула, используемого PAT. Это аналогично динамическому NAT, за исключением того, что публичных адресов недостаточно для создания взаимно-однозначных соответствий внутренних и внешних адресов. Небольшой пул адресов совместно используется большим числом устройств.

На рис. 1 показаны шаги по настройке PAT для использования пула адресов. Основное различие между данной конфигурацией и конфигурацией для динамического взаимно-однозначного NAT состоит в использовании ключевого слова overload . Ключевое словоoverload задействует работу PAT.

Пример конфигурации, показанной на рис. 2, создаёт преобразование с перегрузкой для пула NAT с именем NAT-POOL2. NAT-POOL2 содержит адреса с 209.165.200.226 по 209.165.200.240. Объектами преобразования являются узлы сети 192.168.0.0/16. В качестве внутреннего интерфейса определен интерфейс S0/0/0, а в качестве внешнего интерфейса - интерфейс S0/1/0.

Используйте средство проверки синтаксиса на рис. 3, чтобы настроить PAT на маршрутизаторе R2, используя пул адресов.

Настройка PAT для одного публичного IPv4-адреса

На рис. 1 показана топология реализации PAT для преобразования одного публичного IPv4-адреса. В этом примере для всех узлов сети 192.168.0.0/16 (соответствующий список ACL 1), отправляющих трафик в Интернет через маршрутизатор R2, будет выполняться преобразование в IPv4-адрес 209.165.200.225 (IPv4-адрес интерфейса S0/1/0). Потоки трафика будут определяться номерами портов в таблице NAT, поскольку было использовано overload .

На рис. 2 показаны действия, необходимые для настройки PAT с одним IPv4-адресом. Если доступен только один публичный IPv4-адрес, для конфигурации с перегрузкой обычно назначается публичный адрес внешнего интерфейса, который подключается к интернет-провайдеру. Все внутренние адреса в пакетах, выходящих из внешнего интерфейса, преобразуются в один IPv4-адрес.

Шаг 1. Определите ACL-список, разрешающий преобразование трафика.

Шаг 2. Настройте преобразование источника, используя ключевые словаinterface и overload . Ключевое слово interface определяет IP-адрес интерфейса, который будет использоваться при преобразовании внутренних адресов. Ключевое словоoverload указывает маршрутизатору отслеживать номера портов для каждой записи NAT.

Шаг 3. Укажите интерфейсы, являющиеся внутренними по отношению к NAT. Это любой интерфейс, подключенный к внутренней сети.

Шаг 4. Укажите интерфейс, являющийся внешним по отношению к NAT. Это должен быть тот же интерфейс, который указан в записи преобразования источника в шаге 2.

Эта конфигурация аналогична динамическому NAT, за исключением того, что для определения внешнего IPv4-адреса вместо пула адресов используется ключевое словоinterface . Таким образом, пул NAT не определяется.

Используйте средство проверки синтаксиса, чтобы настроить PAT на маршрутизаторе R2 с использованием одного адреса.

Анализ PAT

Процесс преобразования NAT с перегрузкой является одинаковым как при использовании пула адресов, так и при использовании одного адреса. Продолжая предыдущий пример PAT с использованием одного публичного IPv4-адреса, компьютеру PC1 требуется подключение к веб-серверу Svr1. Одновременно другому клиенту, PC2, нужно установить аналогичный сеанс с веб-сервером Svr2. И для PC1, и для PC2 настроены частные IPv4-адреса, а на маршрутизаторе R2 включено преобразование PAT.

Процесс передачи пакетов от компьютеров к серверам

1. На рис. 1 показаны компьютеры PC1 и PC2, отправляющие пакеты серверам Svr1 и Svr2, соответственно. PC1 использует IPv4-адрес 192.168.10.10 и TCP-порт источника 1444. PC2 использует IPv4-адрес 192.168.10.11 источника и, по случайному совпадению, тот же TCP-порт источника - 1444.

2. Пакет компьютера PC1 первым достигает маршрутизатора R2. Используя PAT, R2 изменяет IPv4-адрес источника на 209.165.200.225 (внутренний глобальный адрес). В таблице NAT отсутствуют другие устройства, использующие порт 1444, поэтому PAT сохраняет этот же номер порта. Затем пакет пересылается серверу Svr1 по адресу 209.165.201.1.

3. Далее на маршрутизатор R2 приходит пакет с компьютера PC2. Настройка PAT обеспечивает использование для всех преобразований одного внутреннего глобального IPv4-адреса - 209.165.200.225. Аналогично процессу преобразования для PC1, PAT изменяет IPv4-адрес источника PC2 на внутренний глобальный адрес 209.165.200.225. Однако в этом пакете PC2 используется номер порта источника, уже содержащийся в текущей записи PAT, обеспечивающей преобразование PC1. PAT увеличивает номер порта источника, пока его значение не окажется уникальным для данной таблицы. В данном случае записи порта источника в таблице NAT и пакету от PC2 назначается номер 1445.

Хотя PC1 и PC2 используют одинаковый преобразованный адрес, внутренний глобальный адрес 209.165.200.225, и одинаковый номер порта источника - 1444, изменённый номер порта для PC2 (1445) делает уникальной каждую запись в таблице NAT. Это становится очевидным при отправке серверами обратных пакетов клиентам.

Процесс передачи пакетов от серверов к компьютерам

4. Как показано на рис. 2, при типовом обмене «клиент-сервер» серверы Svr1 и Svr2 отвечают на запросы, полученные от компьютеров PC1 и PC2 соответственно. Серверы используют для обратного трафика порт источника из полученного пакета в качестве порта назначения и адрес источника - в качестве адреса назначения. Серверы ведут себя так, как если бы они взаимодействовали с одним узлом 209.165.200.225, однако это не так.

5. Получив пакеты, маршрутизатор R2 находит уникальную запись в таблице NAT, используя адрес назначения и порт назначения каждого пакета. В случае получения пакета от сервера Svr1 адресу назначения IPv4 209.165.200.225 соответствует несколько записей, но только одна из них содержит порт назначения 1444. Используя эту запись таблицы, маршрутизатор R2 изменяет IPv4-адрес назначения пакета на 192.168.10.10. Изменение порта назначения в данном случае не требуется. Затем пакет пересылается компьютеру PC1.

6. Получив пакет от сервера Svr2, маршрутизатор R2 выполняет аналогичное преобразование. Маршрутизатор снова находит адрес назначения IPv4 209.165.200.225 с несколькими записями. Однако, используя порт назначения 1445, R2 может уникально идентифицировать запись преобразования. IPv4-адрес назначения меняется на 192.168.10.11. В этом случае порт назначения также необходимо изменить обратно на первоначальное значение 1444, сохранённое в таблице NAT. Затем пакет пересылается компьютеру PC2.

Проверка PAT

Маршрутизатор R2 настроен на предоставление PAT клиентам из сети 192.168.0.0/16. Когда внутренние узлы выходят через маршрутизатор R2 в Интернет, выполняется преобразование их адресов в IPv4-адрес из пула PAT с уникальным номером порта источника.

Для проверки PAT используются те же команды, что и для проверки статического и динамического NAT, как показано на рис. 1. Команда show ip nat translations выводит преобразования для трафика от двух различных узлов к различным веб-серверам. Обратите внимание, что двум различным внутренним узлам выделяется один и тот же IPv4-адрес 209.165.200.226 (внутренний глобальный адрес). Для различения этих двух транзакций в таблице NAT используются номера портов источников.

Как показано на рис. 2, команда show ip nat statistics позволяет проверить, что в пуле NAT-POOL2 выделен один адрес для обоих преобразований. Результат выполнения команды содержит информацию о количестве и типе активных преобразований, параметрах настройки NAT, количестве адресов в пуле и количестве выделенных адресов.

NAT (Network address translation) – технология трансляции сетевых адресов. Технология NAT позволила решить наибольшую проблему протокола IPv4: к середине 1990-х годов пространство IPv4-адресов могло быть полностью исчерпано. Если бы технологию NAT не изобрели то, рост Интернета значительно замедлился бы. Конечно, на сегодня создана новая версия протокола IP – IPv6. Данная версия поддерживает огромное количество IP-адресов, что существование NAT – бессмысленно. Однако, до сих пор довольно много организаций используют в своей работе протокол IPv4 и полный переход на IPv6 состоится не скоро. Поэтому есть смысл изучить технологию NAT.

Трансляция сетевых адресов NAT позволяет хосту, не имеющего “белого IP”, осуществлять связь с другими хостами через Интернет. Белый IP-адрес представляет из себя зарегистрированный, уникальный, глобальный IP-адрес в сети Интернет. Есть также “серые IP-адреса”, которые используются в частной сети и не маршрутизируются в сети Интернет. Поэтому необходима технология NAT, которая будет подменять серый IP-адрес на белый. Диапазон “серых IP-адресов” представлен в таблице.

Трансляция NAT заменяет частные IP-адреса открытыми зарегистрированными IP-адресами в каждом пакете протокола IP.

Осуществляя трансляцию NAT, маршрутизатор изменяет IP-адрес отправителя в тот момент, когда пакет покидает частную сеть. Маршрутизатор также изменяет адрес получателя каждого пакета, который возвращается в частную сеть. Программное обеспечение Cisco IOS поддерживает несколько разновидностей трансляции NAT:

  1. Статическая трансляция NAT – каждому частному IP-адресу соответствует один публичный IP. При использовании статической трансляции маршрутизатор NAT просто устанавливает взаимно однозначное соответствие между частным и зарегистрированным IP-адресом, от имени которого он выступает.
  2. Динамическая трансляция NAT – преобразование внутренних Ip-адресов во внешние происходит динамически. Создается пул возможных публичных IP-адресов и из этого пула динамически выбираются Ip-адреса для преобразования.
  3. Трансляция адресов портов PAT – позволяет выполнить масштабирование для поддержки многих клиентов с использованием всего лишь нескольких открытых IP-адресов. PAT транслирует сетевой адрес в зависимости от TCP/UDP-порта получателя.

Рассмотрим более подробно каждый из видов трансляции.

Статическая трансляция NAT делает точное соответствие между частным и публичным Ip-адресом. Рассмотрим на примере.

Провайдер ISP компании назначает ей зарегистрированный номер сети 200.1.1.0. Соответственно маршрутизатор NAT должен сделать так, чтобы этот частный адрес выглядел таким образом, как если бы находился в сети 200.1.1.0. Для этого маршрутизатор изменяет IP-адрес отправителя в пакетах, которые как на рисунке пересылаются слева направо. В данном примере маршрутизатор изменяет частный Ip-адрес 10.1.1.1 на открытый 200.1.1.1. Другому частному адресу 10.1.1.2 соответствует публичный 200.1.1.2. Далее рассмотрим настройку статического NAT в Cisco.

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

На схеме видно, что пользователь получил от провайдера адрес 100.0.0.0 сети класса C. Вся эта сеть с маской 255.255.255.0 настроена на последовательном канале между пользователем и Интернетом. Поскольку это двухточечный канал, в данной сети используется только 2 из 254 действительных (возможных) IP-адресов.

Конфигурация для роутера NAT_GW:

NAT_GW>enable NAT_GW#configure terminal - описание интерфейса - задаем шлюз по-умолчанию - описание интерфейса - задаем Ip и маску NAT_GW(config-if)#no shutdown - включаем интерфейс физически NAT_GW(config-if)#exit NAT_GW(config)#ip nat inside source static 192.168.1.2 100.0.0.1 NAT_GW(config)#ip nat inside source static 192.168.1.3 100.0.0.2 - статическое сопоставление адресов NAT_GW(config)#ip nat inside source static 192.168.1.4 100.0.0.3 - статическое сопоставление адресов

Статические соответствия создаются с помощью команды ip nat inside source static . Ключевое слово inside означает, что NAT транслирует адреса для хостов, находящихся во внутренней части сети. Ключевое слово source означает, что NAT транслирует IP-адреса в пакетах, поступающих на ее внутренние интерфейсы. Ключевое слово static означает, что эти параметры определяют статическую запись, которая никогда не удалится из таблицы NAT в связи с истечением периода времени. При создании записей статической трансляции NAT маршрутизатору необходимо знать, какие интерфейсы являются внутренними (inside), а какие внешними (outside). Подкоманды интерфейса ip nat inside и ip nat outside соответствующим образом идентифицируют каждый интерфейс.

Для просмотра важной информации о NAT существует две команды show ip nat translations, show ip nat statistics.

Первая команда выводит три записи статической трансляции NAT, созданной в конфигурации. Вторая команда выводит статистическую информацию, такую, как количество активных в данный момент записей в таблице трансляции. Эта статистика также включает в себя количество повторных попаданий (hit), которое увеличивается на единицу с каждым пакетом, для которого NAT должна транслировать адреса.

Перейдем далее к динамической трансляции сетевых адресов NAT. Динамическая трансляция создает пул возможных глобальных внутренних адресов и определяет критерий соответствия для определения того, какие внутренние глобальные IP-адреса должны транслироваться с помощью NAT. Например, в схеме ниже был установлен пул из пяти глобальных IP-адресов в диапазоне 200.1.1.1 – 200.1.1.5. Трансляция NAT также настроена для преобразования всех внутренних локальных адресов, которые начинаются с октетов 10.1.1

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

  1. Настроить интерфейсы, которые будут находится во внутренней подсети, с помощью команды ip nat inside.
  2. Настроить интерфейсы, которые будут находится во внешней подсети, с помощью команды ip nat outside.
  3. Настроить список ACL, соответствующий пакетам, поступающим на внутренние интерфейсы, для которых должна быть применена трансляция NAT
  4. Настроить пул открытых зарегистрированных IP-адресов с помощью команды режима глобального конфигурирования ip nat pool имя первый-адрес последний-адрес netmask маска-подсети.
  5. Включить динамическую трансляцию NAT, указав в команде глобального конфигурирования ip nat inside source list номер-acl pool имя-пула

Схема будет использоваться такая же как и в прошлый раз. Новая конфигурация для роутера NAT_GW:

NAT_GW>enable - переходим в расширенный режим NAT_GW#configure terminal - переходим в режим конфигурации NAT_GW(config)#interface fa0/0 - настройка интерфейса в сторону частной сети NAT_GW(config-if)#description LAN - описание интерфейса NAT_GW(config-if)#ip address 192.168.1.1 255.255.255.0 - задаем шлюз по-умолчанию NAT_GW(config-if)#no shutdown - включаем интерфейс физически NAT_GW(config-if)#ip nat inside - настраиваем интерфейс как внутренний NAT_GW(config-if)#exit NAT_GW(config)#interface fa0/1 - настройки интерфейса в сторону провайдера NAT_GW(config-if)#description ISP - описание интерфейса NAT_GW(config-if)#ip address 100.0.0.253 255.255.255.0 - задаем Ip и маску NAT_GW(config-if)#no shutdown - включаем интерфейс физически NAT_GW(config-if)#ip nat outside - настраиваем интерфейс как внешний NAT_GW(config-if)#exit NAT_GW(config)#ip nat pool testPool 100.0.0.1 100.0.0.252 netmask 255.255.255.0- создаем динамический пул NAT_GW(config)#access-list 1 permit 192.168.1.1 0.0.0.255 - создаем список доступа 1, в котором разрешаем транслировать Ip-адреса из подсети 192.168.1.1/24 NAT_GW(config)#ip nat inside source list 1 pool testPool - включаем динамическую трансляцию NAT_GW(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.254 - статический маршрут в сторону провайдера

Следующий вид трансляции – трансляция адресов портов PAT (Port Address Translation). Про этот вид NAT я расскажу в следующей статье, когда мы будем подключать локальную подсеть к Интернету. Тема довольно большая и важная. PAT является наиболее популярным видом NAT’a.


Подписывайтесь на нашу

Компьютер подключается к глобальной сети несколькими способами. Это может быть прямое подключение, в этом случае имеется внешний IP адрес (динамический или статический), который виден из интернета. Или же подключение может осуществляться через маршрутизатор. При таком подключении внешний адрес имеет только роутер, а все подключенные к нему пользователи являются клиентами другой сети. Роутер берет на себя распределение входящего и исходящего трафика между клиентами и интернетом. Возникает ряд проблем при подключении через маршрутизатор:

  • перестают работать торрент-клиенты;
  • нет возможности подключиться к игровому онлайн серверу;
  • нет обращений к серверу внутренней сети из вне ни по одному протоколу и ни на один порт.

Решить проблему помогает правильная настройка маршрутизатора, а именно сервиса NAT на нем. Для того, чтобы понять, как настроить NAT на роутере , необходимом узнать, что такое трансляция адресов и для чего это используется.

NAT: общие определения

NAT (network address translation) или трансляция сетевых адресов - это процесс перевода внутренних или локальных адресов во внешние. NAT используется абсолютно всеми маршрутизаторами независимо от их конфигурации, назначения и стоимости. По умолчанию роутер запрещает напрямую обращаться к любому устройству, находящимися внутри сети. Он блокирует доступ на любые порты для входящих соединений поступающие из интернета.

Но NAT и Firewall это суть разные понятия. Firewall просто запрещает доступ к ресурсу по определенному TCP или UDP порту, может устанавливаться на локальной машине для ограничения доступа только к ней или же на сервере для фильтрации трафика по всей локальной сети. Перед NAT задача стоит более развернуто. Сервис запрещает или разрешает доступ внутри сети по конкретному IP адресу или диапазону адресов. Таким образом клиент, который обращается к ресурсу не видит действительного IP адреса ресурса. NAT переводит внутренний IP в адрес, который будет виден из интернета.

Чтобы проверить находится ли компьютер за NAT или транслирует в интернет реальный адрес можно следующим образом:

  • в Windows нужно нажать «Пуск - Выполнить - cmd» и прописать ipconfig и нажать «Ввод»;
  • в Linux и MacOS в терминале выполняется ifconfig .

Вывод команды показывает следующие данные:

  • IP - реальный, действительный адрес компьютера;
  • Subnet mask - маска подсети;
  • Gateway - адрес шлюза маршрутизатора.

Как теперь разобрать является ли адрес локальным или же напрямую «смотрит» в интернет. Согласно спецификации, существует четыре диапазона адресов, которые ни при каких обстоятельствах не используются в интернете, а являются исключительно локальными:

  1. 0.0.0 - 10.255.255.255
  2. Х.0.0 - 172.Х.255.255, где Х в диапазоне от 16 до 31.
  3. 168.0.0 - 192.168.255.255
  4. 254.0.0 - 169.254.255.255

В том случае, когда адрес машины попадает в один из этих диапазонов, следует считать, что компьютер находится в локальной сети или «за» NAT. Можно также дополнительно использовать специальные службы, которых есть множество в интернете для определения реального IP адреса. Теперь стало понятнее находится ли компьютер за NAT в роутере что это за сервис, и за то он отвечает.

Проблемы NAT и возможности решения

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

В качестве примера можно рассмотреть протокол передачи файлов (FTP), который был саммым распространенным к появлению NAT. Для файловых серверов (FTP) ключевым является реальный IP адрес компьютера, который посылает запрос на доступ. Здесь преобразование адресов не работает, потому что запрос на сервер отправляется с IP, невидимого из интернета. Нет возможности создать сессию клиент-сервер для загрузки файлов. Обойти проблему помогает использование FTP в пассивном режиме. В этом режиме используется другой набор команд, и работа ведется через специальный прокси-сервер, который дополнительно открывает другой порт для соединения и передает его программе клиенту. Проблемой такого решения является то, что необходимо использовать сторонние FTP клиенты.

Полностью избавиться от проблемы доступа получилось только с появлением SOCKS (Socket Secure) протокола. Этот протокол позволяет обмениваться данными через прокси-сервер в «прозрачном» режиме. То есть сервер не будет знать, что происходит подмена адресов с локальных на глобальные и наоборот. Изобретение SOCKS позволило избавиться от ряда проблем и упростить работу администрирования сети:

  • создает на сервере службу, слушающую входящие запросы, что позволяет обслуживать многосвязные протоколы наподобие FTP;
  • нет необходимости использовать и обслуживать службу DNS внутри локальной сети. Теперь такая задача возложена на кэширующие прокси;
  • дополнительные способы авторизации позволяют с большей эффективностью проводить отслеживание и фильтрацию пакетов. Средствами NAT можно фильтровать запросы только по адресам.

Использование NAT и SOCKS не всегда оправдано с точки зрения сетевого администрирования. Иногда более целесообразным является использование специализированных прокси, которых существуете множество для любого протокола передачи данных.

Настройка NAT на компьютере

Все современные операционные системы имеют уже встроенный NAT. В Windows эта функция реализована с 1999 года с появлением Windows XP. Управление NAT осуществляется непосредственно через свойства сетевого подключения. Чтобы настроить службу нужно сделать следующее:

  • Через меню «Пуск» запустить программу «Панель управления».
  • Найти иконку «Сетевые подключения» и запустить ее.
  • В новом окне кликнуть правой кнопкой мыши на активном сетевом подключении и выбрать в выпадающем списке «Свойства».
  • Перейти на вкладку «Дополнительно».
  • Установить галочки напротив «Разрешить другим пользователям сети использовать подключение к интернету данного компьютера».
  • Подтвердить изменение кнопкой «Ок».

Если при выведется сообщение что невозможно запустить службу общего доступа, нужно убедиться, что запущена служба DHCP-клиент. При необходимости можно установить запуск службы принудительно, а не по запросу автоматически.

Настройка NAT на маршрутизаторе

Что такое NAT в роутере , целесообразность его использования и проблемы, которые он может создать было описано выше, теперь можно перейти непосредственно к реализации задачи. Настройка службы на роутере зависит от его модели, используемой прошивки и других параметров. Но достаточно понять механизм, чтобы не возникало сложностей и вопросов по настройке отдельного устройства. Для настройки выполняются следующие действия (в качестве примера настройки выполняются на роутере Zyxel на прошивке v1):

  • В браузере зайти на страницу настроек роутера.
  • Перейти в меню «Network — Routing» на вкладку «Policy routing».

Открывшаяся страница и будет той, которая управляет политиками доступа и маршрутизацией. Здесь необходимо включить службу, активировав переключатель в положение «Enable». Сами настройки выполняются в группе «Criteria». Выбираются параметры NAT по нескольким категориям фильтров:

  • User - трансляция по определенному пользователю.
  • Incoming - по сетевому интерфейсу.
  • Source Address - подмена адреса по адресу источника.
  • Destination Address - по адресу конечного получателя
  • Service - по конкретному порту службы.

В качестве объекта перенаправления можно выбрать следующие варианты:

  • Auto - автоматический выбор объекта назначения. По умолчанию установлен Wan интерфейс.
  • Gateway - шлюз, указанный заранее в настройках.
  • VPN Tunel - соответственно через VPN туннель.
  • Trunk - диапазон интерфейсов, настроенных на совместную работу.
  • Interface - конкретный интерфейс по выбору.

В каждом отдельно взятом роутере настройки и название пунктов меню может отличаться, но принцип построения NAT остается неизменным.

Loading...Loading...