NAT - настройка преобразования сетевых адресов. Принцип работы роутера (маршрутизатора)

Доброго времени суток, дорогие читатели! Ну, что давайте про NAT .

Сегодня затронем подробнее тему несколько болезненную и довольно непонятную, но более непонятную, чем болезненную.

В большей степени эта проблема касается тех, кто играет в многопользовательские игры и коротко эта проблема звучит примерно так: "ПОЧЕМУ КО МНЕ НИКТО НЕ ЗАХОДИТ?". Для других эта проблема выглядит несколько иначе, а именно:

  • Почему не качает торрент?
  • Почему пользователи/друзья/знакомые/неизвестные личности не могут подключиться к FTP, WEB, VOIP (TS, Mamble , ведро) и прочим серверам, которые вы так долго пытались настроить и даже проверяли что у вас все работает?
  • Почему ваш личный домашний сервер пустует? Может это вселенский заговор?

Но, однако, нет никакого заговора, виновник всех этих бед находится рядом с вами и хитро подмигивает вам лампочками, а зовут его... роутер, да-да, тот самый, который раздает вам интернет на все ваши (и может быть соседские) девайсы.

Если коротко, то пользователи из интернета просто не могут к вам подключиться, потому что ваш роутер их не пускает, но он делает это не просто из прихоти, а потому, что не знает о том, что все эти люди хотят подключиться именно к вам. Вот он и думает, что они что-то хотят от него самого.

Да, только что я вам обрисовал для чего нужен NAT . А теперь о том, что это такое.

Общее определение

NAT (Network Address Translation) - это такой механизм, который позволяет роутеру определять какие сервисы находятся за роутером и должны быть доступны из интернета, чтобы пользователи оттуда могли этими сервисами пользоваться (определение из вики я брать не стал, т.к. оно заумное и не всем понятное).

NAT присутствует во всех роутерах и серверных операционках в том или ином виде. В роутерах это обычно называется port forwarding , в линуксах iptables , на виндовых серверах - в специальной оснастке. А теперь давайте поговорим о различных типах NAT .

Тип первый, Static NAT

Static NAT не требуется для дома, а нужен в том случае, если провайдер выделил несколько IP адресов (внешние или "белые" адреса) вашей компании, и вам нужно, чтобы некоторые серверы всегда были видны из интернета, при этом их адреса бы не менялись.

Т.е. происходит преобразование адресов 1-1 (один внешний IP назначается одному внутреннему серверу). При такой настройке ваши серверы всегда будут доступны из интернета на любом порту.

Например, провайдер выдал вам четыре IP адреса 87.123.41.11, 87.123.41.12, 87.123.41.13, 87.123.41.14 , а у вас есть три сервера и роутер. Вы назначаете роутеру, например, первый адрес из этого диапазона (87.123.41.11 ), а остальные делите между серверами (сервер 1 - .12, сервер 2 - .13, сервер 3 - .14 ).

Чтобы пользователи из интернета могли подключаться на эти серверы, им достаточно будет ввести внешние IP адреса серверов. Например, когда пользователь подключается на адрес 87.123.41.12 , то роутер перенаправляет его на сервер 1 и пользователь уже общается с сервером, хотя не знает что реальный адрес сервера на самом деле другой (192.168.1.2 ). Такая запись в NAT таблице роутера будет храниться всегда.

Преимущества данного способа:

  • реальные адреса серверов будут скрыты;
  • Ваши серверы всегда будут видны в интернете.

Недостатки :

  • Злоумышленники могут на них попытаться пробиться или осуществлять какие-нибудь атаки;
  • Требуется несколько внешних адресов, что может быть затратно.

Тип второй, Dynamic NAT

Динамический NAT отличается от статического немногим. Он используется почти также, но с тем лишь исключением, что ваши сервера не видны из интернета, но самим серверам этот интернет нужен. Суть его в том, что вам также выдаются несколько внешних IP адресов от провайдера, после чего роутер сам распределяет адреса между "нуждающимися".

Т.е. как только сервер или компьютер захотел выйти в интернет, роутер смотрит на свой список внешних адресов, выданных провайдером, и выдает один адрес из этого списка, при этом помечает что вот он выдал такой-то внешний адрес такому-то серверу или компьютеру (таблица NAT ).

При этом срок жизни такой записи длится очень короткое время и как только сервер/компьютер перестал требовать доступ в интернет, этот адрес удаляется из таблицы NAT роутера.

Существенный недостаток в том, что количество серверов и компьютеров, которым требуется доступ в интернет, не должен сильно превышать кол-во выданных провайдером внешних адресов.

Недостаток и преимущества динамики

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

В данном примере провайдер выдал нам всего два внешних адреса: 87.123.41.11 и 87.123.41.12 . В этом случае мы IP 87.123.41.11 назначаем роутеру, а оставшийся адрес будет автоматически отдаваться тому серверу, который первым попросит доступ в интернет (в данном примере это был сервер 2), остальные серверы будут ждать, когда первый закончит и этот IP адрес освободится.

Преимущества данного способа:

  • Всякие злоумышленники не смогут определить по каким адресам доступны ваши серверы, т.к. их адреса будут все время меняться;
  • Не нужно вручную назначать IP адреса, роутер сам распределит.

Недостатки :

  • Требуется несколько внешних адресов;
  • Кол-во хостов в вашей сети не должно быть сильно больше, чем выданных провайдером IP адресов.

Тип третий, Port Address Translation (PAT), также известный как NAT Overload или NAT Masquerading

Это именно то, что актуально для обычного рядового пользователя. Суть данного метода в том, что вам провайдер выдает только один внешний адрес (например 87.123.41.12 ), при этом вы каждому компьютеру или серверу назначаете какой-нибудь порт .

Например, нам нужно, чтобы пользователи из интернета могли подключаться к торрент-клиенту на ПК 1 и 2 , к серверу Teamspeak на сервере 1, серверу FTP на сервере 2, веб-сайту на сервере 3 (по протоколу http и https), плюс ко всему на ПК 1 и 2 нужен будет удаленный доступ. Теперь затронем немного тему внутренних и внешних портов (да, такое тоже есть).

Внутренний порт - это порт, который использует программа на том компьютере или сервере, на котором находится. Внешний порт - это порт, который вы хотите открыть на роутере, чтобы на него подключались пользователи. Часто внутренний и внешний порты совпадают, но далеко не всегда.

Еще немного про порты и другие нюансы

Многие программы (не только лишь все) имеют вшитые порты без возможности перенастройки, либо, к примеру, у вас есть два Веб-сервера на винде (так называемый IIS ), которые работают на 80 порту каждый и вам нужно дать доступ из интернета на оба сервера.

Здесь вы откроете на роутере одному серверу порт 80 , а оставшемуся вам придется выбрать другой порт (например 8080 ).

Итого, на роутере мы настраиваем порты таким образом:

Имя Приложение Внутренний IP Внутренний порт Внешний IP Внешний порт
Сервер 1 Teamspeak 192.168.1.2 9987* 87.123.41.12 9987
Сервер 2 FTP сервер 192.168.1.3 21* 87.123.41.12 21000
Сервер 3 Веб-сервер 192.168.1.4 80* 87.123.41.12 80
Сервер 3 Веб-сервер 192.168.1.4 443* 87.123.41.12 444
ПК 1 uTorrent 192.168.1.10 26000 87.123.41.12 26000
ПК 2 Bit-Torrent 192.168.1.20 26100 87.123.41.12 26100
ПК 2 Game Server 192.168.1.20 27015* 87.123.41.12 27015
ПК 1 RDP 192.168.1.10 3389** 87.123.41.12 33891
ПК 2 RDP 192.168.1.20 3389** 87.123.41.12 33892

Где * - стандартный порт, который использует программа (т.е. вы ее установили и ничего не настраивали);

** - стандартный порт, который использует сервис и который нельзя сменить.

Теперь я постараюсь объяснить почему я написал именно эти порты.

Немного деталей про порты

  1. Для сервера Teamspeak (TS) я порт не менял, т.к. такой сервер у нас один и пользователям не придется вообще вводить его порт. Они просто вбивают у себя адрес 87.123.41.12 и попадают на наш сервер TS , удобно и практично;
  2. Для FTP сервера я порт поменял, т.к., строго говоря, FTP -сервер не должен быть доступен по стандартному порту, на него могут лазить недобросовестные люди. А так вы говорите тем, кому надо, чтобы подключались на 87.123.41.12:21000 и они попадут на ваш FTP -сервер;
  3. Для Веб-сервера я http порт не менял опять же из-за удобства, чтобы пользователям не надо было вводить адрес вместе с портом в адресной строке. Они просто вводят 87.123.41.12 и подключаются на ваш Веб-сервер. Порт HTTPS же я поменял для наглядности. Пользователям, чтобы попасть на ваш Веб-сервер по защищенному каналу, придется вводить в адресной строке адрес 87.123.41.12:444 ;
  4. С торрентами в общем-то все просто, какой порт настроен в самой программе, такой и настраивается на роутере;
  5. Порт игрового сервера, где в качестве примера я взял обычный стимовский игровой сервер (Dedicated Server), я также не менял, а оставил стандартный;
  6. А вот с RDP ситуация интересная. Дело в том, что на каждом компьютере служба RDP работает по порту 3389 и это никак не поменять без своего RDP сервера (такие тоже бывают). Поэтому, чтобы иметь возможность подключаться на ПК 1 и 2 я задал на роутере порты 33891 и соотв. 33892 , ибо так проще помнить где какой используется. Таким образом, введя в RDP клиенте адрес 87.123.41.12:33891 мы попадем на ПК 1, а введя 87.123.41.12:33892 мы соотв. попадем на ПК 2 .

Подытожив все это получаем, что удаленным пользователям всеравно какие у нас внутренние порты, они о них не знают и знать не могут. Эта информация нужна только нашему роутеру, чтобы он мог пересылать запросы туда, куда они и должны попадать.

Преимущества и недостатки третьего варианта

Теоретически, вы можете назначить одному IP адресу до 131072 (2 * 2^16) приложений. Почему я говорю "приложений", а не компьютеров/серверов?

Потому что один комп или сервер, как вы уже заметили выше, может использовать несколько различных приложений (при этом одно приложение может использовать несколько портов), при этом каждый порт может быть двух типов: TCP и UDP .

Углубляться в это в рамках этой статьи я не буду, в этом нет необходимости.

Для любой программы есть хелп, в котором написано какие порты ей нужны для работы, если их нельзя сменить. Многие приложения позволяют вам самим назначить какие порты какого типа использовать, таким образом упрощая вашу задачу. Для остальных же есть такой замечательный ресурс, как .

  • Преимущество такого метода в том, что вы открываете доступ из интернета именно для определенной программы на определенном компьютере/сервере, все остальные порты компьютера/сервера остаются закрытыми;
  • Недостаток в том, что требуется все порты открывать вручную (иногда программы делают это за вас при помощи технологии UPnP , но такое бывает не всегда).

Послесловие

Получилось несколько сумбурно, да и тема довольно непростая, но надеюсь теперь при слове NAT вас не будет бросать в дрожь:)

Как и всегда, если есть какие-то вопросы, мысли, дополнения и всё такое прочее, то добро пожаловать в комментарии к этой записи.

PS : За существование статьи отдельное спасибо другу проекта и члену нашей команды под ником “barn4k“

Принцип работы роутера (маршрутизатора)

Читая эту статью, я думаю, все понимают, что такое роутер и зачем он нужен, но задумывался ли кто-то - как он работает? В данной статье я постараюсь максимально доступным языком рассказать основные принципы работы маршрутизатора. Данная статья будет полезна и системным администраторам и простым пользователям.

Основная функция, которая работает в любом роутере - NAT

NAT - Network Address Translation служит для замены IP адресов. В локальных сетях в основном используются адреса типа 192.168.1.XXX или подобные, и это порождает проблему маршрутизации в глобальной сети интернет, так как IP адреса в сети не должны дублироваться. Решением данной проблемы есть NAT - компьютеры локальной сети подключаются к локальному интерфейсу роутера, получают от него IP адреса и шлюз (шлюзом служит роутер), а WAN интерфейс роутера подключается к интернету.

Теперь рассмотрим принцип NAT трансляции:

  • С любого компьютера в локальной сети делается запрос, например, вы пытаетесь выйти на любой сайт - компьютер отправляет данный запрос на адрес шлюза, то есть нашего роутера;
  • Роутер, получив данный запрос, записывает ваш компьютер как инициатор соединения, после чего создаётся копия вашего пакета и отправляется по адресу назначения, но уже от лица роутера, и с его IP адресом, а ваш пакет просто уничтожается;
  • Сервер, которому был отправлен запрос, обрабатывает его и отправляет ответ, естественно на адрес роутера. А роутер этого уже ждал, так как создал запись о том, что на запрос вашего компьютера должен прийти ответ, и направляет его на ваш компьютер. Как видно, по данной схеме - инициатором соединения может быть только компьютер из локальной сети, а ответ от сервера попадёт на компьютер, только если роутер будет этого ждать (ответ на запрос). Другими словами, все попытки соединится из вне будут останавливаться на роутере, и будет удачны только если роутер предоставляет ресурс по запрошенному порту или у него настроены правила Port Forwarding, о которых мы сейчас поговорим.

Port Forwarding

Port Forwarding - это по сути то же самое что и NAT, но в другую сторону, а следовательно только статический NAT, то есть, определённые запросы только на определённые компьютеры, ведь в глобальной сети не могут знать IP адресов за роутером. Например, вы создали FTP или HTTP сервер на компьютере и хотите предоставить доступ к данным ресурсам, для этого нужно прописать данное правило в роутере, в котором будет указано, что все входящие пакеты на нужный порт (21 или 80 в нашем случае) будут переданы на IP адрес нашего компьютера на определённый порт (порт можно поменять).

NAT - DMZ

NAT - DMZ - это абсолютно тоже, что и Port Forwarding, но с той разницей, что не нужно прописывать правило для каждого порта, достаточно просто настроить NAT - DMZ, который будет передавать на нужный компьютер все входящие на WAN роутера запросы. Поменять порты конечно уже нельзя.

Маршрутизация

Для упрощения представления о том, что это такое, можно сказать, что это тоже самое, что и NAT, но только в обоих направлениях. При данной схеме у роутера должно быть более 2-х LAN интерфейсов (не портов, а интерфейсов), с разными адресными пространствами, например у одного интерфейса IP - 192.168.0.1, а у другого - 192.168.1.1. Следовательно, компьютеры одной сети будут получать IP типа 192.168.0.XXX, а в другой сети 192.168.0.XXX, а шлюзы у них будут соответственно 192.168.0.1 и 192.168.1.1. Вот таки образом получится двухсторонняя маршрутизация.

Не забываем оставлять

Давно не новость, что сетевых адресов IP для всех устройств, желающих находиться в Интернете, не достаточно. В настоящее время выход из этой ситуации нашли, разработав протокол IPv6, в котором длина адреса составляет 128 бит, в то время как нынешний IPv4 всего 32 бита. Но в начале 2000-х годов нашли другое решение – использовать преобразование сетевых адресов, сокращенно nat. Дальше в статье будет произвена настройка nat в роутере.

Вход в меню настроек роутера

В качестве примера возьмем роутер фирмы ZyXEL серии ZyWALL USG и NXC5200.

Первым делом заходим в настройки роутера. Для этого в любом веб браузере в адресной строке набираем 192.168.1.1. (стандартный адрес роутера), появится окно с требованием ввести логин и пароль.

В поле «Имя пользователя» вводим admin, в поле «Пароль» вводим 1234. Нажимаем «ОК».

Настройка nat в роутере

В открывшемся окне меню переходим во вкладку «Configuration» (значек с двумя шестиренками), далее «Network», далее «Routing». В выбранном окне переходим на закладку «Policy Routing».

Меню настроек роутера ZyXEL

В данном меню настраивается политика маршрутизации. В области «Criteria» настраиваем критерии для выборки трафика – какой трафик необходимо транслировать (собственно настроить nat), а какой просто маршрутизировать. Трафик можно быть выбран по нескольким критериям:

  1. Пользователь (User);
  2. По интерфейсу (Incoming);
  3. По IP-адресу источника (Source Address);
  4. По IP-адресу получателя (Destination Address);
  5. По порту назначения (Service).

В области «Next-Hop» назначаем объект для перенаправления трафика:

Выбор объекта перенаправления роутера ZyXEL

Где «Auto» – трафик будет перенаправляться в глобальный интерфейс, назначенного по умолчанию; Gateway – на адрес указанного в настройках шлюза; VPN Tunnel – IPSec виртуальный частный туннель; Trunk – маршрут на «транк», где «транк» – это несколько интерфейсов, настроенных на работу вместе либо в режим резервирования; Interface – перенаправление на указанный интерфейс:

Важно не забывать при любом внесении изменений в настройки роутера нажимать кнопку «OK», чтобы сохранить настройки, а не просто закрывать веб браузер.

Настройка nat на компьютере

Как известно, в качестве роутера может служить и сам персональный компьютер. Зачастую бывает ситуация, когда имеется компьютерная сеть из нескольких компьютеров, один из которых имеет выход в Интернет. В данной ситуации можно вообще не покупать маршрутизаторов, а настроить компьютер с выходом в Интернет в качестве роутера и настроить nat уже на нем. Рассмотрим такой случай подробнее.

Обязательно на главном компьютере, который смотрит в Интернет (назовем его SERVER) было установлено 2 сетевые карты – первая для подключения в локальную сеть, вторая к провайдеру. В примере будет использоваться операционная система Windows Server 2012.

Для настройки первым делом запускаем «Диспетчер сервера» (Пуск -> Администрирование –> Диспетчер сервера). Появится окно настройки:

Отсюда мы будем управлять нашим сервером. Для продолжения настройки нажмите «Добавить роли и компоненты», в результате чего откроется окно мастера добавления ролей. Первый шаг – Тип установки:

В следующем окне нам необходимо выбрать роль, которую мы устанавливаем на сервер. Ставим галку напротив «Удалённый доступ».

Появится следующее окно, в котором отображается список необходимых для работы компонентов. Нажимаем «Добавить компоненты», данное окно исчезнет. Жмем «Далее».

В следующем окне мастер предлагает добавить компоненты сервера. Ничего менять не надо, жмем «Далее».

На следующей странице мастер просто информирует нас о работе роли «Удаленный доступ». Жмем «Далее».

На следующем шаге необходимо выбрать «Службы ролей». Ставим галочку напротив «Маршрутизация», жмём «Далее».

Следующее окно снова информационное, ничего выбирать не надо, но можно поставить галочку напротив «Автоматический перезапуск на выбранном сервере…», в результате чего сервер после установки будет автоматически перезагружен. Но можно это сделать и вручную. Жмем «Далее».

И последний шаг – непосредственная установка сервера. После окончания нажимаем кнопку «Закрыть».

Установка сервера

Итак, мы настроили компьютер, который подключен к интернету, в режим сервера. Теперь необходимо на нем настроить nat.

Переходим в Пуск / Администрирование / Маршрутизация и удалённый доступ. В появившемся окне в левой части находим пункт «SERVER (локально)», кликнем по нему правой кнопкой мыши и в выпавшем меню жмем «Настроить и включить маршрутизацию и удалённый доступ».

Появится мастер настройки сервера маршрутизации и удалённого доступа, в котором и настроим nat.

На первой странице нас кратко знакомят с мастером – жмем «Далее». На следующем шаге необходимо выбрать одну из служб, которые будут запускаться на данном сервере. Выбираем «преобразование сетевых адресов (NAT)», жмем «Далее».

Дальше мастер попросит выбрать сетевое соединение, которое смотрит в Интернет. В списке будут присутствовать обе сетевые карты (как минимум, в зависимости, сколько их установлено на сервере). Выбираем ту, к которой подключен сетевой кабель провайдера. Жмем «Далее».

В следующем окне мастер начнет ругаться, что ему не удается обнаружить в локальной сети службы DHCP или DNS. Предлагается два варианта продолжения – включить базовые службы, либо установить службы позднее.

Выбираем первый пункт, жмем «Далее». На следующей странице нас проинформирую, в каком диапазоне будет работать nat. Мастер настройки этот диапазон выбирает автоматически, исходя из конфигурации сетевого подключения, подключенного в локальную сеть. Жмем «Далее».

Диапазон nat

Все, мастер настройки завершает настройку nat. Жмем «Далее», и в следующем окне «Готово».

Осталось последнее – настроить клиентские компьютеры, то есть все остальные компьютера локальной сети. Для этого в компьютере клиента (так необходимо будет сделать на каждом компьютере сети) переходим в Пуск / Панель управления / Центр управления сетями и общим доступом / изменение параметров адаптера. Заходим в «Сетевые подключения». Кликаем по значку правой кнопкой мыши и в выпавшем меню выбираем «Свойства». В появившимся окне выбираем «Протокол Интернета версии 4 (TCP/IPv4)», жмем «Свойства».

В после «Основной шлюз» пишем IP-адрес компьютера сервера (который настраивали на прошлом шаге), в поле «Предпочитаемый DNS-сервер» пишем IP-адрес DNS сервера провайдера, указанного в сведениях подключения к интернету на сервере. Жмем «OK», и еще раз «OK». Все, клиентский компьютер подключен к Интернет.

Интернет -маршрутизатором, сервером доступа, межсетевым экраном. Наиболее популярным является Source NAT (SNAT), суть механизма которого состоит в замене адреса источника (source) при прохождении пакета в одну сторону и обратной замене адреса назначения ( destination ) в ответном пакете. Наряду с адресами источника/назначения могут также заменяться номера портов источника и назначения.

Помимо SNAT, т.е. предоставления пользователям локальной сети с внутренними адресами доступа к сети Интернет , часто применяется также Destination NAT , когда обращения извне транслируются межсетевым экраном на сервер в локальной сети, имеющий внутренний адрес и потому недоступный из внешней сети непосредственно (без NAT ).

На рисунках ниже приведен пример действия механизма NAT .


Рис. 7.1.

Пользователь корпоративной сети отправляет запрос в Интернет , который поступает на внутренний интерфейс маршрутизатора, сервер доступа или межсетевого экрана (устройство NAT ).

Устройство NAT получает пакет и делает запись в таблице отслеживания соединений, которая управляет преобразованием адресов.

Затем подменяет адрес источника пакета собственным внешним общедоступным IP-адресом и посылает пакет по месту назначения в Интернет .

Узел назначения получает пакет и передает ответ обратно устройству NAT .

Устройство NAT , в свою очередь , получив этот пакет, отыскивает отправителя исходного пакета в таблице отслеживания соединений, заменяет IP- адрес назначения на соответствующий частный IP- адрес и передает пакет на исходный компьютер . Поскольку устройство NAT посылает пакеты от имени всех внутренних компьютеров, оно изменяет исходный сетевой порт и данная информация хранится в таблице отслеживания соединений.

Существует 3 базовых концепции трансляции адресов:

  • статическая (SAT, Static Network Address Translation),
  • динамическая (DAT, Dynamic Address Translation),
  • маскарадная (NAPT, NAT Overload, PAT).

Статический NAT отображает локальные IP-адреса на конкретные публичные адреса на основании один к одному. Применяется, когда локальный хост должен быть доступен извне с использованием фиксированных адресов.

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

Маскарадный NAT (NAPT, NAT Overload , PAT , маскарадинг) – форма динамического NAT , который отображает несколько частных адресов в единственный публичный IP- адрес , используя различные порты. Известен также как PAT ( Port Address Translation ).

Механизмов взаимодействия внутренней локальной сети с внешней общедоступной сетью может быть несколько – это зависит от конкретной задачи по обеспечению доступа во внешнюю сеть и обратно и прописывается определенными правилами. Определены 4 типа трансляции сетевых адресов:

  • Full Cone (Полный конус)
  • Restricted Cone (Ограниченный конус)
  • Port Restricted Cone (Порт ограниченного конуса)
  • Symmetric (Симметричный)

В первых трех типах NAT для взаимодействия разных IP-адресов внешней сети с адресами из локальной сети используется один и тот же внешний порт . Четвертый тип – симметричный – для каждого адреса и порта использует отдельный внешний порт .

Full Cone , внешний порт устройства (маршрутизатора, сервера доступа, межсетевого экрана) открыт для приходящих с любых адресов запросов. Если пользователю из Интернета нужно отправить пакет клиенту, расположенному за NAT ’ом, то ему необходимо знать только внешний порт устройства, через который установлено соединение. Например, компьютер за NAT ’ом с IP-адресом 192.168.0.4 посылает и получает пакеты через порт 8000, которые отображаются на внешний IP- адрес и порт , как 10.1.1.1:12345. Пакеты из внешней сети приходят на устройство с IP-адресом:портом 10.1.1.1:12345 и далее отправляются на клиентский компьютер 192.168.0.4:8000.

Во входящих пакетах проверяется только транспортный протокол; адрес и порт назначения, адрес и порт источника значения не имеют.

При использовании NAT , работающему по типу Restricted Cone , внешний порт устройства (маршрутизатора, сервера доступа, межсетевого экрана) открыт для любого пакета, посланного с клиентского компьютера, в нашем примере: 192.168.0.4:8000. А пакет, пришедший из внешней сети (например, от компьютера 172.16.0.5:4000) на устройство с адресом:портом 10.1.1.1:12345, будет отправлен на компьютер 192.168.0.4:8000 только в том случае, если 192.168.0.4:8000 предварительно посылал запрос на IP- адрес внешнего хоста (в нашем случае – на компьютер 172.16.0.5:4000). То есть, маршрутизатор будет транслировать входящие пакеты только с определенного адреса источника (в нашем случае компьютер 172.16.0.5:4000), но номер порта источника при этом может быть любым. В противном случае, NAT блокирует пакеты, пришедшие с хостов, на которые 192.168.0.4:8000 не отправлял запроса.

Механизм NAT Port Restricted Cone почти аналогичен механизму NAT Restricted Cone. Только в данном случае NAT блокирует все пакеты, пришедшие с хостов, на которые клиентский компьютер 192.168.0.4:8000 не отправлял запроса по какому-либо IP-адресу и порту. Mаршрутизатор обращает внимание на соответствие номера порта источника и не обращает внимания на адрес источника. В нашем примере маршрутизатор будет транслировать входящие пакеты с любым адресом источника, но порт источника при этом должен быть 4000. Если клиент отправил запросы во внешнюю сеть к нескольким IP-адресам и портам, то они смогут посылать пакеты клиенту на IP- адрес : порт 10.1.1.1:12345.

Symmetric NAT существенно отличается от первых трех механизмов способом отображения внутреннего IP-адреса:порта на внешний адрес : порт . Это отображение зависит от IP-адреса:порта компьютера, которому предназначен посланный запрос . Например, если клиентский компьютер 192.168.0.4:8000 посылает запрос компьютеру №1 (172.16.0.5:4000), то он может быть отображен как 10.1.1.1:12345, в тоже время, если он посылает с того же самого порта (192.168.0.4:8000) на другой IP- адрес , он отображается по-другому (10.1.1.1:12346).

  • Позволяет предотвратить или ограничить обращение снаружи к внутренним хостам, оставляя возможность обращения из внутренней сети во внешнюю. При инициации соединения изнутри сети создаётся трансляция. Ответные пакеты, поступающие снаружи, соответствуют созданной трансляции и поэтому пропускаются. Если для пакетов, поступающих из внешней сети, соответствующей трансляции не существует (а она может быть созданной при инициации соединения или статической), они не пропускаются.
  • Позволяет скрыть определённые внутренние сервисы внутренних хостов/серверов. По сути, выполняется та же указанная выше трансляция на определённый порт, но возможно подменить внутренний порт официально зарегистрированной службы (например, 80-й порт TCP (HTTP-сервер) на внешний 54055-й). Тем самым, снаружи, на внешнем IP-адресе после трансляции адресов на сайт (или форум) для осведомлённых посетителей можно будет попасть по адресу http://dlink.ru:54055 , но на внутреннем сервере, находящимся за NAT, он будет работать на обычном 80-м порту.
  • Однако следует упомянуть и о недостатках данной технологии:

    1. Не все протоколы могут "преодолеть" NAT. Некоторые не в состоянии работать, если на пути между взаимодействующими хостами есть трансляция адресов. Опеределенные межсетевые экраны, осуществляющие трансляцию IP-адресов, могут исправить этот недостаток, соответствующим образом заменяя IP-адреса не только в заголовках IP, но и на более высоких уровнях (например, в командах протокола FTP).
    2. Из-за трансляции адресов "много в один" появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.
    3. Атака DoS со стороны узла, осуществляющего NAT – если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS-атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT приводит к проблеме с подключением к серверу некоторых пользователей из-за превышения допустимой скорости подключений.

    NAT или трансляция сетевых адресов является способом переназначения одного адресного пространства в другой путем изменения информации сетевых адресов в Internet Protocol или IP. Заголовки пакетов меняются в то время, когда они находятся в пути через устройства маршрутизации. Данный метод использовался первоначально для более простого перенаправления трафика в сетях IP без необходимости нумерации каждого хоста. Он стал важным и популярным инструментом для распределения и сохранения глобального адресного пространства в условиях острого недостатка адресов IPv4.

    Что такое NAT?

    Использование трансляции сетевых адресов заключается в отображении каждого адреса из одного адресного пространства к адресу, который находится в другом адресном пространстве. Это может понадобиться в том случае, если изменился провайдер услуг, а у пользователя нет возможности публично объявить новый маршрут к сети. Технология NAT в условиях глобального истощения адресного пространства с конца 90-х годов используется все чаще. Обычно данная технология используется в сочетании с IP-шифрованием. IP-шифрование представляет собой метод перехода нескольких IP адресов в одно пространство. Данный механизм реализован в устройстве маршрутизации, использующем таблицы перевода с сохранением состояния для отображения в один IP адрес скрытых адресов. Также он перенаправляет на выходе все исходящие пакеты IP. Таким образом, данные пакеты отображаются выходящими из устройства маршрутизации. Ответы в обратном канале связи отображаются в исходном IP адресе при помощи правил, которые хранятся в таблицах перевода. В свою очередь таблицы перевода очищаются по истечении короткого времени, если трафик не обновит свое состояние. Вот в чем заключается основной механизм NAT. Что же это означает? Данная технология позволяет организовывать связь через маршрутизатор только в том случае, когда соединение происходит в зашифрованной сети, так как это создает таблицы перевода. Внутри такой сети веб-браузер может просматривать сайт за ее пределами, однако будучи установленным вне ее, он не может открыть ресурс, который в ней размещен. Большинство устройств NAT сегодня позволяют сетевому администратору конфигурировать записи таблицы перевода для постоянного применения. Данная функция особенно часто упоминается как перенаправление портов или статическая NAT. Она дает возможность трафику, исходящему во «внешнюю» сеть, достичь назначенных хостов в зашифрованной сети. Из-за того, что метод, используемый с целью сохранения адресного пространства IPv4 пользуется популярностью, термин NAT практически стал синонимом метода шифрования. Так как трансляция сетевых адресов меняет информацию об адресе IP-пакетов, это может иметь серьезные последствия для качества подключения. Так что она требует пристального внимания ко всем деталям реализации. Способы использования NAT друг от друга отличаются в своем конкретном поведении в различных ситуациях, которые касаются влияния на сетевой трафик.

    Базовая NAT

    Простейший тип NAT позволяет обеспечить трансляцию IP-адресов «один-к-одному». Основным типом данной трансляции является RFC-2663. В данном случае меняются только IP-адреса, а также контрольная сумма заголовков IP. Можно использовать основные типы трансляции для соединения двух сетейIP, имеющих несовместимую адресацию.

    Большая часть разновидностей NAT способна сопоставить несколько частных хостов к одному IP-адресу, который публично обозначен. Локальная сеть в типичной конфигурации использует один из назначенных «частных» IP-адресов подсети. В этой сети маршрутизатор имеет частный адрес в пространстве. Также маршрутизатор подключается к интернету при помощи «публичного адреса», который присваивается провайдером интернета. Поскольку трафик проходит из локальной сети Интернет, то адрес источника в каждом пакете переводится из частного в публичный на лету. Также маршрутизатор отслеживает основные данные о каждом активном соединении. В частности, это касается такой информации, как адрес и порт назначения. Когда ответ возвращается к нему, он использует данные соединения, которые сохраняются во время выездного этапа. Это необходимо для того, чтобы определить частный адрес внутренней сети, к которому нужно направить ответ. Основным преимуществом такого функционала является то, что он является практическим решением проблемы исчерпания адресного пространства IPv4. С помощью одного IP-адреса к интернету могут быть подключены даже крупные сети. Все дейтаграммы пакетов в IP сетях имеют два IP адреса – это исходный адрес и адрес пункта назначения. Пакеты, проходящие из частной сети к сети общего пользования, будут иметь адрес источника пакетов, который изменяется во время перехода от публичной сети к частной. Также возможны и более сложные конфигурации.

    Особенности настройки NAT

    Настройка NAT может иметь определенные особенности. Чтобы избежать трудностей, связанных с переводом возвращенных пакетов, могут потребоваться их дальнейшие модификации. Большая часть интернет-трафика будет идти через протоколы UDP иTCP. Их номера изменяются таким образом, что адреса IP и номера порта при обратной отправке данных начинает сопоставляться. Протоколы, которые не основаны на UDP или TCP, требуют других методов перевода. Как правило, ICMP или протокол управления сообщения в сети интернет, соотносит передаваемую информацию с имеющимся соединением. Это значит, что они должны отображаться с использованием того же адреса IP и номера, который был установлен изначально. Что же необходимо учитывать? Настройка NAT в роутере не предоставляет ему возможности соединения «из конца в конец». По этой причине такие маршрутизаторы не могут участвовать в некоторых интернет-протоколах. Услуги, требующие инициации соединений TCP от внешней сети или пользователей без протоколов, могут быть просто недоступны. Если NAT маршрутизатор не делает особых усилий для поддержки таких протоколов, то входящие пакеты могут так и не достичь места назначения. Некоторые протоколы могут быть размещены в одной трансляции между участвующими хостами иногда при помощи шлюза прикладного уровня. Однако соединение не будет установлено, когда обе системы при помощи NAT отделены от сети Интернет. Также использование NAT усложняет туннельные протоколы, типа IPsec, так как она меняет значения в заголовках, которые взаимодействуют с проверками целостности запросов.

    NAT: существующая проблема

    Основным принципом интернета является соединение «из конца в конец». Оно существует с момента его разработки. Текущее состояние сети только доказывает, что NAT является нарушением данного принципа. В профессиональной среде имеется серьезная озабоченность, связанная с повсеместным использованием в IPv6 трансляции сетевых адресов. Таким образом, сегодня поднимается вопрос о том, как можно устранить эту проблему. Из-за того, что таблицы, сохраняющие состояние трансляции в маршрутизаторах NAT по своей природе не вечны, устройства внутренней сети утрачивают соединение IP в течение очень короткого временного периода. Нельзя забывать об этом обстоятельстве говоря о том, что собой представляет NAT в роутере. Это значительно сокращает время работы компактных устройств, которые работают на аккумуляторах и батарейках.

    Масштабируемость

    При использовании NAT также отслеживаются только те порты, которые могут быть быстро истощены внутренними приложениями, которые используют несколько одновременных соединений. Это могут быть HTTP запросы для страниц с большим количеством встроенных объектов. Смягчить данную проблему можно путем отслеживания IP адреса в назначениях в дополнение к порту. Один локальный порт таким образом может быть разделен большим количеством удаленных хостов.

    NAT: некоторые сложности

    Так как все внутренние адреса оказываются замаскированными под один общедоступный, для внешних хостов невозможно инициировать подключение к определенному внутреннему узлу без настройки специальной конфигурации на брандмауэре. Данная конфигурация должна перенаправлять подключения к определенному порту. Приложения для IP-телефонии, видеоконференций и подобные сервисы для своего нормального функционирования должны использовать методы обхода NAT. Порт перевода Raptи обратный адрес позволяет хосту, у которого IP адрес меняется время от времени, оставаться доступным в качестве сервера при помощи фиксированного IP адреса домашней сети. Это в принципе должно позволить настройке серверов сохранять соединение. Несмотря на то, что такое решение проблемы является не идеальным, это может стать еще одним полезным инструментом в арсенале сетевого администратора при решении задач, связанных с настройкой на роутере NAT.

    PAT или Port Address Translation

    Port Address Translation является реализацией Cisco Rapt, которая отображает несколько частных IP адресов в виде одного публичного. Таким образом, несколько адресов могут быть отображены как адрес, потому что каждый из них отслеживается при помощи номера порта. PAT использует уникальные номера портов источника на внутреннем глобальном IP, чтобы различать направление передачи данных. Данными номерами являются целые 16-разрядные числа. Общее число внутренних адресов, которые могут быть переведены на один внешний адрес, теоретически может достигать 65536. В реальности же количество портов, на которые может быть назначен единый адрес IP, составляет примерно 4000. PAT, как правило, пытается сохранить исходный порт «оригинала». В том случае, если он уже используется Port Address Translation назначает первый доступный номер порта, начиная с начала соответствующей группы. Когда доступных портов не остается и есть более одного внешнего IP адреса, PAT переходит к следующему для выделения исходного порта. Данный процесс будет продолжаться до тех пор, пока доступные данные не закончатся. Служба Cisco отображает адрес и порт. Она сочетает в себе адрес порта перевода и данные туннелирования пакетов IPv4 по внутренней сети IPv6. По сути это альтернативный вариант Carrier Grade NAT и DS-Lite, который поддерживает IP трансляции портов и адресов. Это позволяет избежать проблем, связанных с установкой и поддержанием соединения. Также это позволяет обеспечить механизм перехода для развертывания IPv6.

    Методы перевода

    Известно несколько основных способов реализации перевода сетевого адреса и порта. В определенных прикладных протоколах требуется определить внешний адрес NAT, используемый на другом конце соединения. Также часто необходимо изучить и классифицировать тип передачи. Как правило, это делается потому, что желательно между двумя клиентами, находящимися за отдельными NAT, создать прямой канал связи. Для этой цели был разработан специальный протокол RFC 3489, который обеспечивает простой обход UPD через NATS. Он на сегодняшний день уже считается устаревшим, так как в наши дни такие методы считаются недостаточными для правильной оценки работы устройств. В 2008 году был разработан протокол RFC 5389, в котором были стандартизованы новые методы. Данная спецификация сегодня называется Session Traversal. Она представляет собой специальную утилиту, предназначенную для работы NAT.

    Создание двусторонней связи

    Каждый пакет UDP и TCP содержит IP адрес источника и его номер порта, а также координаты конечного порта. Номер порта имеет очень важное значение для получения таких общедоступных услуг, как функционал почтовых серверов. Так, например, порт 25 подключается к SMTP почтового сервера, а порт 80 подключается к программному обеспечению веб-сервера. Существенное значение имеет также и IP адрес общедоступного сервера. Данные параметры должны быть достоверно известны тем узлам, которые намерены установить соединение. Частные IP адреса имеют значение только в локальных сетях.