Трансляция сетевых адресов
Как сказано выше, шлюз - это устройство с двумя адресами: по одному в каждой сети, к которой оно подключено.
Итак, из вашей LAN в WAN выходит только один адрес. Что произойдёт, если в LAN 5, 10 или даже 100 компьютеров одновременно пытаются использовать шлюз для выхода в Интернет?
Здесь на помощь приходит трансляция сетевых адресов (Network Address Translation, NAT). При NAT все компьютеры LAN «прячутся» за шлюзом:
- Хост в LAN устанавливает исходящее соединение с каким-либо узлом в WAN.
- Пакеты сначала поступают на шлюз (на пути наружу).
- Шлюз затем изменяет пакеты так, чтобы они выглядели так, будто:
- шлюз сам их создал;
- пакеты исходят из определённого порта шлюза (не обязательно того, с которого они изначально пришли). Этот порт сопоставлен с хостом LAN, который изначально отправил пакет. Теперь шлюз знает, что пакеты, приходящие на порт 30189 (например), нужно переслать внутри сети на хост 192.168.0.17 и на порт 80 (например).
- Шлюз отправляет пакеты в путь.
- Пакеты доходят до удалённого хоста-получателя.
- Удалённый хост отвечает и направляет ответ на IP-адрес и порт маршрутизатора, который раньше отправил пакеты.
- Маршрутизатор получает ответ (на порт 30189 в нашем примере), изменяет пакет и пересылает его внутри сети хосту, который изначально инициировал исходящее соединение.

![]() | Двоеточие (:) в конце IP-адреса обозначает порт этого адреса. Так, запись 64.233.187.107:80 означает порт 80 IP-адреса 64.233.187.107. |
Много хостов может инициировать исходящие соединения
Главное преимущество NAT - сокращение количества «настоящих» IP-адресов, которые нужны. Сотни компьютеров могут обмениваться данными с разными хостами в Интернете, используя всего один «настоящий» IP-адрес. Это даёт значительную экономию средств.
Ниже показаны четыре рабочие станции в одной LAN, которые одновременно обмениваются данными с тремя разными веб-серверами в WAN через один «настоящий» IP-адрес (адрес маршрутизатора):

Ни один хост не может принимать входящее соединение
Главный недостаток NAT - невозможность инициировать входящие соединения. Предположим, внутри сети есть хост и вы хотите установить с ним соединение извне (от какого-либо хоста в WAN). Маршрутизатор не будет знать, куда направить входящее соединение. Ни один внутренний хост не пытался установить исходящее соединение с этим удалённым хостом, поэтому ни один внутренний хост не сопоставлен с этим портом маршрутизатора и не ожидает соединения от этого внешнего хоста. Когда пакет приходит на маршрутизатор, он никуда не попадает (отбрасывается):

Совет | Подробнее о NAT, включая другие реализации, см. статью Википедии «Network address translation». |
