Урок 36. Network Address Translation (NAT). Описание и настройка

 

С развитием интернета и компьютерных технологий количество сетевых устройств стало стремительно расти. Как вы уже знаете, количество уникальных 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

Схема сети с динамическим NAT

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

43.1.1.10/24

43.1.1.11/24

43.1.1.12/24

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

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

Схема сети с динамическим 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 у нас настроен, осталось настроить маршрутизацию. Предлагаю самостоятельно настроить статическую маршрутизацию. 

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

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 - публичный адрес назначения.

Для удаления записей о преобразований можно выполнить команду  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 

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

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