Skip to content

NAT

Теоретические сведения

Синонимы:

  • Network Address Translation
  • Трансляция сетевых адресов
  • Преобразование сетевых адресов

Зачем нужен NAT

  • Экономия IPv4-адресов, т.к. публичных IPv4-адресов недостаточно для обеспечения уникальности всех устройств

img

  • Частные (приватные) адреса всетречаются повсюду

img

  • Частные адреса преобразуются в другие частные или публичные адреса

img

Приватные адреса

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

Кто может использовать адреса?

  • Приватные (или серые) - все, кто хочет и как хочет
  • Публичные (или белые) - НЕ могут использоваться всеми

С помощью приватного адреса нельзя добраться в Интернете до ресурсов, поэтому частные адреса преобразуются в публичные.

Конфиденциальность и безопасность сети

  • Со стороны Интернета не видна структура внутренней сети
  • Со стороны Интернета невозможно попасть во внутреннюю сеть просто так
    • Проброс портов
    • Сначала запрос из внутренней сети, только потом может быть пропущен ответ из Интернета во внутреннюю сеть

img

  • Если клиентов во внутренней сети несколько, и все они обращаются на один сервер, то для сервера у клиентов один и тот же IP-адрес

    • Сервер отличает их по портам транспортного уровня
    • Устройства NAT отличают ответы от сервера тоже по портам, для этого у них есть специальная таблица
  • Несколько клиентов во внутренней сети обращаются к одному серверу во внешней сети

img

Типы NAT

  • Взаимно-однозначное соответствие между локальным и глобальным адресами
  • Назначается администратором
  • Может потребоваться большое количество
  • Целесообразно использовать только для серверов
  • Если устройство, за которым закреплен адрес, не выходит в Интернет, то и адрес "простаивает"
  • Сопоставление адресов по схеме "многие ко многим" между локальными и глобальными адресами
  • Отличается от статического тем, что за устройством не закреплен публичный адрес, поэтому "простои" глобального адреса менее заметны
  • Сопоставление адресов по схеме "многие к одному" между локальными и глобальным адресами
  • По умолчанию используется большинством домашних маршрутизаторов
  • Клиенты "отличаются" портами
  • Если нельзя сохранить оригинальный порт, то выбирается следующий доступный
  • Если нет доступных портов, то выбирается следующий адрес с оригинальным портом

Проброс портов

Позволяет получить доступ к ресурсам, которые находятся во внутренней сети, со стороны Интернета.

  • На устройстве NAT, к которому подключен сервер, необходимо настроить проброс портов
  • Проброс портов может быть множественным

Обращение к серверу, который находится за NAT

DDNS

  • Провайдер выдает публичный адрес, но он может меняться, т.е. адрес не статический
  • Служба DNS, которая автоматически меняет DNS-записи, когда адрес изменяется
    • Маршрутизатор следит за изменением адреса
    • На этом же маршрутизаторе настраивается DDNS, если поддерживается

Пример

  • В каждой локальной сети есть несколько ПК
  • Везде в примере адреса статические, но они могут быть и динамиечкими при определенных условиях
  • В LAN дома 1 есть сервер, который пользователь хочет сделать доступным из сети Интернет
  • Любое устройство должно уметь общаться с сервером в Интернете
  • VLAN для деления частных и публичных адресов в сети провайдера 1

L1 схема

img

L3 схема

img

Настройка домашней сети 1

conf t
int e0/0
ip add 192.168.0.1 255.255.255.0
no sh
end
ip 192.168.0.2/24 192.168.0.1
ip 192.168.0.3/24 192.168.0.1

Настройка домашней сети 2

conf t
int e0/0
ip add 192.168.0.1 255.255.255.0
no sh
end
ip 192.168.0.2/24 192.168.0.1

Настройка домашней сети 3

conf t
int e0/0
ip add 192.168.0.1 255.255.255.0
no sh
end
ip 192.168.0.2/24 192.168.0.1

Настройка сети провайдера 1

conf t
int e0/1
ip add 10.0.0.2 255.255.255.0
no sh
end
conf t
int e0/1
ip add 10.0.0.3 255.255.255.0
no sh
end
conf t
int e0/0
ip add 10.0.0.1 255.255.255.0
no sh
end

Настройка сети провайдера 2

conf t
int e0/1
ip add 10.0.0.2 255.255.255.0
no sh
end
conf t
int e0/1
ip add 10.0.0.1 255.255.255.0
no sh
end

Настройка сети "Интернет"

conf t
int e0/1
ip add 1.0.0.1 255.255.255.0
no sh
end
conf t
int e0/0
ip add 1.0.0.2 255.255.255.0
no sh
end
ip 1.0.0.3/24

На данный момент устройства, находящиейся в разных сетях, не будут доступны друг другу.

Если на PC1 выполнить ping 10.0.0.1, то будет timeout потому, что R4 не знает, куда отправить ответ.

Если же на PC1 выполнить ping 10.0.0.2, то доступ есть, т.к. пингуется R1, а он одним интерфейсом находится в той же сети, что и PC1.

Настройка NAT в домашних сетях

Необходимо указать, какой интерфейс на маршрутизаторе будет внутренним, а какой - внешним.

conf t
int e0/1
ip nat outside
exit
int e0/0
ip nat inside
end

Далее настройка самого NAT. В данном случае будет PAT. С помощью ACL указывается, какие адреса необходимо преобразовывать.

conf t
access-list 1 permit 192.168.0.0 /24
ip nat inside source list 1 interface e0/1 overload
end

Теперь PC1 должен "пинговать" R4.

Аналогичные настройки выполняются на R2 и R3.

conf t
int e0/1
ip nat outside
exit
int e0/0
ip nat inside
exit
access-list 1 permit 192.168.0.0 /24
ip nat inside source list 1 interface e0/1 overload
end

Теперь PC2 должен "пинговать" R4.

Будет ли PC2 пинговать R1?

conf t
int e0/1
ip nat outside
exit
int e0/0
ip nat inside
exit
access-list 1 permit 192.168.0.0 /24
ip nat inside source list 1 interface e0/1 overload
end

PC3 теперь "пингует" R5.

Настройка NAT в сетях провайдера

Настройки аналогичные.

conf t
int e0/1
ip nat outside
exit
int e0/0
ip nat inside
exit
access-list 1 permit 10.0.0.0 /24
ip nat inside source list 1 interface e0/1 overload
end
conf t
int e0/0
ip nat outside
exit
int e0/1
ip nat inside
exit
access-list 1 permit 10.0.0.0 /24
ip nat inside source list 1 interface e0/0 overload
end

Если попробовать "пропинговать" сервер в Интернете с любого ПК, то ничего не выйдет. Происходит так потому, что на R1-3 нет маршрутов в ту сеть. Можно создать такой маршрут, или маршрут по умолчанию.

conf t
ip route 0.0.0.0 0.0.0.0 10.0.0.1
end

✔️ Теперь все смогут "пинговать" сервер в Интернете.

На данный момент доступ к SRV1 есть только у устройств из домашней сети 1.

Кого сможет пинговать SRV2 на данный момент?

Настройка доступа к SRV1 из "Интернета"

Пусть у SRV1 будет публичный адрес 1.0.0.10. Далее продемонстрирована настройка статического NAT.

conf t
ip nat inside source static 10.0.0.10 1.0.0.10
end

sh ip nat transl
Pro Inside global      Inside local       Outside local      Outside global
--- 1.0.0.10           10.0.0.10          ---                ---

Из-за двойного NAT необходимо выполнить еще настройки на R1.

conf t
ip nat inside source static 192.168.0.3 10.0.0.10
end

sh ip nat transl
Pro Inside global      Inside local       Outside local      Outside global
--- 10.0.0.10          192.168.0.3        ---                ---
R1#

✔️ Теперь можно "пинговать" SRV1 с других устройств. "Пинговать" нужно публичный адрес SRV1 - 1.0.0.10.

PC2 может пинговать SRV1 по адресу 10.0.0.10. PC3 так сделать не сможет. Почему?

Настройка статического NAT при такой схеме не очень удобна и на самом деле не очень реализуема, т.к. нужно "заставить" провайдера настроить статический NAT.

Использование VLAN для выдачи публичных адресов

  • В сети провайдера 1 выдана публичная сеть - 2.0.0.0/24
  • R1 провайдер выдал публичный адрес - 2.0.0.10
  • R2 не должен получать публичный адрес
  • R5 и SRV2 нужно рассказать, где находится эта публичная сеть
  • На R1 нужно будет все равно настроить статический NAT, но провайдеру уже не нужно будет выполнять дополнительных настроек
  • VLAN 2 - для публичной сети
  • VLAN 10 - для приватной сети

Сначала будет удален адрес на R4 для создания подынтерфейсов.

conf t
int e0/0
no ip add 10.0.0.1 255.255.255.0
end

conf t
int e0/0.2
enc dot1q 2
ip add 2.0.0.1 255.255.255.0
exit
int e0/0.10
enc dot1q 10
ip add 10.0.0.1 255.255.255.0
end

Далее нужно настроить транк и порты доступа на S1.

conf t
int e0/0
sw trunk enc dot1q
sw mode trunk
exit
int e0/1
sw mode access
sw access vlan 2
exit
int e0/2
sw mode access
sw access vlan 10
end

На R2 не нужны никакие изменения, а на R1 нужно назначить публичный адрес на порт e0/1. По идее он должен выдаваться динамически с привязкой к MAC-адресу, но в примере, как уже было отмечено, все адреса статические.

conf t
int e0/1
no ip add 10.0.0.2 255.255.255.0
ip add 2.0.0.10 255.255.255.0
end

На R1 нужно добавить новое правило трансляции и удалить старое.

conf t
no ip nat inside source static 192.168.0.3 10.0.0.10
ip nat inside source static 192.168.0.3 2.0.0.10
end
sh ip nat translations

Осталось настроить маршруты в сеть 2.0.0.0/24 на R5 и SRV2. На SRV2 можно задать только шлюз по умолчанию.

conf t
ip route 2.0.0.0 255.255.255.0 1.0.0.1
end
conf t
ip route 0.0.0.0 0.0.0.0 2.0.0.1
end
ip 1.0.0.3/24 1.0.0.1

✔️ Теперь SRV1 будет доступен всем по адресу 2.0.0.10.

По какому пути идет трафик от PC2 до SRV1?

Динамический NAT

ip nat pool NAME IP1 IP2 NETMASK - создать диапазон адресов

access-list 1 permit IP WILDCARD - создать ACL

ip nat inside source list 1 pool NAME - настройка динамического NAT

Проброс портов

Нужен когда есть публичный адрес, внутри сети несколько сервисов и между ними нужно разделить адрес. Но т.к. адрес один, тогда делить нужно порты.

ip nat inside source static tcp/udp LOCAL-IP PORT GLOBAL-IP PORT - создать правило

clear ip nat translations * - очистить таблицу трансляции

🧰 Лабораторная работа

Ознакомиться перед выполнением любой лабораторной работы (список раскрывается)
  • Вместо ❔ или x нужно подставить свой номер по журналу
  • Выполнять задание без "отмашки" не стоит ⛔, т.к. задание здесь может существовать более актуальная версия
  • У каждой работы есть срок сдачи 📅, который озвучивается на занятии, после которого работа не может быть защищена на максимальный балл 📉
  • Дополнительные задания 📚 не являются обязательными, но по результатам сдачи лабораторной работы может быть выдано одно или несколько из них. Также дополнительное задание может быть сформулировано устно
  • Для каждой лабораторной работы должен быть отчет 📝 с описанием выполнения ваших действий, оформление должно соответствовать требованиям (см. на сайте учебного заведения)
  • Нужно уметь ответить на вопросы ❓ по теме, контрольные вопросы и другие связанные вопросы
  • Примеры могут быть выполнены по желанию, а также выданы в качестве дополнительного задания с изменениями или без в случае неуспешной 😢 защиты основной работы
  • Иногда в работах встречаются задания по IPv4 и IPv6 одновременно 🔗. Это считается как одна работа. Допускается сдача работы только с IPv4 или только с IPv6, но максимальный балл в таком случае получить невозможно

🎯 Цель работы: получить навыки настройки NAT.

🌐 Схема

Схема сети

✔️ Условия

  1. В домашних сетях использовать сети 192.168.x.0/24
  2. В сетях провайдера использовать сети 10.0.x.0/24
  3. В "Интернете" использовать произвольные подсети из сети 1.0.x.0/24
  4. Сеть публичных адресов провайдера 1 - 2.0.x.0/24
  5. Для доступа в "Интернет" использовать PAT там, где не противоречат другие пункты условий
  6. В схеме должен быть настроен двойной NAT
  7. Доступ к серверу 1 и 2 из WAN должен осуществляться с помощью проброса порта 2000 + x (например, 2001); проверить можно с помощью ping ? (указав порт udp/tcp)
  8. Доступ к ПК дома 3 из WAN должен осуществляться с помощью статического NAT
  9. Везде статическая маршрутизация
  10. Маршрутизаторы провайдера являются устройствами NAT
  11. Из WAN нельзя добраться к LAN сетям по приватным адресам
  12. В LAN сети провайдера 1 использовать VLAN для деления на приватную и частную подсети

📚 Дополнительные задания

  1. Изменить соединения/расположение устройств.
  2. Изменить адресацию и подсети.
  3. Изменить тип NAT.
  4. Добавить динамическую выдачу сетевой конфигурации на домашние маршрутизаторы со стороны провайдера.

🤔 Контрольные вопросы

  1. Указывает ли что-то в Wireshark на то, что происходит трансляция адресов (если при этом не знать структуру сети)?
  2. Чем отличается динамический NAT от PAT?
  3. Используется ли у вас дома NAT? Если да, то какой тип?
  4. Можно ли на вашем домашнем маршрутизаторе настроить port forwarding?
  5. Где используется двойной NAT и зачем?
  6. Что нужно сделать, чтобы организовать доступ из "Интернета" для ПК в домашней сети 2?