RFC-1631 категория: информационный май 1994 года ТРАНСЛЯТОР СЕТЕВЫХ IP-АДРЕСОВ (NAT) I. ВВЕДЕНИЕ В Internet-сети на лицо две непреодолимые проблемы: уменьшение числа свободных IP-адресов и масштабирование в процессе маршрутизации. Решение этих проблем идет по двум направлениям: краткосрочные решения и долгосрочные решения. Краткосрочным решением является применение так называемой бесклассовой межсегментной маршрутизации (Classless Inter Domain Routing — CIDR). Долгосрочным решением являются несколько новых протоколов увеличивающих адресное пространство. В связи с тем, что долгосрочные решения до сих пор не всупили в силу, наиболее легким способом преодоления нехватки IP-адресов является их повторное использование. Такое решение основывается на том факте, что в любой момент времени очень незначительный процент от всех IP-узлов в субсегменте поддерживает связь с внешней областью, выходящей за пределы сегмента. (Субсегмент является сегментом сети (подобием корпоративной сети), который управляет трафиком, поступающим на IP-узлы или транслируемым этими узлами в рамках сегмента.) Действительно, многие (если не большинство) из IP-узлов никогда не связываются с “внешним миром”, расположенным за пределами их субсегмента. Поэтому, при установлении соединения с “внешнем миром” необходимо отображать только IP-адреса, расположенные внутри субсегмента, в IP-адреса, которые являются глобальными (уникальными для всей Internet-сети). Это решение имеет недостаток, связанный с исключением понятия межтерминального соединения на основе IP-адресации и усложнением режима функционирования сети. Существуют различные приемы для минимизации отрицательных последствий указанного недостатка. Действительно, канальноориентированные протоколы, по существу, используют повторную переадресацию на каждом ретрансляционном участке. Огромным преимуществом этого решения является то, что оно может быть внедрено незамедлительно, без каких-либо изменений существующих IPузлов и маршрутизаторов. (Может быть за исключением нескольких специфических прикладных служб, которые могут потребовать изменений.) Таким образом, данное решение может быть быстро внедрено и протестировано. Если чего-нибудь еще не произойдет, то тогда это решение 2 может служить временным решением, позволяющим снизить остроту указаных ранее проблем до принятия других наиболее оптимальных решений. II. ОБЩАЯ ХАРАКТЕРИСТИКА NAT Проект представленный в данном документе называется NAT (транслятор сетевых адресов — Network Address Translator). NAT представляет собой маршрутизатор, который может быть настроен так, как показано на рис.1. В данном случае, требуются изменения только в субграничном (“stub border”) маршрутизаторе. СУБСЕГМЕНТ Локальный маршрутизатор (с NAT) Региональный маршрутизатор LAN Граница субсегмента Рис.1. Простейший вариант конфигурации NAT Принцип функционирования NAT заключается в следующем. Адреса внутри субсегмента могут быть повторно использованы любым другим субсегментом. Например, один IP-адрес класса “А” мог быть использован многими субсегментами. В каждой точке между субсегментами и магистральной сетью должен быть встроен NAT. Если таких точек (между сегментом и магитральной сетью) может быть несколько, то тогда очень важно чтобы каждый NAT (в каждой такой точке) имел одну и ту же таблицу трансляции (отображения) адресов. Например (рис.2), два субсегмента “А” и “В” внутри себя используют адресное пространство класса “А” “10.0.0.0”. Для NAT субсегмента “А” определен IP-адрес класса “С” “198.76.29.0”, а для NAT субсегмента “В” — IPадрес класса “С” “198.76.28.0”. Указанные IP-адреса класса “С” являются глобальными сетвыми адресами и не могут быть использованы другими NAT. Когда компьютер субсегмента “А” с IP-адресом “10.33.96.5” желает передать IP-пакет компьютеру субсегмента “В” с IP-адресом “10.81.13.22”, он 3 использует глобальный сетевой IP-адрес “198.76.28.4” в качестве адреса назначения и передает пакет своему локальному маршрутизатору. Локальный маршрутизатор выбирает статический маршрут по направлению в сеть с адресом “198.76.0.0”, и поэтому пакет направляется в канал магистральной сети (WAN). Однако, перед отправкой пакета NAT преобразует адрес источника “10.33.96.5” в IP-заголовке в глобальный сетевой адрес “198.76.29.7”. Аналогично, IP-пакеты из субсегмента “В” проходят такую же процедуру преобразования адресов. Региональный маршрутизатор Граница субсегмента “А” {S=198.76.29.7; D=198.76.28.4} Граница субсегмента “В” Локальный маршрутизатор (с NAT) Локальный маршрутизатор (с NAT) {S=198.76.29.7; D=198.76.28.4} Виртуальное соединение {S=10.33.96.5; {S=198.76.29.7; D=198.76.28.4} D=10.81.13.22} LAN 10.33.96.5 Субсегмент “А” 10.81.13.22 LAN Субсегмент “В” Рис.2. Пример функционирования NAT (Замечание. Такая процедура не требует каких-либо изменений в настройках компьютеров или маршрутизаторов. Например, поскольку речь идет о компьютере субсегмента “А”, IP-адрес “198.76.28.4” является адресом, который используется компьютером в субсегменте “В”. Преобразования адресов остаются полностью прозрачными.) 4 Конечно, данный пример является весьма простым Существует много проблем, которые требуют своего разрешения. примером. III. РАЗЛИЧНЫЕ АСПЕКТЫ ФУНКЦИОНИРОВАНИЯ NAT 3.1. Адресные пространства 3.1.1. Разбиение адресов на повторно и не повторно используемые Для корректного функционирования NAT необходимо разбить пространство IP-адресов на две части — повторно используемые адреса для применения внутри субсегментов и глобальные сетевые адреса. Повторно используемые IP-адреса принято называть локальными адресами, а глобальные сетевые адреса — просто глобальными адресами. Любой имеющийся адрес должен быть, либо локальным, либо глобальным. Перекрытие адресных субпространств (частей) не допускается. Последнее требование объясняется следующим образом. Полагаем, что компьютер субсегмента “А” желал передать сообщения компьютеру в субсегменте “В”, но при этом субпространство локальных адресов субсегмента “В” перекрывается с субпространством локальных адресов субсегмента “А”. В таком случае, маршрутизаторы в субсегменте “А” не смогли бы различить глобальные адреса субсегмента “В” от своих собственных локальных адресов. 3.1.2. Начальное распределение адресов на локальные и глобальные Один адрес класса “А” целесообразно выделить для локальных сетей (RFC-1597). Этот адрес затем может быть использован для локальных Internetсетей (Intranet), которые не имеют соединения с глобальной сетью Internet. Затем NAT позволяет легко “перейти” от экспериментальной сети к “реальной” сети путем преобразования экспериментальных адресов в глобальные Internet адреса. Существующие субсегменты, которые имеют уникальные адреса, предназначенные для внутреннего использования, но которых уже не достаточно, могут заменить адресное субпространство на субпространство локальных адресов. Освободившиеся таким образом адреса затем могут быть использованы NAT для внешних соединений. 3.2. Маршрутизация через NAT Маршрутизатор, имеющий в своем составе функционирующий NAT, никогда не должен “показывать” локальные сети магистральной сети. Только сети с глобальными адресами могут быть известны “внешнему миру” относительно субсегмента. Однако, глобальная информация, которую принимает NAT через маршрутизатор на границе субсегмента, должна быть доступна внутри субсегмента в обычном режиме. 5 3.2.1. Частные сети, которые базируются на магистральных сетях Во многих случаях, частные (или корпоративные) сети будут расширяться за счет субсетей в региональных подразделениях компаний/организаций, и для объединения таких субсетей будет использоваться магстральная сеть общего пользования. В такой ситуации, трансляция адресов не желательна, потому, что большое число IP-узлов могут потребовать соединения через магстральную сеть общего пользования, а это, в свою очередь, потребует применения огромных адресных таблиц, и потому, что появиться больше прикладных служб, которые будут зависеть от настройки адресного пространства (в качестве альтернативы обращения к DNS-серверу). Такие частные сети (рис.3) называют корпоративными сетями, базирующимися на магистральных сетях (корпоративно-магистральные сети — КМС). Магистральный маршрутизатор LAN LAN Центр коммутации Локальный маршрутизатор LAN Корпоративномагистральная сеть LAN LAN LAN Корпоративная сеть Рис.3. Корпоративная и корпоративно-магистральная сети 6 КМС должны рассматриваться также как и корпоративные сети. То есть, все локальные маршрутизаторы (рис.3), обслуживающие субсети (LAN) КМС, должны определять маршруты с локальными адресами и направлять трафик в соответствующие субсети КМС (если конечно, магистральные маршрутизаторы не реализуют такие функции). Более того, граничные (локальные) маршрутизаторы должны формировать туннель для передачи своего трафика (на основе повторного обрамления IP-пакетов) через магистральные сети. Для этого необходимо, чтобы каждый NAT-модуль зарезервировал один глобальный IP-адрес для формирования тунеля. Когда NAT-модуль “Х” субсети “Х” желает передать IP-пакет в субсеть “Y”, он сначала проведет процедуру повторного обрамления и в поле “Адрес узла назначения” IP-заголовка обрамленного пакета укажет глобальный IP-адрес NAT-модуля “Y”, причем этот адрес был зарезервирован ранее NAT-модулем “Y” для формирования тунеля. Когда NAT-модуль “Y” получит этот пакет с зарезервированным глобальным IP-адресом, то затем он проведет процедуру разобрамления пакета и направит полученный IP-пакет по внутреннему маршруту субсети “Y”. 3.3. Обработка заголовков Кроме преобразования IP-адресов, NAT-модуль должен пересчитывть проверочные суммы IP-пакета и ТСР-блока. Необходимо помнить, что проверочная сумма ТСР-блока также вычисляется по псевдозаголовку, который включает адреса отправителя и получателя. Также NAT-модуль должен обнаруживать ICMP- и FTP-сообщения и преобразовывать поля, в которых содержиться IP-адреса. Несомненно, существуют и другие “места”, где может понадобиться такая модификация. Очевидно, что при опытной эксплуатации NAT-модуля большинство таких прикладных служб будет обнаружено. 3.3.1. Вопросы секретности, защищенности и устранения неисправностей К сожалению, NAT-модуль уменьшает число дополнительных функций по обеспечению безопасности. При использовании NAT, любая информация, связанная с IP-адресами или формируемая на их основе (например, проверочная сумма ТСР-заголовка) не может быть зашифрована. Несмотря на то, что в большинстве прикладных процессов (прикладной уровень Internetархитектуры) шифрование данных допустимо, NAT-модуль препятствует процедуре шифрования TCP-заголовка. Но с другой стороны, NAT как таковой может рассматриваться как определенный механизм обеспечения секретности. Это вытекает из того факта, что аппаратно-программные средства (и иное оборудование) магистральной 7 сети не могут осуществлять мониторинг на предмет того, какие IP-узлы транслируют и принимают трафик (полагая, конечно, что прикладные данные шифруются). Но с другой стороны, это положительное свойство (обеспечение секретности) является потенциальным источником очень сложных проблем при проведении процедур по отладке сетевых аппаратно-программных средств и устранению неисправностей (включая нарушения в процессе обеспечения безопасности). Если IP-узел эксплуатируется с нарушением режимов, то тогда Internet является фактически источником угроз (таких как попытка атаковать другой сервер (IP-узел) или передать огромное количество вредоносных почтовых сообщений или чего-нибудь еще), и при этом очень трудно выявить источник этого “безобразия”, так как сетевой адрес IP-узла скрыт. IV. ВЫВОДЫ NAT может быть хорошим краткосрочным средством для решения проблем нехватки сетевых адресов и масштабирования в процессе маршрутизации. Это объясняется тем, что NAT-модуль требует незначительных изменений и может быть инсталирован очень быстро. Тем не менее, NAT имеет несколько отрицательных характеристик, которые делают его неприемлемым в качестве долгосрочного решения, и даже могут сделать его неприемлемым в качестве краткосрочного решения. Очевидно, что только практика и опытная эксплуатация будут определять его пригодность. К негативным характеристикам NAT можно отнести следующие: он требует размещения во всех оконечных точках сети специальных матриц трафика (таблиц отображения). В противном случае, NATтаблицы будут очень большими, что может повлечь за собой снижение быстродействия сети. Несмотря на то, что существует вероятность того, что матрицы трафика будут действительно размещены во всех оконечных точках сети, только непосредственный опыт эксплуатации NAT подтвердит их наличие или отсутствие. В любом случае, будущие прикладные службы могут потребовать всеобъемлющих матиц трафика (например, поиск распределенных источников информации), что не позволит использовать NAT в качестве долгосрочного средства решения проблем; он увеличивает вероятность ошибки в процедурах маршрутизации; он нарушает функционирование некоторых прикладных служб (или, по крайней мере, усложняет их функционирование); он скрывает “сущность” IP-узлов (их принадлежность и назначение). Несмотря на то, что данное свойство весьма полезно для обеспечения секретности, в целом оно является отрицательным; 8 проблемы, связанные с функционированием SNMP, DNS и других технологических Internet-протоколов.