Трансляция адресов(NAT)
Метки: DNAT | NAT | SNAT
Четверг, 5 февраля 2009 г.
Просмотров: 4233
Когда-то IP-адресов хватало на всех, и они стоили очень дешево. Компании выкупали сети класса С (253 узла) или даже сети класса В (около 64 000 узлов). Тогда всем машинам присваивался собственный IP-адрес из адресного пространства сети Интернет.
Но, как говорится, было и прошло. Теперь нет того огромного пространства свободных IP-адресов, следовательно все чаще и чаще организации покупают не сеть класса С (не говоря уже о сети класса В), а всего лишь один единственный реальный IP-адрес. Для адресации компьютеров внутренней сети используются так называемые внутренние IP-адреса. Такие адреса не обрабатываются маршрутизаторами Интернета и могут быть в разных организациях. Во всем мире есть большое количество организаций, где внутренние адреса одни и те же.

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

Клиент отправляет запрос к серверу 1.2.100.9. Данный сервер находится за пределами локальной сети - где-то в Интернете (адрес отправителя 10.0.0.1, адрес получателя 1.2.100.9). NAT-маршрутизатор перезаписывает адрес отправителя (1.2.3.7 - это адрес NAT-маршрутизатора) и отправляет пакет серверу с адресом 1.2.100.9.
Сервер 1.2.100.9 получает пакет с адресом отправителя 1.2.3.7 и адресом получателя 1.2.100.9. Сервер обрабатывает пакет и отправляет ответ на адрес 1.2.3.7 (отправителю). NAT-маршрутизатор запоминает все попытки соединений и возвращает пакет исходному компьютеру - с адресом 10.0.0.1. Адрес получателя у этого пакета будет 10.0.0.1, а адрес отправителя - 1.2.200.9 (а не 1.2.3.7) - как если бы ответ пришел непосредственно от сервера. Для клиента (10.0.0.1) процесс трансляции сетевых адресов во всех отношениях прозрачен.
Обработать входящие соединения гораздо сложнее. NAT-маршрутизатор получает пакет с адресом получателя 1.2.3.7 (это адрес NAT-маршрутизатора) и адресом отправителя 1.2.100.9. И что с этим пакетом делать дальше? Кому его отправить?

Например, NAT настроен на перенаправление всех входящих соединений по портам 80 и 443 (HTTPS) к Web-серверу 10.1.1.4, а по портам 25 (SMTP) и 110 (РОРЗ) - к почтовому серверу 10.1.1.5. Все остальные входящие пакеты, не отвечающие этим правилам, будут отброшены.
Есть несколько форм NAT. Каждая форма используется в определенном случае. Одни используются для трансляции внутренних IP-адресов в реальные IP-адреса (или один), другие выполняют трансляцию адресов между IPv4 и IРv6-сетями, оставшиеся годятся для разрешения потенциальных конфликтов между двумя сетями, использующими одинаковый диапазон IP-адресов.
Наиболее интересны две формы NAT: трансляция адреса отправителя (source NAT, SNAT) - временами называется трансляцией сетевого адреса и трансляцией порта (порт отправителя также перезаписывается) - и трансляция адреса получателя (destination NAT, DNAT), которая нередко используется с форвардингом портов.
SNAT - это многажды используемая форма NAT, позволяющая внутренним узлам локальной сети (с внутренними IP-адресами) устанавливать соединения с компьютерами, находящимися за пределами сети (как правило, с интернет-узлами).
DNAT больше подходит для сетей, у которых есть единственный реальный IP-адрес, DNAT позволяет распределять все входящие соединения между внутренними узлами сети.