Работа 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