Работа NAT 1. Введение

advertisement
Работа NAT
1. Введение
Предназначение
 Необходимость выхода из частных сетей в Internet или другие открытые сети
Дефицит IP адресов привел к тому, что частные сети получили наборы IP адресов которые
разрешалась использовать внутри закрытых сетей (сетей не имеющих доступа в WAN).
Естественно в пределах частной сети набор IP адресов должен быть уникальный, но
несколько частных сетей могли повторять наборы адресов. По умолчанию пакеты с этими IP
адресами отбрасываются , и даже если частная сеть с частными адресами случайно
получит доступ в Internet, конфликтов IP не будет. Но возникает необходимость при
использовании частных IP адресов выходить в Internet. Для решения этой проблемы и
используется NAT.
 Решить некоторые вопросы безопасности
Дело в том, что при использовании NAT частная сеть из вне будет видна как один IP адрес
или набор Разрешенных IP адресов. В этой случае определить структуру частной сети будет
достаточно проблематично.
2. Работа
NAT – программное обеспечение. Смысл работы заключается в том, что граничный 
стоящий на выходе из частной сети принимает пакеты от рабочих станций и если эти пакеты
адресованы во внешнюю сеть  подменят частный IP адрес отправителя пакета на
разрешенный IP адрес находящийся в распоряжении NAT. При получении ответа происходит
обратная процедура.
3. Термены
Основные термины NAT
1. Inside local address – Внутренний локальный адрес нашего узла (как правило частный
адрес) который посылает пакет во внешнюю сеть.
2. Inside global address – Внутренний глобальный адрес – разрешенный адрес из набора
адресов NAT, который заменяет частный адрес при выходе пакета в открытую сеть.
3. Outside local address – Удаленный (внешний) локальный адрес – открытый адрес
интерфейса  конечной сети в которой находится получатель нашего пакета (адресуемый
узел).
4. Outside global address – Удаленный глобальный адрес – адрес конечного узла к которому
мы хотим обратиться (как правило частный адрес), который буде получать наш пакет.
4. Типы назначений адресов NAT
Статическое
При статическом назначении адресов идет назначение один к одному конкретного
частного и конкретного открытого IP адреса. Как правило применяется для Серверов
или других сетевых устройств или в целях скрытия структуры частной сети.
Динамическое
При динамическом назначении адресов идет назначение открытых адресов из
определенного диапазона IP адресов количество открытых равно количеству
частных.
Overloading, или Port Address Translation (PAT)
В этом случае как правило на все частные адреса назначается один открытый
адрес (или один из нескольких открытых). Любому пакету который посылается из
частной сети присваивается один и тот же открытый IP адрес и уникальный номер
порта.
RFC 1918 - определил диапазоны частных IP адресов
10.0.0.0 -10.255.255.255 - одну сеть класса А
172.16.0.0 - 172.31.255.255 - 16 сетей класс В
192.168.0.0 - 192.168.255.255 - 256 сетей класс С
На адрес порта выделяется 16 бит что теоретически составляет 65536 – различных адресов
портов. На практике используется около 4000. При назначении порта PAT пытается сохранить
адрес порта первоисточника, если в данный момент этот исходный порт уже используется,
назначает первый свободный порт из диапазона:
0 – 511
512 – 1023
1024 - 65535
Если все порты заняты, но есть еще один внешний (назначаемый) IP адрес, то будет
присвоен этот IP и порт.
5. Команды
Статическая конфигурация
1. Установить соответствие локального внутреннего IP адреса и глобального внутреннего.
Router(config)#ip nat inside source static local-ip global-ip
2. Назначение входящего и исходящего интерфейса  по отношению к NAT
Router(config)#interface FastEternet 0/1
Router(config-if)#ip nat inside
Router(config)#interface FastEternet 0/2
Router(config-if)#ip nat outside
Динамическая конфигурация
1. Задать набор открытых IP адресов.
Начальный и конечный адрес диапазона разрешенных адресов и маску
Gateway(config)#ip nat pool public 199.99.9.40 199.99.9.62
netmask 255.255.255.224
Где public – имя пула (задается произвольное имя)
2. Создать Access лист в котором указать кому (в данном случае всем из 10.10.10.0/24 сети)
можно пользоваться услугами NAT (кого допустить в Интернет)
Gateway(config)#access-list 1 permit 10.10.10.0 0.0.0.255
Где 1 – имя Access листа
3. Задать имя Access листа и имя пула IP адресов для службы NAT
Gateway(config)#ip nat inside source list 1 pool public
4. Назначение входящего и исходящего интерфейса  по отношению к NAT
Router(config)#interface FastEternet 0/1
Router(config-if)#ip nat inside
Router(config)#interface FastEternet 0/2
Router(config-if)#ip nat outside
Насколько я понял адрес исходящего интерфейса, в данном случае FastEternet 0/2 должен
быть из диапазона разрешенных адресов к примеру 199.99.9.40/27
Назначение PAT
Если есть один открытый адрес
1. Создать Access лист, в котором указать кому (в данном случае всем из 10.10.10.0 сети)
можно пользоваться услугами NAT (кого допустить в Интернет)
Gateway(config)#access-list 1 permit 10.10.10.0 0.0.0.255
2. Установить лист доступа с именем «1» на интерфейс serial 0/0 и задать, что этот
интерфейс будет транслировать адреса в режиме overload.
Router(config)#ip nat inside source list 1 interface serial 0/0
overload
3. Назначение входящего интерфейса  по отношению к NAT
Router(config)#interface FastEternet 0/1
Router(config-if)#ip nat inside
Router(config)#interface Serial 0/0
Router(config-if)#ip nat outside
Если есть несколько открытых адресов (отличие от динамического задания только команда
overload)
1. Задать открытые IP адреса.
Начальный и конечный адрес диапазона и маску
Gateway(config)#ip nat pool public_2 199.99.9.40 199.99.9.62
netmask 255.255.255.224
2. Создать Access лист в котором указать кому (в данном случае всем из 10.10.10.0/24 сети)
можно пользоваться услугами NAT (кого допустить в Интернет)
Gateway(config)#access-list 1 permit 10.10.10.0 0.0.0.255
3. Задать имя Access листа и имя пула IP адресов и объявить что идет назначение overload
Gateway(config)#ip nat inside source list 1 pool public_2 overload
4. Назначение входящего и исходящего интерфейса  по отношению к NAT
Router(config)#interface FastEternet 0/1
Router(config-if)#ip nat inside
Router(config)#interface FastEternet 0/2
Router(config-if)#ip nat outside
Для стирания результатов в таблицы динамических адресов
Router(config)#clear ip nat translations *
Для просмотра результатов трансляции
Router(config)#show ip nat translations
Router(config)#show ip nat statistics
Показывает информацию о каждом пакете преобразованным NAT.
Показывает также ошибки, если такие возникают, неудачной замены одного IP на другой
(global)
Router(config)#debug ip nat
 Звездочка рядом с NAT показывает, что пакет с этим адресом уже есть в КЕШ памяти
порта и произойдет быстрая коммутация (fast-switched path), в начале этих данных в КЕШ
не было и происходила коммутация process-switched
 s = a.b.c.d – адрес источника.
 Адрес источника a.b.c.d транслируется в w.x.y.z.
 d = e.f.g.h адрес получателя.
 Значение в скобках – номер отождествляемый с IP пакетом – идентификатор порта.
6. Проблемы и их решения
При возникновении проблем с NAT CISCO требует:
1.
2.
3.
4.
Ясно представлять, что NAT пытается достичь;
Проверить преобразования в адресной таблице;
Использовать команду Show и Debug;
Посмотреть, что случается с адресами пакета.
Недостатки NAT
1. Потеря функциональности, т.к. некоторые приложения и протоколы записывают IP
2. Увеличивает задержку, из за преобразования адресов, первый пакет будет processswitched остальные fast-switched если конечно КЕШ не отключен.
3. Замедляет работу и увеличивает нагрузку на процессор особенно если происходят
множественные преобразования.
4. Некоторые приложения не могут функционировать из-за непрерывности адреса IP
5. Приложения, которые используют физический адрес IP вместо Доменного имени могут не
достигнуть получателя
Cisco IOS NAT поддерживает следующие типы:
ICMP
File Transfer Protocol (FTP), including PORT and PASV commands
NetBIOS over TCP/IP, datagram, name, and session services
RealNetworks' RealAudio
White Pines' CUSeeMe
Xing Technologies' StreamWorks
DNS "A" and "PTR" queries
H.323/Microsoft NetMeeting, IOS versions 12.0(1)/12.0(1)T and later
VDOnet's VDOLive, IOS versions 11.3(4)11.3(4)T and later
VXtreme's Web Theater, IOS versions 11.3(4)11.3(4)T and later
IP Multicast, IOS version 12.0(1)T with source address translation only
Cisco IOS NAT не поддерживает:
Routing table updates
DNS zone transfers
BOOTP
talk and ntalk protocols
Simple Network Management Protocol (SNMP)
7. (DHCP) – RFC-2131
Dynamic Host Configuration Protocol (DHCP) – работает в режиме клиент – сервер. Сервер
DHCP раздает клиентам в сети IP адреса. Служба DHCP входит в самые современные ОС
включая
 Windows
 Novell
 Sun Solaris
 Linux
 OC Mac
Клиенты при работе в сетях с DHCP, при загрузки ОС делают Ш запрос и получают от
Сервера DHCP IP адрес, на время установленное администратором. Если время аренды IP
адреса истекает, то клиент должен освободить IP и запросить новый, как правило, ему будет
назначен тот же IP адрес. Если в сети несколько серверов DHCP, то клиент получает IP от
первого ответившего сервера.  CISCO имеют встроенную функцию DHCP сервера, и также
позволяют раздавать IP адреса. По умолчанию на 24 часа. Это очень полезно в небольших
офисах когда  можно использоваться и как сервер NAT и DHCP не прибегая к установке
отдельных серверов.
DHCP сервер выполняет следующие функции:
 Раздает IP адреса из заранее определенного диапазона;
 Выдает клиенту адрес сервера DNS
 Адрес сервера WINS
 Имя домена
 Определяет какие МАС адреса могут обслуживаться и выдавать им определенные
IP адреса.
В качестве транспортного протокола DHCP использует UDP
Клиент отправляет запрос серверу на порт 67
Получает ответ от сервера на порт 68
Клиентами DHCP не должны быть:


Сервера
Сравнение DHCP и BOOTP – RFC 951
Протокол был BOOTP разработан для загрузки бездисковых машин.
Сходства:
 Порт 67 – запрос на сервер
 Порт 68 – ответ клиенту
 Транспорт UDP
 Передает адрес IP
 Адрес Шлюза
 Маску подсети
 Адрес DNS
Отличия:
 Не может динамически распределять адреса
 Жестко закреплены конкретные IP за конкретными МАС адресами – это значит, что
это соответствие уже должно быть сконфигурировано.
 Не поддерживает WINS
 Не поддерживает Доменные имена
 Нельзя арендовать адреса на время.
Типы назначения IP адресов в DHCP
 Автоматическое – Сервер DHCP назначает постоянный адрес клиенту
 Ручное – клиенту назначается заранее сконфигурированный админом адрес,
требуется обращение клиента
 Динамическое распределение – назначаются IP адреса из списка на период
времени.
Обмен сообщениями между Клиентом и Сервером DHCP
Вкратце работа выглядит так:
1. Рабочая станция посылает Ш запрос на порт 67 всем сетевым устройствам с просьбой
выдать IP адрес - DHCPDISCOVER.
2. Если в сети несколько DHCP серверов, то первый, кто получит этот запрос отвечает, проверяет по собственной базе IP адресов, может ли он обслужить этот запрос, если нет,
то сервер пересылает этот запрос на другой DHCP сервер, если да (может), сервер
отвечает на этот запрос своим предложением, посылая конфигурацию IP (адрес IP, адрес
Шлюза, Маску подсети, адрес DNS, время аренды и т.д.) на конкретный адрес рабочей станции DHCPOFFER.
3. Если станция принимает это предложение она отвечает серверу о принятии
предложенных параметров посылая Ш ответ об этом. Широковещание здесь сделано для
того, что может сложиться ситуация, когда несколько DHCP серверов в сети и своим
ответом произойдет оповещение всех серверов о том предложение какого именно
сервера станция приняла - DHCPREQUEST.
4. Сервер получив от станции согласие на использование параметров IP утверждает
(закрепляет эти параметры за станцией) и посылает станции уведомление об этом
acknowledgment – DHCPACK. Полученное уведомление от сервера позволяет рабочей
станции начать немедленное использование IP адреса.
5. Если клиент сам обнаруживает, что адрес - уже в использовании он пошлет сообщение
DHCPDECLINE и процесс начинается снова. Если клиент больше не нужно IP адрес,
клиент посылает сообщение DHCPRELEASE в сервер.
Иногда Админ может случайно назначить сетевому устройству статический IP адрес из
динамической области DHCP сервера, если сервер выдаст на запрос клиента этот адрес, то
возникнет конфликт адресов, что бы этого не произошло сервера DHCP CISCO всегда
проверяют не происходит ли использование адреса, прежде чем предложить этот адрес
клиенту (протокол ICMP произведет ping).
6. Конфигурирование DHCP
Задать Имя пула из которого будут выдаваться IP адреса
campus(config)#ip dhcp pool campus
Задать диапазон IP адресов для выдачи – в качестве диапазона адресов в  задается целая
сеть.
campus(dhcp-config)#network 172.16.12.0 255.255.255.0
Задать адреса исключения – которые не должны выдаваться из указанной ранее сети.
campus(config)#ip dhcp excluded-address 172.16.12.1 172.16.12.11
В данном примере из сети 172.16.12.0 255.255.255.0 не должны динамически
выдаваться адреса с 172.16.12.1 по 172.16.12.11 как видно дальше, эти
адреса зарезервированы за сетевыми устройствами и серверами и DHCP передаст эту
информацию хостам следующими командами
Сообщит что шлюз по умолчанию 172.16.12.1
campus(dhcp-config)#default-router 172.16.12.1
Сообщит что DNS сервер имеет адрес 172.16.12.1
campus(dhcp-config)#dns-server 172.16.1.2
Сообщит что имя домена foo.com
campus(dhcp-config)#domain-name foo.com
Сообщит что адрес сервер NetBIOS 172.16.1.10
campus(dhcp-config)#netbios-name-server 172.16.1.10
Теперь если клиент на своей машине настроит в сетевом окружении получить параметры
динамически, то все эти данные будут занесены к нему в сетевые настройки
Может возникнуть ситуация когда DHCP сервер находиться в другом широковещательном
сегменте сети и чтобы получить свой IP адрес нужно послать запрос этому серверу, рабочая
станция делает этот запрос широковещательно, но как известно  блокируют
широковещание, что бы решить эту задачу используется команда ip helper-address
remote(config)#interface fastethernet 0
remote(config-if)#ip helper-address 192.168.2.254
Как видно, эта команда подается на интерфейсе и в ней указывается IP адрес DHCP сервера
– то есть если запрос пришел на один интерфейс, что бы не пускать широковещание везде 
пересылает этот Ш запрос только на определенный интерфейс да еще на определенный
Адрес.
Такой услугой пользуются не только службы DHCP но и некоторые другие службы
работающие по протоколу UDP
Time
TACACS
DNS
BOOTP/DHCP Server
BOOTP/DHCP Client
TFTP
NetBIOS Name Service
NetBIOS datagram Service
Для проверки работы DHCP и просмотра назначенных адресов ввести команду
campus# show ip dhcp binding
Для просмотра статистики посланных запросов и полученных IP адресов команда
campus# show ip dhcp server statistics
Для отладки (проверять истекло ли время аренды)
campus# debug ip dhcp server events
Download