linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
home/linux/how/nat

how/network

Как работает NAT

Дома один публичный IP, а за роутером 10 устройств - все одновременно ходят в интернет. Магия в том что роутер «помнит» кому что писать.

У тебя дома один публичный IP от провайдера. А за роутером сидит ноут, телефон, телевизор и три IoT-устройства. Все одновременно ходят в интернет - и все получают ответы. Как один публичный IP обслуживает их всех?

Решение - NAT (Network Address Translation). Роутер на лету подменяет адреса в заголовках пакетов: исходящему пакету переписывает «обратный адрес» на свой публичный, входящему ответу - обратно на приватный адрес устройства внутри сети. А чтобы это работало, роутер запоминает каждое активное соединение в специальной таблице (см. conntrack).

Нажми ▶ - посмотрим жизненный цикл одного соединения сквозь NAT в обе стороны.

step 1/5·00 · клиент в приватной сети
LAN · 192.168.1.0/24WAN · public internetclient192.168.1.50ROUTERNAT routerlan .1 · wan 80.10.20.30server8.8.8.8CONNTRACK · /proc/net/nf_conntrackORIG SRC → TRANSLATED SRC DST(empty)клиент в приватной сети 192.168.1.0/24, его адрес не маршрутизируется в интернет

§ шаги

  1. У клиента адрес 192.168.1.50 - это приватный диапазон. Такие адреса в интернете дропаются провайдерами - они живут только внутри домашних/офисных сетей.

    Сам по себе клиент не может общаться с 8.8.8.8 напрямую - его src-адрес «не настоящий». Нужна помощь роутера.

    Таблица conntrack на роутере пуста - никаких активных соединений.

итого

Что важно запомнить:

  • Приватные IP (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) не маршрутизируются в интернете. Любой такой пакет провайдер дропнет. Поэтому всем приватным сетям нужен NAT для выхода наружу
  • NAT-таблица (conntrack) хранит каждое активное соединение - кто, к кому, по каким портам. Если таблица переполнена - новые коннекты дропаются
  • NAT ломает peer-to-peer: внешний хост не может инициировать коннект к внутреннему (нет записи в conntrack - нет куда форвардить). Поэтому VoIP, торренты и игры используют костыли: STUN/TURN/UPnP
  • Бывает DNAT (port forwarding) - заранее настроенное правило «всё что прилетит на мой публичный 80 → форвардь на 192.168.1.50:8080». Так домашние веб-серверы выставляются в интернет
  • Настоящее решение проблемы «мало адресов» - IPv6 с его 340 ундециллионами адресов. Каждое устройство получает реальный публичный IP, NAT не нужен

Если хочешь потрогать руками - есть урок intermediate-06-nat-and- masquerade с настройкой nftables и команда conntrack -L.

§ копнуть в базу знаний

  • natNAT - расширенная статья в KB
  • conntrackconntrack - таблица активных соединений
  • ipv4-addressingIPv4 - почему 192.168.x.x приватные
  • portport - что такое ephemeral-порты

§ попробовать руками

  • ›intermediate-06-nat-and-masquerade- NAT и masquerade - потрогать nftables
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки