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
- Устройство отправляет пакет с внутреннего IP.
- Маршрутизатор изменяет IP-адрес отправителя на внешний и запоминает соответствие.
- Ответный пакет приходит на внешний IP маршрутизатора.
- Маршрутизатор по таблице 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.