Оба «меняют IP-адрес» — но на совершенно разных уровнях и с разными целями. NAT — это техника маршрутизации, а прокси — это промежуточный сервер. Понимание разницы объясняет и то, почему роутер у вас дома не является прокси.
Разница в уровне и методе
NAT меняет заголовки пакетов и вообще не смотрит на содержимое. Прокси же завершает соединение и устанавливает новое от своего имени.
Главное различие: завершение соединения
Это важнейшее различие между двумя техниками:
При NAT пакет остаётся тем же пакетом; меняются только адресные поля. У прокси же есть два отдельных соединения, и прокси копирует данные между ними.
NAT у вас дома
Ваш домашний роутер выполняет NAT: он транслирует частные адреса внутренних устройств в один публичный IP. Это не прокси, потому что:
- На ваших устройствах не нужно ничего настраивать.
- Роутер не завершает соединение, а лишь пересылает пакеты.
- Он не читает содержимое, не фильтрует и не кэширует его.
- Он не запрашивает аутентификацию.
Его аналог операторского масштаба — CGNAT — мы в отдельной статье разобрали ранее; именно отсюда берётся сила мобильных прокси.
Разница в видимости
Результат выглядит схоже, но механизм разный. Прокси может раскрыть реального клиента, добавив заголовок; NAT этого сделать не может, потому что вообще не затрагивает уровень приложения.
Практические следствия
| Потребность | Достаточно ли NAT? | Нужен ли прокси? |
|---|---|---|
| Вывести несколько устройств через один IP | Да | Может ли добавлять заголовки |
| Выходить из другой страны | Может ли добавлять заголовки | Да |
| Фильтрация контента | Может ли добавлять заголовки | Да |
| Разный выход для разных приложений | Может ли добавлять заголовки | Да |
| Доступ с аутентификацией | Может ли добавлять заголовки | Да |
| Ведение журнала доступа | Ограниченно | Да |
Если вы говорите «хочу скрыть свой IP-адрес», NAT уже это делает, но только в пределах вашей локальной сети. Если вы говорите «хочу выходить из другой страны или под другой личностью», нужен прокси.
Проброс портов и входящие соединения
Известное ограничение NAT — невозможность принимать входящие соединения. Чтобы обойти это, используют проброс портов. Если вы находитесь за CGNAT, выполнить проброс портов не получится, потому что публичный IP вам не подконтролен.
У прокси ситуация иная: forward-прокси и так предназначен для исходящих соединений; принимать входящие — задача обратного прокси. Различие мы в статье о forward- и reverse-прокси — загляните туда.
Резюме
NAT — это техника маршрутизации, переписывающая заголовки пакетов на сетевом уровне; прокси же — промежуточный сервер, который завершает соединение и устанавливает новое от своего имени. NAT не требует никаких настроек и не знает о содержимом; прокси может выполнять аутентификацию, фильтрацию, кэширование и выбор географической точки выхода. Ваш домашний роутер выполняет NAT, а не проксирование — поэтому, когда вы хотите выходить из другой страны, нужен прокси. Варианты см. резидентный и ISP-прокси смотрите наши страницы.