[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ustroystvo-pk-i-seti-chto-takoe-nat-i-zachem-on-nuzhen":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":22,"progress":23,"seo":24},238,"chto-takoe-nat-i-zachem-on-nuzhen",7,"ustroystvo-pk-i-seti","Устройство ПК и сети","🖥️","Что такое NAT и зачем он нужен?","\u003C!-- grade: junior\u002Fmiddle -->\n\n**NAT (Network Address Translation)** — механизм преобразования IP-адресов в заголовках пакетов при их прохождении через маршрутизатор, позволяющий множеству устройств с приватными IP-адресами выходить в Интернет через один публичный IP-адрес.\n\n> **Аналогия из жизни:** NAT — это секретарь в офисе. Все сотрудники (приватные IP) звонят через один общий телефон компании (публичный IP). Секретарь (маршрутизатор с NAT) запоминает, кто кому звонил, и когда приходит ответный звонок — переключает его на нужного сотрудника.\n\n### Зачем нужен NAT\n\n- **Экономия IPv4-адресов** — организация может иметь один публичный IP на маршрутизаторе, а внутри сети использовать приватные адреса (`192.168.x.x`) для сотен устройств\n- **Безопасность** — устройства за NAT не видны из Интернета напрямую, что затрудняет прямые атаки на них\n- **Гибкость** — можно менять внутреннюю структуру сети, не меняя внешний IP\n\n### Как работает NAT (PAT \u002F NAPT)\n\n```\nВнутренняя сеть                Маршрутизатор (NAT)                  Интернет\n                               Публичный IP: 203.0.113.5\n\nPC1 (192.168.1.10:5000) ──→  NAT → 203.0.113.5:40001 ────→  Сервер (93.184.216.34:80)\nPC2 (192.168.1.20:5000) ──→  NAT → 203.0.113.5:40002 ────→  Сервер (93.184.216.34:80)\n```\n\n1. PC1 отправляет пакет: `src=192.168.1.10:5000`, `dst=93.184.216.34:80`\n2. NAT заменяет `src` на `203.0.113.5:40001` и записывает соответствие в **NAT-таблицу**\n3. Сервер отвечает на `203.0.113.5:40001`\n4. NAT смотрит в таблицу, заменяет `dst` обратно на `192.168.1.10:5000` и пересылает PC1\n\n### Типы NAT\n\n| Тип | Что делает | Пример использования |\n|---|---|---|\n| **SNAT (Source NAT)** | Подмена адреса источника | Внутренние устройства выходят в Интернет через один публичный IP |\n| **DNAT (Destination NAT)** | Подмена адреса назначения | Port forwarding: перенаправление входящих соединений на внутренний сервер |\n| **PAT \u002F NAPT** | NAT с трансляцией портов | Множество устройств за одним IP, различаются портами (самый распространённый) |\n| **Full Cone NAT** | Любой внешний хост может отправить пакет внутреннему через mapped port | P2P-приложения |\n| **Symmetric NAT** | Отдельный mapping для каждой пары (внутренний, внешний) | Корпоративные сети (самый строгий) |\n\n### Проблемы NAT\n\n- Некоторые протоколы (FTP active mode, SIP, P2P) плохо работают через NAT — они передают IP-адрес внутри payload\n- Невозможно подключиться извне к устройству за NAT без port forwarding или UPnP\n- Усложняет P2P-соединения (нужен STUN\u002FTURN для WebRTC)\n- Нарушает принцип end-to-end connectivity\n- При IPv6 NAT не нужен — адресов достаточно для каждого устройства\n\n### Для Java-разработчика\n\n- При развёртывании приложения в Docker-контейнере оно находится за NAT (Docker bridge network). Порт пробрасывается через `-p 8080:8080`\n- Port forwarding необходим, чтобы внешний трафик достигал серверного приложения за NAT\n- В Kubernetes Service (ClusterIP, NodePort, LoadBalancer) реализует NAT-подобную трансляцию для Pod-ов\n- При отладке сетевых проблем важно понимать, что `request.getRemoteAddr()` за NAT возвращает IP NAT-устройства, а не клиента. Для получения реального IP нужен заголовок `X-Forwarded-For`\n\n### Вывод\n\nNAT — ключевая технология, позволившая Интернету функционировать при ограниченном количестве IPv4-адресов. Он обеспечивает и экономию адресов, и базовый уровень безопасности, но создаёт проблемы для протоколов, требующих прямой связности.\n\n> **На собеседовании:** объясните разницу между SNAT и DNAT, приведите пример port forwarding. Часто спрашивают в контексте Docker: как контейнер общается с внешним миром (через NAT bridge-сети) и как внешний трафик попадает в контейнер (через `-p` \u002F DNAT).","","junior",[15,16,17,18,19,20,21],"nat","dnat","pat","ipv4","сети","snat","маршрутизатор",[],null,{"title":25,"description":26,"ogTitle":27,"ogDescription":28,"keywords":29,"schemaAnswer":36,"featuredSnippetReady":37},"NAT — Network Address Translation, типы SNAT, DNAT, PAT — Gymterview","NAT преобразует приватные IP в публичные на маршрутизаторе. Типы: SNAT (исходящий трафик), DNAT (port forwarding), PAT (трансляция портов). Экономия IPv4, безопасность.","NAT — преобразование IP-адресов на маршрутизаторе","NAT заменяет приватный IP (192.168.x.x) на публичный. SNAT — исходящий трафик. DNAT — port forwarding. PAT — множество устройств через один IP с разными портами.",[30,31,32,33,34,35],"NAT что это","Network Address Translation","SNAT DNAT PAT","NAT таблица","port forwarding","NAT зачем нужен","NAT (Network Address Translation) — механизм преобразования IP-адресов при прохождении пакетов через маршрутизатор. Экономит IPv4-адреса (сотни устройств за одним публичным IP) и повышает безопасность. Типы: SNAT (подмена адреса источника, выход в Интернет), DNAT (подмена назначения, port forwarding), PAT (трансляция портов, множество устройств через один IP).",true]