logo search
адресация сетей

6. Трансляция адресов и адресация в закрытой сети

Адресация в закрытой сети и трансляция сетевых адресов ( NAT ) — это два взаимосвязанных метода, которые способствуют резкому сокращению потребности в использовании открытых IP -адресов. В основе этих методов лежит следующий принцип. Хостам закрытой сети присваиваются адреса, которые не используются в общедоступной сети ( Internet ). При возникновении необходимости организовать обмен данными между хостом в закрытой сети и хостом в открытой сети первый посылает запрос в сетевой шлюз, который преобразует закрытый IP -адрес в открытый IP -адрес. Благодаря этому уменьшается потребность в использовании открытых IP -адресов, поскольку не приходится присваивать открытый IP -адрес каждому хосту, для которого необходимо обеспечить работу в Internet . Вместо этого присваивается один (или несколько) адресов устройству NAT , которое обеспечивает доступ к Internet .

Помимо сетевых адресов можно преобразовывать адреса транспортного уровня (порты TCP ). Этот метод носит название PAT . Суть его в том, что одному открытому IP -адресу можно поставить в соответствие 65 535 (количество портов TCP ) комбинаций из закрытого IP -адреса хоста и номера порта приложения на этом хосте.

Функционирование метода NAT / PAT легче всего понять, рассмотрев практический пример. Ниже описано, какие действия фактически осуществляются при трансляции адресов.

Как показано на рис. 6.1, хост посылает запрос по адресу www . rambler . ru из закрытой сети. Он имеет адрес закрытой сети, поэтому должен обратиться к устройству NAT , чтобы выйти в Internet . В данном случае функции устройства NAT (т.е. трансляцию сетевых адресов) выполняет маршрутизатор. А компьютер просто применяет к адресу получателя маску сети с помощью операции "И" и определяет, что пакет предназначен для другой сети и передает его в шлюз, предусмотренный по умолчанию (маршрутизатор с поддерж­кой NAT ). При поступлении в маршрутизатор пакет имеет следующие поля.

Адрес отправителя — 192 .168.1.10 (пользователь).

Порт отправителя — 44000 (порт отправителя в данном сеансе связи).

Адрес получателя — 81.19.70.1 ( www . rambler . ru ).

Порт получателя — 80 (HTTP).

Рис. 6.1 Пример использования NAT

Теперь маршрутизатор с поддержкой NAT принимает пакет и заменяет в нем адрес отправителя своим открытым IP -адресом (в данном примере 23.02.19.82), а также вводит другой номер порта, чтобы иметь возможность отличить пакет, переданный в ответ отправителю (по адресу 192 .168.1.10), от других пакетов, например, передаваемых в ответ на компьютер с адресом 192.168.1.200. Маршрутизатор вносит сведения о выполненных им преобразованиях в таблицу трансляции и отправляет пакет на Web -сервер. К этому времени заголовок пакета содержит данные, приведенные ниже.

Адрес отправителя — 23.02.19.82 (открытый IP -адрес маршрутизатора).

Порт отправителя — 60000 (порт маршрутизатора в данном сеансе связи).

Адрес получателя — 81.19.70.1 ( www . rambler . ru ).

Порт получателя — 80 (HTTP).

Предположим, что одновременно с этим попытку обратиться по адресу www . rambler . ru предпринимает еше один хост (с адресом 192.168.1.200). Для него выполняется такие же действия. Допустим, что заголовок пакета, первоначально отправленный этим хостом (до трансляции), содержит данные, перечисленные ниже.

Адрес отправителя— 192.168.1.200 ( IP -адрес компьютера, последний октет которого равен 200).

Порт отправителя — 55555 (порт компьютера с IP -адресом 200, применяемый в данном сеансе связи).

Адрес получателя — 81.19.70.1 ( www . rambler . ru ).

Порт получателя — 80 (HTTP).

Преобразуется и IP -адрес этого компьютера (192.168.1.200), и после преобразования заголовок пакета содержит данные, перечисленные ниже.

Адрес отправителя — 23.02.19.82 (открытый IP -адрес маршрутизатора).

Порт отправителя — 50600 (порт маршрутизатора связи с компьютером, имеющим IP -адрес 200).

Адрес получателя — 81.19.70.1 ( www . cisco . com ).

Порт получателя — 80 (HTTP).

После выполнения всех этих действий устройство NAT формирует таблицу трансляции, которая приведена в табл. 6. 1 .

Таблица 6. 1 . Таблица трансляции NAT / PAT

IP-адрес отправителя

Порт отправителя

Оттранслированный IP-адрес

Оттранслированный порт

192.168.1.10

44000

23.02.19.82

60000

192.168.1.200

55555

23.02.19.82

50600

После поступления на маршрутизатор с узла www . rambler . ru пакета с IP -адресом получателя 23.02.19.82 и портом получателя 60000, это устройство NAT выполняет поиск в таблице трансляции и обнаруживает, что пакет предназначен для передачи в порт 44000 компьютера с адресом 192.168.1.1. После этого выполняется преобразование и передача пакета на локальный компьютер. Компьютер получает этот пакет, не имея никаких сведений о том, какая промежуточная обработка была выполнена с данным пакетом.

Трансляция сетевых адресов может выполняться маршрутизатором, но чаще всего этот процесс осуществляется в специализированном устройстве, который принято называть прокси-сервером. Прокси-сервер выполняет основные функции трансляции сетевых адресов NAT , а также обеспечивает выполнение целого ряда других процессов. В частности, прокси-сервер обеспечивает кэширование информационного наполнения (записывает файлы, как правило, Web -страницы, к которым часто происходит доступ, на своем жестком диске, чтобы при получении повторного запроса к этим данным с другого хоста не приходилось снова выполнять их загрузку из Internet ), преобразование пакетов других протоколов (таких как IPX / SPX ) в пакеты IP и фильтрацию пакетов (принимает или отбрасывает пакеты с учетом таких критериев, как IP -адрес отправителя или номер порта). Но независимо от того, каким устройством осуществляется трансляция сетевых адресов, метод NAT применяется более эффективно при использовании пула IP -адресов, а не отдельного адреса, поскольку при наличии нескольких IP -адресов устройству NAT не приходится слишком часто выполнять трансляцию номеров портов.

Хотя метод NAT может применяться при использовании любой структуры IP -адресов (включая открытые адреса), обычно лучше использовать пространство адресов, зарезервированное для закрытой сети. Причина этого очень проста — если в закрытой сети применятся открытые адреса, то общедоступный ресурс, обозначенный этим адресом (а также все другие ресурсы, обозначенные применяемой маской), станут недоступными из закрытой сети. Например, если организация использует в своей внутренней сети адрес 207.46.230.0/24, то ее сотрудники не смогут обратиться к любому компьютеру в Internet , находящемуся в сети 207.46.230.0 (которая при­надлежит Microsoft ), поскольку хост локальной сети будет рассматривать такой адрес получателя в пакете как локальный адрес и не отправит пакет в устройство NAT .

В связи с этим, для каждого класса сети (от А до С) определен блок адресов, предназначенный для использования в закрытой сети. Именно эти адреса, перечисленные ниже, должны использоваться в сочетании со средствами NAT .

10.0.0.0.

172.16.0.0 до 172.31.0.0 (16 сетей).

192.168.0.0 ДО 192.168.255.0 (256 сетей).

Метод адресации в закрытой сети определен в документе RFC 19 I 8, а метод NAT - в документе RFC 3022.

7. Преобразование сетевых адресов в физические

Протокол ARP ( Address Resolution Protocol ) — это протокол разрешения адресов. Он описан в документе RFC 826. Необходимость в протоколе ARP продиктована тем обстоятельством, что IP -адреса устройств в сети назначаются независимо от их физических адресов. Однако для доставки пакетов по сети необходимо знать именно физические адреса устройств. Поэтому для доставки сообщений по сети требуется установить соответствие между физическим адресом устройства и его IP -адресом. Эта процедура называется разрешением адресов ( address resolution ). В большинстве случаев прикладные программы работают именно с IP -адресами. А так как схемы физической адресации устройств весьма разнообразны, то необходим специальный, универсальный протокол.

Для того чтобы получить адрес протокола IP , зная физический адрес устройства, предусмотрена процедура, называемая обратным разрешением адресов ( reverse address resolution ). Наиболее распространены следующие протоколы, связанные с процедурами разрешения адресов: протокол ARP , proxy ARP , reverse ARP , — которые описаны в документах RFC 826, 1027 и 903. Кроме того, иногда используется протокол Probe , разработанный компанией Hewlett - Packard для использования в сетях IEEE -802.3.

7.1 ARP

Для определения локального адреса по IP-адресу используется протокол разрешения адреса Address Resolution Protocol, ARP. Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring, FDDI) с возможностью широковещательного доступа одновременно ко всем узлам сети, или же протокол глобальной сети (X.25, frame relay), как правило не поддерживающий широковещательный доступ.

Функциональность протокола ARP сводится к решению двух задач. Одна часть протокола определяет физические адреса при посылке дейтаграммы, другая отвечает на запросы устройств в сети. Протокол ARP предполагает, что каждое устройство «знает» как свой IP -адрес, так и свой физический адрес.

Для того чтобы уменьшить количество посылаемых запросов ARP , каждое устройство в сети, использующее протокол ARP , должно иметь специальную буферную память. В ней хранятся пары адресов ( IP -адрес, физический адрес) устройств в сети. Всякий раз, когда устройство получает ARP -ответ, оно сохраняет в буферной памяти соответствующую пару. Если адрес есть в списке пар, то нет необходимости посылать ARP -запрос. Эта буферная память называется ARP -таблицей.

В ARP -таблице могут содержаться как статические, так и динамические записи. Динамические записи добавляются и удаляются автоматически, статические заносятся вручную.

Так как большинство устройств в сети поддерживает динамическое разрешение адресов, то администратору, как правило, нет необходимости собственноручно указывать записи протокола ARP в таблице адресов.

Кроме того, ARP -таблица всегда содержит запись с физическим широковещательным адресом ( OxFFFFFFFFFFFF ) для локальной сети. Эта запись позволяет устройству принимать широковещательные ARP -запросы. Каждая запись в ARP -таблице имеет свое время жизни, например для операционной системы Microsoft Windows 2000 оно составляет 10 минут. При добавлении записи для нее активируется таймер. Если запись не востребована в первые две минуты, она удаляется. Если используется — будет существовать на протяжении 10 минут. В некоторых реализациях протокола ARP новый таймер устанавливается после каждого обращения к записи в ARP -таблице.

Сообщения протокола ARP при передаче по сети инкапсулируются в поле данных кадра. Они не содержат IP -заголовка. В отличие от сообщений большинства протоколов, сообщения ARP не имеют фиксированного формата заголовка. Это объясняется тем, что протокол был разработан таким образом, чтобы он был применим для разрешения адресов в различных сетях. Фактически протокол способен работать с произвольными физическими адресами и сетевыми протоколами.

Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно. Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным. В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель указывает свой локальный адрес. ARP-запросы и ответы используют один и тот же формат пакета. Так как локальные адреса могут в различных типах сетей иметь различную длину, то формат пакета протокола ARP зависит от типа сети. На рисунке 7.1 показана структура запросов и ответов ARP и RARP.

Рис. 3.1. Структура запросов и ответов ARP и RARP

В поле типа оборудования для сетей Ethernet указывается значение 1. Поле типа протокола позволяет использовать пакеты ARP не только для протокола IP, но и для других сетевых протоколов. Для IP значение этого поля равно 0800 16.

Длина локального адреса для протокола Ethernet равна 6 байтам, а длина IP-адреса - 4 байтам. В поле операции для ARP запросов указывается значение 1 для протокола ARP и 2 для протокола RARP.

Узел, отправляющий ARP-запрос, заполняет в пакете все поля, кроме поля искомого локального адреса (для RARP-запроса не указывается искомый IP-адрес). Значение этого поля заполняется узлом, опознавшим свой IP-адрес.

Рисунки 7.2 и 7.3 наглядно показывают принцип работы протокола ARP . Анализируя структуру запроса, можно увидеть, что компьютер с адресом 192.168.3.2 делает попытку узнать МАС-адрес компьютера с IP -адресом 192.168.3.12. Для этого он посылает широковещательный запрос, содержащий IP -адрес, с МАС-адресом, установленным в FF : FF : FF : FF : FF : FF .

Рис . 7.2 Запрос протокола ARP

Когда компьютер с адресом 192.168.3.12 получает этот широковещательный запрос, он анализирует IP -адрес, для которого выполняется разрешение. Определив, что его адрес совпадает с искомым, он формирует ответ протокола ARP , где указывает свой МАС-адрес (рис. 7.3).

Рис . 7.3 Ответ протокола ARP

Ответ посылается уже не широковещательно — отправитель знает МАС-адрес инициатора запроса и поэтому передает пакет целенаправленно.

В глобальных сетях администратору сети чаще всего приходится вручную формировать ARP-таблицы, в которых он задает, например, соответствие IP-адреса адресу узла сети X.25, который имеет смысл локального адреса. В последнее время наметилась тенденция автоматизации работы протокола ARP и в глобальных сетях. Для этой цели среди всех маршрутизаторов, подключенных к какой-либо глобальной сети, выделяется специальный маршрутизатор, который ведет ARP-таблицу для всех остальных узлов и маршрутизаторов этой сети. При таком централизованном подходе для всех узлов и маршрутизаторов вручную нужно задать только IP-адрес и локальный адрес выделенного маршрутизатора. Затем каждый узел и маршрутизатор регистрирует свои адреса в выделенном маршрутизаторе, а при необходимости установления соответствия между IP-адресом и локальным адресом узел обращается к выделенному маршрутизатору с запросом и автоматически получает ответ без участия администратора.

7.2 RARP

Это протокол, решающий обратную задачу - нахождение IP-адреса по известному локальному адресу. Он называется реверсивный ARP - RARP (Reverse Address Resolution Protocol) и используется при старте бездисковых станций, не знающих в начальный момент своего IP-адреса, но знающих адрес своего сетевого адаптера. Reverse ARP (или обратное разрешение) работает аналогично протоколу ARP за исключением того, что в его задачи входит определение физического адреса по известному адресу сетевого уровня. Этот протокол требует наличия в сети сервера RARP , подключенного к тому же сегменту сети, что и интерфейс маршрутизатора. Наиболее часто протокол reverse ARP используется для запуска бездисковых рабочих станций. Структура пакетов протокола показана на рисунке 7.1.

7.3 Proxy ARP

Протокол proxy ARP маршрутизатор использует (как это определено в документе RFC 1027) для того, чтобы помочь устройствам, не имеющим информации о маршрутизации, определить физические адреса устройств, находящихся в другой подсети. Например, если маршрутизатор получает широковещательный запрос протокола ARP для устройства, которое расположено в сети, отличной от сети отправителя запроса, и если этот маршрутизатор знает все маршруты к этому устройству через другие свои интерфейсы, он генерирует ответ ARP с указанием физического адреса своего интерфейса. Затем устройство, пославшее запрос ARP , будет адресовать свои пакеты маршрутизатору, который и передаст их действительному получателю.