Принципы действия NAT
Для установки соединения используется уникальная связка "адрес-порт". Другими словами, с хостом, имеющим один IP-адрес, может быть установлено множество соединений. Однако каждое из этих соединений будет использовать различные порты. Как правило, механизм NAT используется в ситуации, когда несколько частных адресов отображаются на один действительный адрес.
Для пакетов, исходящих из NAT, частный адрес, указанный в заголовке пакета в поле отправителя, отображается в действительный адрес, выданный интернет-провайдером, а номер порта TCP/UDP отображается в другой номер порта TCP/UDP. Для пакетов, приходящих NAT, действительный адрес, указанный в заголовке пакета в поле получателя, отображается в оригинальный адрес интрасети (частный адрес), а номер порта TCP/UDP отображается обратно к оригинальному номеру порта TCP/UDP. При этом TCP- и UDP-порты выбираются динамически, чтобы отличить один компьютер внутри интрасети от другого. Механизм NAT поддерживает специальную таблицу, в которую заносятся сведения об отображениях. Благодаря этой таблице механизм поддерживает уже установленные соединения, .используя для передачи входящих пакетов ту же связку "адрес-порт", которая использовалась для установки соединения.
Для демонстрации принципов работы механизма NAT рассмотрим следующий пример. Допустим, имеется небольшая локальная сеть предприятия, в которой для адресации хостов используется идентификатор сети 192.168.0.0. Так же предприятию интернет-провайдером выделен некоторый адрес a.b.c.d. Механизм NAT отображает все частные адреса в сети 192.168.0.0 в IP-адрес a.b.c.d (рис. 14.10).
Рис. 14.10. Пример работы механизма NAT
Допустим, пользователь локальной сети предпринимает попытку соединиться с веб-сервером, имеющим действительный адрес e.f.g.h. В этом случае клиентский компьютер формирует IP-пакет со следующей информацией в заголовке:
- IP-адрес получателя: e.f.g.h
- IP-адрес отправителя: 192.168.0.10
- порт получателя: TCP-порт 80
- порт отправителя: TCP-порт 1025
Механизм NAT выполняет преобразование заголовка этого пакета в следующий заголовок:
- IP-адрес получателя: e.f.g.h
- IP-адрес отправителя: a.b.c.d
- порт получателя: TCP-порт 80
- порт отправителя: TCP-порт 5000
Обратите внимание, что вместо частного адреса хоста, расположенного в локальной сети, в качестве отправителя указывается действительный адрес компьютера-преобразователя. При этом информацию о выполненном преобразовании {192.168.0.10, TCP 1025} в {a.b.c.d, TCP 5000} компьютер запоминает в своей внутренней таблице.
После выполнения преобразования IP-пакет может быть передан в Интернет. Поскольку в качестве отправителя пакета указан компьютер-преобразователь, удаленная служба сформирует ответный пакет, который будет адресован этому компьютеру. Ответный пакет содержит следующую информацию в заголовке:
- IP-адрес получателя: a.b.c.d
- IP-адрес отправителя: e.f.g.h
- порт получателя: TCP-порт 5000
- порт отправителя: TCP-порт 80
Механизм NAT анализирует полученный пакет и, используя собственную адресную таблицу, отображает действительные адреса в частные. По окончании преобразования пакет будет передан хосту во внутренней сети (в нашем случае по адресу 192.168.0.10). При этом пакет содержит следующую информацию в заголовке:
- IP-адрес получателя: 192.168.0.10
- IP-адрес отправителя: e.f.g.h
- порт получателя: TCP-порт 1025
- порт отправителя: TCP-порт 80
|