Трансляция сетевых адресов NAT

NAT (Network Address Translation) – трансляция (подмена) сетевых адресов. Эта технология широко используется. Позволяет с одной стороны, противостоять нехватке IPv4 адресов, а с другой – повысить защищённость сети.

Приватные адреса

Давайте начнём вот с чего: IPv4 адреса бывают публичные и приватные, если вы не совсем понимаете смысл приватных (серых) адресов, то рекомендую начать изучение с соответствующей статьи. Если в двух словах, то приватные адреса может использовать кто угодно в своей сети, для этого нет необходимости арендовать адресное пространство, или выделять адреса у провайдера. Очевидный недостаток таких адресов – к устройству, имеющему приватный адрес нельзя подключиться из интернета – только из вашей собственной локальной сети. Это связанно с тем, что ни один провайдер мира не знает, что эти адреса используются в вашей сети и соответственно эти сети отсутствуют в таблице маршрутизации сторонних маршрутизаторов и трафик к ним не маршрутизируется. Понятно, что при всём желании маршруты нельзя прописать на сторонних маршрутизаторах, так как не только вы пользуетесь этими адресами. Основное преимущество приватных адресов в том, что за них не надо платить, ими можно пользоваться на своё усмотрение и главное – одни и те же адреса используются в разных локальных сетях разных организаций, что приводит к экономии адресного пространства IPv4.

Трансляция адресов

Для того чтобы организовать возможность выхода в интернет с устройств, имеющих приватные адреса применяется технология трансляции адресов, либо используется прокси-сервер. Если попытаться отправить, например, запрос к веб-серверу, находящемуся в интернете, с приватного адреса, то сам запрос теоретически дойдёт, так как веб сервер имеет публичный адрес, а вот ответ от сервера не вернётся, так как обратный адрес, на который этот ответ надо слать – приватный. Трансляция адресов заключается в том, что есть некоторое NAT-устройство, например, сервер или маршрутизатор, который имеет один или несколько публичных адресов. Клиенты с приватными адресами пытаются отправить запросы напрямую получателю в интернете, но ip пакеты по пути попадают на такое устройство. При этом в пакете подменяется адрес отправителя: вместо приватного адреса клиента, устройство ставит в это поле один из своих публичных адресов, после чего пакет отправляется в сеть. Теперь у него и адрес отправителя и адрес получателя – публичные. Получатель обрабатывает пакет и возвращает на него ответ (например, содержимое запрошенной из интернета странички). Этот ответ, как несложно догадаться, идёт на публичный адрес устройства, занимающегося NAT-ом. Устройство помнит, когда и какой адрес оно подменяло и в этом пакете адрес получателя снова меняется: публичный адрес устройства заменяется на приватный адрес клиента, после чего пакет идёт дальше во внутреннюю сеть. Клиент получает данные, как будто бы никакого преобразования адресов не было. Но это всё хорошо в теории. На практике, есть ряд протоколов, которые не могут работать с NAT-ом. На это есть свои причины. Какие-то протоколы в данных седьмого уровня могут содержать копию ip адреса, и эта копия, естественно не подменяется, так как NAT-устройство работает на 3-ем и 4-ом уровнях модели OSI. Другие протоколы подразумевают появление дополнительных соединений в процессе работы, которые могу исходить от внешней стороны. Про такие соединения NAT-устройство так же не знает и не будет передавать их клиенту. Но, если пользователям в вашей сети надо сидеть в интернете и читать почту, то проблем не будет.

Преимущества трансляции адресов:

  1. Минимизация использования публичных адресов
  2. Повышенная гибкость использования адресов
  3. Возможность изменения внешних адресов без необходимости изменять адресный план локальной сети
  4. Повышенная безопасность в связи с тем, что из интернета нельзя обратиться ко внутренним устройствам напрямую.

Недостатки трансляции адресов:

  1. Уменьшение производительности в связи с дополнительными действиями на маршрутизаторе.
  2. Проблемы с работой некоторых протоколов.
  3. Сложности при организации туннелей.
  4. Сложности с организацией входящих соединений извне.

Раз уж мы изучаем оборудование Cisco, то в качестве NAT-устройства у нас выступает маршрутизатор. Любой маршрутизатор Cisco умеет организовывать трансляцию адресов.

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

Чтобы ориентироваться в терминах, надо запомнить 4 адреса, которые фигурируют в процессе трансляции:

  1. Inside local
  2. Inside global
  3. Outside local
  4. Outside global

Inside local – Это приватный адрес нашего устройства, которое пытается отправит запрос в интернет. Мы отправляем пакет на адрес некоего сервера (outside global). Когда пакет проходит через NAT-устройство, то адрес отправителя подменяется на публичный адрес, имеющийся в распоряжении NAT-устройства (inside global). Если сервер-получателя имеет публичный адрес и доступен по нему извне, то outside global и outside local – совпадают, если сам сервер тоже скрыт за каким-то NAT-устройством, то именно оно получает вместо него запрос на outside global адрес и транслирует адрес получателя на outside local (во внутренней сети получателя). Впрочем, ситуация, когда сервер находится за NAT-ом – не частое явление и обычно outside local и outside global – это один и тот же адрес.

Трансляция адресов NAT

Иными словами, мы можем объяснить эти термины так:

  1. Inside – адреса нашего отправляющего устройства, которые подвергаются трансляции (local в global и обратно).
  2. Outside – адреса получателя
  1. Local – внутренние с точки зрения локальных сетей, часто приватные адреса устройств (как отправителя, так и получателя), с которых прямое взаимодействие без трансляции невозможно.
  2. Global – публичные адреса, имеющиеся в распоряжении NAT-устройств, между которыми и происходит взаимодействие в интернете.

Таблица трансляций

Для обеспечения корректной работы, маршрутизатор должен иметь в памяти таблицу трансляций, в которой находится информация о том, когда проводились трансляции, а также записываются inside local, inside global, outside global и outside local адреса. Эта таблица необходима для организации правильной обратной трансляции. Например, если внутренний компьютер с адресом «A» отправил запрос на адрес «B», а маршрутизатор подменил приватный адрес «A» на свой публичный «C», то, когда придёт ответ из интернета с адреса «B» на адрес «C», маршрутизатор, глядя в эту табличку будет знать, что надо адрес получателя «C» подменить обратно на адрес «A».

Виды трансляции адресов

Всё вышеперечисленное является общими принципами работы NAT. Однако, существуют разные способы организации этого процесса:

  1. Статический NAT – когда на маршрутизаторе организована трансляция одного конкретного inside local адреса в один конкретный inside global адрес.
  2. Динамическая трансляция NAT – когда на маршрутизаторе имеется пул свободных inside global адресов, и конфигурация позволяет клиентам из некоего множества inside local адресов проходить трансляцию. В этом случае для очередного клиента изнутри в пуле выбирается очередной свободный адрес и происходит трансляция.
  3. Трансляция портов и адресов (PAT) – это механизм NAT, затрагивающий не только третий, но и четвёртый уровень модели OSI. Используется, когда количество клиентов превышает размер пула inside global адресов. В этом случае клиенты могут транслироваться на один и тот же inside global адрес, но при этом может менять номер порта (TCP или UDP), чтобы при получении ответа, в зависимости от того, на какой он пришел порт, можно было бы организовать трансляцию этого ответа одному или другому клиенту. PAT вносит дополнительные ограничения на перечень работающих протоколов, впрочем HTTP, POP3, SMTP будут нормально работать и через PAT. PAT позволяет значительно сэкономить адресное пространство. В случае использования протокола ICMP, который не инкапсулируется в TCP или UDP и к которому не применимо понятие «порт», вместо номера портов PAT меняет поле ICMP «Queue ID», что приводит к аналогичному результату.

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

Комментарии

День добрый! Спасибо за статью
Ссылка на «Настройка трансляции адресов на маршрутизаторе Cisco» не действительна

Аватар пользователя bacek
Блин, похоже я её не только забыл выложить, но и забыл написать :) Спасибо за замечание — выложу в ближайшее время.

Добавить комментарий