Перейти к содержанию

NAT

Введение в NAT

Что такое NAT?

NAT (Network Address Translation) — технология, используемая в компьютерных сетях для преобразования IP-адресов в пакетах, проходящих через маршрутизатор или брандмауэр. Основная цель — предоставление устройствам в частной сети доступа к внешней сети (обычно к Интернету), используя один или несколько общедоступных IP-адресов.

Зачем нужен NAT?

  • Экономия глобальных IPv4-адресов
  • Безопасность: скрытие внутренней структуры сети
  • Упрощение маршрутизации и изоляции

Частные и публичные IP-адреса

Частные диапазоны (RFC 1918):

  • 10.0.0.0 — 10.255.255.255 (10.0.0.0/8)
  • 172.16.0.0 — 172.31.255.255 (172.16.0.0/12)
  • 192.168.0.0 — 192.168.255.255 (192.168.0.0/16)

Публичные IP-адреса — глобально маршрутизируемые в интернете.

Преимущества NAT

  • Экономия адресов
  • Простота настройки
  • Защита от внешнего мира
  • Гибкость и масштабируемость (особенно PAT)
  • Универсальность применения (дом, офис, дата-центр)

Недостатки

  • Не поддерживает сквозную маршрутизацию (end-to-end)
  • Требует обходных решений для некоторых протоколов
  • Может вызывать задержки и потери в определённых сценариях
  • Сложность диагностики проблем с соединениями

Виды NAT

Static NAT (Статический NAT)

Static NAT обеспечивает постоянное отображение одного частного IP-адреса на один публичный IP-адрес. Используется в случаях, когда внутреннему ресурсу (например, веб-серверу) необходимо обеспечить постоянную доступность извне.

Характеристики:

  • Прост в понимании и конфигурации.
  • Не масштабируется для больших сетей (не экономит IP-адреса).

Плюсы:

  • Предсказуемость — всегда известно, какой IP использовать для подключения.

Минусы:

  • Требует столько же публичных IP, сколько внутренних устройств.

Пример:

Внутренний: 192.168.1.100 <-> Внешний: 203.0.113.100

Dynamic NAT (Динамический NAT)

Dynamic NAT использует пул внешних IP-адресов, из которого временно назначает IP-адреса внутренним устройствам при их выходе в интернет. Когда пул исчерпан — новые подключения невозможны.

Характеристики:

  • Менее предсказуем, чем Static NAT.
  • Более экономичный, чем Static NAT.

Плюсы:

  • Более рациональное использование внешних IP по сравнению со статическим.

Минусы:

  • Нет гарантии постоянного отображения IP (нестабилен для серверов).

Пример:

Внутренний IP 192.168.1.101 -> свободный IP из пула 203.0.113.100–203.0.113.110

PAT (Port Address Translation) / NAT Overload

Наиболее распространённая форма NAT. Все устройства используют один внешний IP-адрес, различаясь по номерам портов. Каждый внутренний IP-адрес и порт сопоставляется с уникальной комбинацией внешнего IP-адреса и порта.

Характеристики:

  • Используется в большинстве домашних и корпоративных сетей.
  • Отлично масштабируется — один внешний IP на тысячи устройств.

Плюсы:

  • Очень экономно в использовании публичных адресов.
  • Хорошо работает для клиентов, которым не требуется доступ извне.

Минусы:

  • Проблемы с соединениями, чувствительными к портам (голос, видео, IPsec).

Пример:

192.168.1.10:12345 -> 203.0.113.1:54321
192.168.1.11:23456 -> 203.0.113.1:65432

Входящие соединения извне к таким хостам невозможны без дополнительных правил переадресации портов (Port Forwarding).

Принцип работы NAT

  1. Устройство отправляет пакет с внутреннего IP.
  2. Маршрутизатор изменяет IP-адрес отправителя на внешний и запоминает соответствие.
  3. Ответный пакет приходит на внешний IP маршрутизатора.
  4. Маршрутизатор по таблице NAT восстанавливает внутренний адрес и пересылает пакет.

Таблица NAT (Translation Table):

  • Внутренний IP:Порт
  • Внешний IP:Порт
  • Протокол (TCP/UDP)
  • Время последнего использования

NAT и протоколы

Некоторые протоколы не работают с NAT без дополнительных механизмов:

  • SIP, H.323 — голос и видео
  • FTP (активный режим)
  • IPsec (ESP)

Эти протоколы встраивают IP-адреса или управляющие команды в полезную нагрузку, что вызывает конфликты при изменении IP-адресов маршрутизатором.

Решения:

  • ALG (Application Layer Gateway) — встроенные в маршрутизаторы механизмы, которые отслеживают и модифицируют трафик проблемных протоколов.
  • NAT Traversal (обход NAT):
    • STUN (Session Traversal Utilities for NAT) — определяет внешний IP и порт клиента за NAT.
    • TURN (Traversal Using Relays around NAT) — ретранслирует трафик через внешний сервер.
    • ICE (Interactive Connectivity Establishment) — выбирает наилучший маршрут соединения между двумя клиентами.

Поддержка NAT-протоколов — критически важна при работе с VoIP, VPN и видеосвязью.

NAT и безопасность

Преимущества NAT с точки зрения безопасности:

  • Скрытие внутренней топологии: NAT затрудняет злоумышленникам понимание внутренней архитектуры сети.
  • Фильтрация входящего трафика: по умолчанию соединения извне невозможны, если явно не настроено переадресацию (Port Forwarding).
  • Сложнее провести атаку по IP: атакующий видит только внешний IP-адрес маршрутизатора.
  • Снижение числа открытых портов: уменьшается поверхность атаки.

Недостатки NAT в контексте безопасности:

  • Ложное чувство защищённости: NAT — это не фаервол и не заменяет полноценную систему безопасности.
  • Сложности с инспекцией трафика: затрудняет DPI (Deep Packet Inspection) и IDS/IPS-системы, поскольку скрываются оригинальные IP-адреса.
  • Трудности с ведением логов: особенно при использовании PAT сложно отследить, какой именно внутренний клиент инициировал соединение.
  • Проблемы при использовании шифрования: NAT нарушает сквозную маршрутизацию, что может быть критично для IPsec и других защищённых туннелей.

NAT в конфигурации Cisco

В Cisco Packet Tracer существуют три основных вида NAT:

  • Static NAT
  • Dynamic NAT
  • PAT (Port Address Translation), также известный как NAT Overload

Static NAT

Static NAT используется для отображения одного внутреннего IP-адреса на один внешний.

Схема:

  • Внутренняя сеть: 192.168.1.0/24
  • Внутренний хост: 192.168.1.10
  • Внешний IP: 203.0.113.10

Команды:

Router> enable
Router# configure terminal
Router(config)# interface FastEthernet0/0
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Router(config-if)# ip nat inside
Router(config-if)# exit

Router(config)# interface FastEthernet0/1
Router(config-if)# ip address 203.0.113.1 255.255.255.0
Router(config-if)# ip nat outside
Router(config-if)# exit

Router(config)# ip nat inside source static 192.168.1.10 203.0.113.10

Объяснение команд:

  • ip nat inside / ip nat outside — определяют, какие интерфейсы находятся во внутренней и внешней зоне NAT.
  • ip nat inside source static <inside-local> <inside-global> — статически отображает внутренний IP на внешний.

Dynamic NAT

Dynamic NAT отображает внутренние адреса на доступные внешние из заранее заданного пула.

Схема:

  • Внутренняя сеть: 192.168.1.0/24
  • Пул внешних адресов: 203.0.113.100 – 203.0.113.110

Команды:

Router> enable
Router# configure terminal
Router(config)# ip nat pool MYPOOL 203.0.113.100 203.0.113.110 netmask 255.255.255.0
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# ip nat inside source list 1 pool MYPOOL

Router(config)# interface FastEthernet0/0
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Router(config-if)# ip nat inside
Router(config-if)# exit

Router(config)# interface FastEthernet0/1
Router(config-if)# ip address 203.0.113.1 255.255.255.0
Router(config-if)# ip nat outside
Router(config-if)# exit

Объяснение команд:

  • ip nat pool <name> <start-ip> <end-ip> netmask <mask> — задает пул внешних IP.
  • access-list 1 permit — определяет, какие адреса можно преобразовывать.
  • ip nat inside source list <ACL> pool <name> — привязывает ACL к пулу для NAT.

PAT (NAT Overload)

PAT позволяет множеству внутренних IP-адресов использовать один внешний IP, различая их по номерам портов.

Схема:

  • Внутренняя сеть: 192.168.1.0/24
  • Внешний IP интерфейса: 203.0.113.1

Команды:

Router> enable
Router# configure terminal
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# ip nat inside source list 1 interface FastEthernet0/1 overload

Router(config)# interface FastEthernet0/0
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Router(config-if)# ip nat inside
Router(config-if)# exit

Router(config)# interface FastEthernet0/1
Router(config-if)# ip address 203.0.113.1 255.255.255.0
Router(config-if)# ip nat outside
Router(config-if)# exit

Объяснение команд:

  • access-list — выбирает внутренние IP-адреса.
  • ip nat inside source list <ACL> interface <interface> overload — выполняет PAT, используя IP внешнего интерфейса и порты.

Проверка NAT

Для проверки статуса NAT можно использовать команды:

Router# show ip nat translations
Router# show ip nat statistics

Эти команды покажут текущие преобразования и статистику NAT.