NAT, PAT и Proxy: в чём разница?
👋 Приветствую в мире цифровой безопасности!
Все три механизма могут скрывать внутренний адрес клиента, но делают это по-разному.
⏺NAT меняет IP-адрес в заголовке пакета. Например, внутренний хост 192.168.1.10 выходит в Интернет через публичный 203.0.113.5:
192.168.1.10 → NAT → 203.0.113.5 → Internet
NAT меняет адреса и отслеживает соответствие соединений. Сам трафик при этом продолжает идти между клиентом и сервером.
⏺PAT использует ещё и номера портов. Поэтому несколько внутренних машин могут одновременно выходить через один публичный IP:
192.168.1.10:49152 → 203.0.113.5:40001
192.168.1.11:49153 → 203.0.113.5:40002
По номеру порта роутер понимает, какому внутреннему соединению вернуть ответ.
⏺Proxy работает иначе. Он принимает соединение от клиента и сам устанавливает отдельное соединение с сервером:
Client → Proxy → Server
Поэтому proxy может разбирать HTTP-запросы, применять фильтры, вести логи или терминировать TLS при включённом TLS inspection.
⏺В Wireshark это особенно заметно при сравнении TCP-сессий. При NAT клиент и сервер всё ещё находятся в одном TCP-соединении, только адрес источника изменён. У proxy появляются две отдельные сессии:
Client ↔ Proxy
Proxy ↔ Server
У них могут отличаться TCP-параметры, временные характеристики и даже версии протоколов.
⏺Поэтому NAT сам по себе не является firewall, PAT не делает трафик анонимным, а proxy может стать полноценной точкой контроля трафика. Запомнить можно так: NAT меняет адрес, PAT меняет адрес и порт, Proxy принимает одно соединение и создаёт другое.