Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

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

Рубрика: Безопасность -> Топология сети
Метки: | |
Четверг, 5 февраля 2009 г.
Просмотров: 10764

Когда-то 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 позволяет распределять все входящие соединения между внут­ренними узлами сети.