Курс по сетевым технологиям
A A A

 

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

Для экономии и эффективного распределения адресного пространства были реализованы следующие технологии:

  • Публичные и частные IP адреса
  • CIDR/VLSM

 

Следующей технологией стала NAT (Network Address Translation) - преобразование сетевых адресов.

И как работает?

Представь себе компанию с локальной сетью с 100 компьютеров. Чтобы обеспечить каждому компьютеру выход в интернет придется выделить 100 адресов. А таких компаний могут быть десятки тысяч с последующим расширением. Идея NAT состоит в том, чтобы выделить ограниченное количество адресов для целой компании и динамически их назначать хостам, выходящим в интернет. К примеру, для вышеописанной компании можно выделить 10 публичных адресов. Когда один из компьютеров попытается установить соединение с интернет, то маршрутизатор сети назначит ему один из выделенных адресов. Как только компьютер закончит сеанс связи, то назначенный адрес освободится и может быть использован другим компьютером.

 

Получается, что некоторым компьютерам может не хватить адресов? 

Да, такое возможно. Однако это легко можно решить либо с помощью увеличения количества выделенного пула адресов (что не всегда выгодно)  либо с помощью технологии PAT (об этом подробнее ниже).

Существуют 3 типа NAT:

  • Статический
  • Динамический
  • Перегруженный

 

Статический: определенным хостам на постоянной основе выделяется адрес для связи с внешним миром. 

Динамический: IP адреса назначаются всем хостам на равной основе по запросу. 

Перегруженный: данный тип NAT также называется PAT (Port Address Translation) - преобразование порт-адрес. Является расширением динамического типа, однако отличие в том, что доступ в интернет предоставляется всем желающим. То есть один и тот же публичный адрес используется одновременно несколькими хостами.

 

А как же работает связь, когда один и тот же IP адрес используется сразу несколькими компьютерами? 

Дело в том, что маршрутизатор для каждого соединения использует различные TCP/UDP порты источника. Как ты уже знаешь любое IP соединение характеризуется парой IP адресов(источника и назначения) и парой TCP/UDP портов (источника и назначения). Так вот маршрутизатор и использует порт источника для идентификации каждой сессии. Маршрутизатор запоминает каждую сессию и при поступлении входящих (ответных) пакетов может определить кому из внутренних хостов направить данный пакет. 

Теперь попробуем настроить простую  сеть с  использованием всех типов NAT.

 

 

Статический NAT

Сеть со статическим NAT


Необходимо назначить адреса по следующей схеме:

192.168.1.10 → 30.1.1.10

192.168.1.11 → 30.1.1.11

 

Введем следующие команды:

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

Router(config)# ip nat inside source static 192.168.1.11 30.1.1.11

 

Теперь нужно указать какой интерфейс является локальным (внутренним):

Router(config)# interface fastehternet 0/0

Router(config-if)# ip nat inside

  

Указываем внешний интерфейс, то есть тот, который используется для выхода в интернет:

Router(config)# interface serial1/0

Router(config-if)# ip nat outside

 

 

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

Воспользуемся тем же рисунком, однако вместо статического пула с сетью 30.1.1.0 мы будем следующий пул: 

43.1.1.10/24

43.1.1.11/24

43.1.1.12/24

 

Создадим NAT пул с указанием начального и конечного адресов, а также маски либо префикса сети:

Router(config)# ip nat pool имя_пула 43.1.1.10 43.1.1.12 netmask 255.255.255.0

 

либо

Router(config)# ip nat pool имя_пула 43.1.1.10 43.1.1.12 prefix 24

 

Создаем стандартный список доступа. Данный список указывает какие локальный IP адреса могут быть преобразованы в публичные адреса, а какие не могут. То есть мы явно указываем кому разрешить доступ в интернет, а кому наоборот запретить:

Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255

 

Пока запомни эту команду. В уроке Списки доступа мы рассмотрим ее подробнее.

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

Router(config)# ip nat inside source list 1 pool имя пула

 

Также как и со статическим NAT необходимо указать внутренний и внешний интерфейсы:

Router(config)# interface fastethernet 0/0

Router(config-if)# ip nat inside

--------------------------------------------------------------------------------------------------------------

Router(config) interface serial1/0

Router(config-if)# ip nat outside

 

 

Перегруженный  PAT

В этом раз мы выделим всего лишь 1 адрес 189.1.1.10. 

Сначала создаем такой же список доступа, затем пул адресов, но в данном случаем указывается только один адрес. После этого выполним команду:

Router(config)# ip nat inside source list 1 pool имя пула overload

 

Если используется только 1 внешний IP адрес, то нет необходимости создавать пул. Для этого достаточно создать список доступа (access-list), а затем выполнить команду ниже:

Router(config)# ip nat inside source list 1 interface название_интерфейса overload

 

Ключевое слово overload. Именно оно и указывает, что будет задействован PAT. 

Далее настраиваем внутренний и внешний интерфейсы.

 

NAT у нас настроен, осталось настроить маршрутизацию. Предлагаю самостоятельно настроить статическую маршрутизацию. 

Чтобы убедиться, что NAT работает, попробуем выполнить команду PING на каждом компьютере.

Для проверки правильности настроек, а также всего процесса преобразования, выполним следующие команды:

Router# show ip nat translations

 
Вывод преобразований NAT

 

Router# show ip nat statistics

 

Вывод NAT статистики

 

Router# debug ip nat

 

Вывод работы NAT отладчика


А что такое inside local, outside global? Что означают эти  параметры? 

Inside local - преобразуемый локальный адрес (адрес источника)

Inside global - преобразованный публичный адрес (адрес источника)

Outside local и outside global - публичный адрес назначения

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

Router# clear ip nat translation

 

 

Port forwarding (Проброс портов)

Кроме экономии адресного пространства технология предоставляет определенную степень безопасности, так как позволяет скрывать сетевые устройства локальной сети от внешней сети (интернет).

 

Например, у меня Web сервер в сети. Как быть, если мне нужно предоставить доступ к моему серверу из внешней сети?  

Все очень просто. В данном случае мы настроим статический NAT с указанием портов.

Вернемся к нашей сети, где настроен  PAT.  Добавим в нее Web сервер, который будет доступен по адресу 189.1.1.10:5000. 5000 означает порт назначения

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

Задача маршрутизатора преобразовать этот адрес в локальный адрес с портом 80: 

189.1.1.10:5000 → 192.168.1.20:80

 

Для этого достаточно сконфигурировать статический NAT для конкретного сервера:

Router(config)# ip nat inside source static tcp 192.168.1.20 80 189.1.1.10 5000 extendable

 

Теперь Web сервер будет доступен для внешней сети. 

Вот и вся наука.