Технология преобразования сетевых адресов (NAT)
Одной из проблем в развитии сетей является ограниченное количество существующих IPv4 адресов — их около 4,3 миллиарда. С повсеместным распространением интернета и взрывообразным ростом количества пользователей, стало очевидно, что этого недостаточно. Возникла потребность в инструменте, способном решить эту проблему (по крайней мере до момента, когда будут внедрены IPv6) — и одним из таких инструментов стала технология NAT (Network Address Translation).
Что такое NAT
При проектировании сетей обычно применяются частные IP-адреса 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Их используют внутри сети площадки или организации для поддержания локального взаимодействия между устройствами, а не для маршрутизации во всемирной сети. Чтобы устройство с адресом IPv4 могло обратиться к другим устройствам или ресурсам через интернет, его частный адрес должен быть преобразован в публичный и общедоступный. Такое преобразование — это главное, что делает NAT, специальный механизм преобразования приватных адресов в общедоступные.
Поддержка NAT в сочетании с приватными IPv4 адресами стала эффективным способом сохранения общедоступных адресов IPv4. Механизм дает возможность многочисленным устройствам, каждое из которых имеет собственный приватный адрес, использовать единый общедоступный адрес IPv4. Дополнительным плюсом NAT является повышение уровня безопасности и конфиденциальности сети, за счет того, что он скрывает приватные адреса IPv4.
Маршрутизатор NAT можно настроить с одним или несколькими общедоступными IPv4-адресами, которые называют пулом NAT. При отправке трафика устройством из внутренней сети во внешнюю сеть, маршрутизатор преобразует его внутренний IPv4-адрес в один из адресов, входящих в состав пула. В результате действия такого механизма весь, исходящий из сети трафик внешние устройства «видят» с общедоступным адресом IPv4, который можно назвать NAT IP адресом.
Действие маршрутизатора NAT осуществляется на границе тупиковой сети, получившей название Stub-сети. Она связана с соседней сетью одним соединением, имеет один вход и один выход. При установлении связи между устройствами внутри и снаружи Stub-сети пакет отправляется пограничному маршрутизатору, который исполняет процесс NAT. В результате этого процесса внутренний приватный адрес устройства преобразуется в публичный наружный адрес, поддающийся маршрутизации.
Терминология NAT
В соответствии с принятой терминологией NAT внутренняя сеть понимается как набор сетей, которые подлежат терминологии. Под внешней понимают все другие сети.
Чтобы определить, что такое NAT-адрес, нужно учитывать его нахождение в частной сети или в интернете, а также тип трафика (входящий или исходящий). В зависимости от этих факторов устанавливаются следующие четыре обозначения:
- Inside local address (внутренний локальный) — видимый во внутренней сети адрес источника, собственный локальный адрес устройства.
- Inside global address (внутренний глобальный) — видимый из внешней сети адрес источника. При передаче трафика, например, с локального компьютера на веб-сервер, его Inside local address преобразуется маршрутизатором во внутренний глобальный адрес.
- Outside local address (внешний локальный) — видимый из внешней сети адрес получателя. Присвоенный хосту глобально маршрутизируемый адрес IPv4.
- Outside global address (внешний глобальный) — видимый из внутренней сети адрес получателя. Часто совпадает с локальным внешним адресом.
Нужно учитывать, что терминология NAT всегда строится с позиции устройства с транслируемым адресом.
Типы NAT
Для понимания, что такое NAT в сети, необходимо разобраться с классификацией трансляции. В частности, по способу сопоставления адресов, бывают такие типы трансляции NAT:
- Static NAT — статическая адресная трансляция. Предусматривает сопоставление между глобальными и локальными адресами «один к одному».
- Dynamic NAT — динамическая адресная трансляция. Сопоставление адресов осуществляется по принципу «многие ко многим».
- Port Address Translation (NAT Overload) — трансляция с использованием портов. Предусматривается многоадресное сопоставление.
Рассмотрим подробнее, что такое каждый из этих типов NAT.
Статический NAT
Этот тип NAT использует принцип «один к одному» при сопоставлении локальных и глобальных адресов. Настройки сопоставлений, установленные сетевым администратором, остаются неизменными. При отправке сетевыми устройствами трафика в интернет выполняется преобразование их внутренних локальных адресов в настроенные администратором глобальные внутренние адреса. Для внешних сетей устройства, которые работают во внутренней сети со статическим NAT, имеют общедоступные адреса IPv4.
Static NAT Type — это то, что хорошо подходит для веб-серверов, а также для устройств, которым необходим доступный из интернета согласованный адрес. Реализация статистического NAT требует наличия числа общедоступных адресов, достаточного для удовлетворения общего числа одновременных пользовательских сеансов.
Пример статической NAT таблицы:
Static NAT Table | |
Inside Local Address | Inside Global Adress |
192.168.1.2 | 208.165.17.5 |
192.168.1.3 | 208.165.17.6 |
192.168.1.4 | 208.165.17.7 |
Динамический NAT
Тип динамического NAT работает с пулом публичных адресов, которые назначаются на основе принципа «первым пришел, первым обслужен». При запросе внутренним устройством доступа к интернету динамическим NAT производится назначение из пула общедоступного адреса IPv4. Как и в случае со статическим, для динамического типа NAT необходимо достаточное число общедоступных адресов, чтобы удовлетворить совокупное число одновременных пользовательских сеансов.
Пример динамической NAT таблицы:
Dinamic NAT Table | |
Inside Local Address | Inside Global Adress |
192.168.1.2 | 208.165.17.5 |
Available | 208.165.17.6 |
Available | 208.165.17.7 |
Available | 208.165.17.8 |
Port Address Translation (PAT)
Это наиболее распространенный тип NAT. При использовании Port Address Translation NAT подключение осуществляет трансляцию нескольких приватных адресов на один или несколько общедоступных. Этот принцип используется в большинстве маршрутизаторов, которые устанавливаются дома у частных абонентов. Адрес назначается провайдером маршрутизатором. При этом одновременный доступ к интернету могут получать несколько домашних пользователей.
Применение PAT позволяет сопоставлять несколько адресов с одним или несколькими. Это возможно благодаря отслеживанию каждого приватного адреса по номеру порта. После начала сеанса TCP/IP устройство генерирует номер порта источника TCP или UDP, что позволяет идентифицировать сеанс. При получении пакета от клиента NAT-маршрутизатором, он однозначно идентифицирует перевод NAT, используя номер собственного исходного порта. Схема PAT гарантирует использование разных портов TCP устройствами для каждого сеанса. При поступлении ответа от сервера при этом типе NAT номер порта источника уже используется как номер порта получателя. Это позволяет маршрутизатору однозначно правильно передавать пакеты.
Маршрутизатор выполняет обработку каждого пакета и определяет устройство, с которого он выслан, используя номер порта. Адресом источника (Source Address) в этой схеме будет локальный адрес устройства с добавлением номера порта, который был назначен TCP/IP. Адресом назначения (Destination Address) при использовании TAP будет внешний локальный адрес с добавлением номера служебного порта, например, порта службы 80: HTTP. При ответе веб-сервера производится обратная трансформация адресов.
Часто на маршрутизаторе порты клиента изменяются, поскольку ранее назначенные порты могут закрепляться за другими работающими сеансами. В процессе NAT сессии PAT стремится сохранить исходный порт источника. Если же этот порт уже занят, выполняется назначение первого из доступных номеров. Поиск свободного номера начинается с начала группы портов 0–511, 512–1023 или 1024–65535. В случае если свободных портов не остается и имеется больше одного внешнего адреса в пуле адресов, PAT переходит на новый адрес для поиска исходного порта источника.
Между традиционным NAT и PAT есть существенные отличия. NAT осуществляет перевод IPv4-адреса на основе принципа «один к одному» между приватными и общедоступными IPv4-адресами. С другой стороны, PAT трансформирует и адрес, и номер порта. Перенаправление входящих пакетов в NAT интернете выполняется на заданный хостом IP-адрес источника. В схеме PAT предусматривается только один или небольшое число публично открытых адресов IPv4, поэтому перенаправление входящих данных осуществляется на основе NAT таблицы маршрутизатора.
Преимущества и недостатки NAT
Понимая, как работает NAT, можно выделить комплекс серьезных преимуществ, которые предоставляет этот механизм при организации сетей. В том числе к основным плюсам относятся такие свойства Network Address Translation:
- Сохранение зарегистрированной схемы адресации благодаря разрешению на приватизацию внутренних сетей. При использовании PAT возможно использование для внешних соединений одного общедоступного адреса IPv4 внутренними хостами. Эта схема требует малого количества внешних адресов для поддержки значительного числа внутренних хостов.
- Повышение гибкости коммуникации с интернетом. Обеспечение надежных сетевых подключений достигается благодаря многочисленным пулам адресов, пулам балансировки нагрузки и резервному копированию.
- Поддержка согласованной работы внутренних схем сетевой адресации. Если сеть не использует NAT и приватные адреса IPv4, то для изменения общей схемы адресов приходится проводить переадресацию всего комплекса хостов. Это может значительно повышать стоимость переадресации. При использовании NAT обеспечивается возможность сохранения действующей частной схемы адресов, что позволяет намного легче вносить изменения в общедоступную схему адресации. На практике это означает, например, возможность смены провайдера компании без внесения изменений в собственные внутренние клиенты.
- Поддержание высокого уровня сетевой безопасности. При использовании NAT частные сети не транслируют свою внутреннюю топологию и адреса, что повышает их надежность. При этом нужно учитывать, что NAT не является заменой решений сетевой безопасности, например, брандмауэра.
Особенностью NAT является организация прямого взаимодействия хостов в интернете с устройством, поддерживающим Network Address Translation, а не с фактическим хостом в локальной сети.
Тут выявляются некоторые недостатки механизма, в том числе:
- Определенное снижение производительности сети из-за увеличения задержке переключения при трансформации в пакетах каждого IPv4-адреса. Снижение производительности может быть чувствительным для VoIP и других протоколов реального времени.
- Потеря сквозной адресации, необходимой для работы ряда приложений и протоколов. Если приложение использует не квалифицированное доменное имя, а физические адреса, то пакеты не попадают к получателям через NAT-маршрутизатор. В некоторых случаях проблема устраняется при помощи статических сопоставлений NAT.
- Потеря сквозной трассировки IPv4. Из-за множества изменений адресов пакетов осложняется трассировка, определение и устранение неполадок.
- Осложнение работы IPsec и других протоколов туннелирования в результате изменения значений в заголовках, что затрудняет проверки целостности.
- Возможность нарушения работы stateless протоколов или служб, которые требуют инициирования TCP-соединений из внешней сети, если NAT-маршрутизатор не настроен для их поддержки.
В то же время NAT остается эффективным и удобным механизмом, применяемым для организации работы сетей с использованием адресов IPv4.