Что такое nat и для чего он
Сетевой порт/Что такое NAT и как определить, находитесь ли вы за NAT
В Википедии имеется статья по теме «NAT»
Содержание
Что такое NAT [ править ]
NAT — Network Address Translation, трансляция сетевых адресов. Оригинал RFC 1631, RFC 3022. Перевод RFC 3022.
Ваш компьютер может быть подключен к Интернету:
Здесь NAT — это процесс трансляции локальных адресов во внешние. Благодаря этому процессу ваш компьютер получает доступ в Интернет.
NAT автоматически делает порты вашей машины недоступными из Интернета для прямого входящего соединения.
Находитесь ли вы за NAT [ править ]
IP-адрес компьютера [ править ]
Выберите команду главного меню Пуск > Выполнить. и наберите команду cmd
В появившемся командном окне выполните команду ipconfig
Первый из этих адресов — это IP-адрес вашего компьютера.
Default Gateway — адрес шлюза, он же маршрутизатор (роутер).
Subnet Mask определяет, какие адреса являются локальными (к ним компьютер будет обращаться напрямую), а какие нет (к ним обращение будет идти через маршрутизатор).
Выполните в терминале команду:
Локальный ли? [ править ]
Три специальных диапазона IP-адресов зарезервированы для локальных сетей и в Интернете не используются:
Четвертый диапазон предназначен для самоназначаемых IP-адресов; в случае если на компьютере настроен DHCP-клиент и ему не удалось получить IP-адрес, он берёт случайный адрес из этого диапазона. Эти адреса предназначены для передачи информации только в пределах одной физической сети (так называемые Link-local-адреса, см. RFC 3927).
Если IP-адрес вашего компьютера находится в одном из этих диапазонов, то есть начинается с 10. или с 192.168. или с 172.nn. (где nn — от 16 до 31), то это локальный (внутренний) адрес и вы точно находитесь за NAT.
Внешний ли? [ править ]
Эти сайты покажут вам адрес, под которым вас видят другие компьютеры в Интернете. Если он совпадает с IP-адресом вашего компьютера, то вы точно подключены к Интернету напрямую (то есть не за NAT) и дальше вам читать не нужно.
Остальные варианты [ править ]
В остальных случаях возможны такие варианты:
Во многих случаях вы можете определить, есть ли между вами и Интернетом прокси-сервер, пользуясь, например, сайтом lagado.com/proxy-test.
Подключение через прокси в этом руководстве пока не рассматривается.
Чей это NAT [ править ]
Если вы за NAT, то следующим шагом надо определить, где именно находится NAT-устройство.
Провайдеры [ править ]
Такую ситуацию описывают разными словами:
Проще всего позвонить провайдеру и узнать. Или спросить у соседей с таким же подключением. Обычно такой провайдер предоставляет дополнительную услугу — внешний («белый») IP-адрес за отдельную плату.
Без внешнего IP-адреса сделать себе доступный порт нельзя.
Дополнительно [ править ]
Ваш NAT [ править ]
В этом случае ваш внешний IP-адрес «принадлежит» вам лично, и вы практически всегда можете ваше NAT-устройство настроить и получить доступный порт.
В качестве NAT может выступать компьютер, подключённый к Интернету напрямую; тогда ваш второй компьютер (для которого вам нужно открыть порт) получает доступ к Интернет через него с помощью встроенного в Windows ICS или сторонней программы, например, WinRoute. Про настройку порта в ICS смотрите тут или тут (обе ссылки на английском).
Но чаще это обычный домашний маршрутизатор, на настройке которого и фокусируется далее это руководство:
Двойной NAT [ править ]
К сожалению, иногда бывает и так, что NAT есть и у вас, и у провайдера, то есть ваш компьютер находится за двумя NAT сразу. Это можно проверить, зайдя в настройки маршрутизатора, посмотрев на его внешний (WAN) IP-адрес и далее следуя вышеописанному сценарию (принадлежит ли этот адрес диапазонам локальных сетей, совпадает ли он с тем адресом, под которым вас видят в Интернете).
Что такое NAT на роутере?
Компьютер подключается к глобальной сети несколькими способами. Это может быть прямое подключение, в этом случае имеется внешний IP адрес (динамический или статический), который виден из интернета. Или же подключение может осуществляться через маршрутизатор. При таком подключении внешний адрес имеет только роутер, а все подключенные к нему пользователи являются клиентами другой сети. Роутер берет на себя распределение входящего и исходящего трафика между клиентами и интернетом. Возникает ряд проблем при подключении через маршрутизатор:
Решить проблему помогает правильная настройка маршрутизатора, а именно сервиса NAT на нем. Для того, чтобы понять, как настроить NAT на роутере, необходимом узнать, что такое трансляция адресов и для чего это используется.
NAT: общие определения
NAT (network address translation) или трансляция сетевых адресов — это процесс перевода внутренних или локальных адресов во внешние. NAT используется абсолютно всеми маршрутизаторами независимо от их конфигурации, назначения и стоимости. По умолчанию роутер запрещает напрямую обращаться к любому устройству, находящимися внутри сети. Он блокирует доступ на любые порты для входящих соединений поступающие из интернета.
Но NAT и Firewall это суть разные понятия. Firewall просто запрещает доступ к ресурсу по определенному TCP или UDP порту, может устанавливаться на локальной машине для ограничения доступа только к ней или же на сервере для фильтрации трафика по всей локальной сети. Перед NAT задача стоит более развернуто. Сервис запрещает или разрешает доступ внутри сети по конкретному IP адресу или диапазону адресов. Таким образом клиент, который обращается к ресурсу не видит действительного IP адреса ресурса. NAT переводит внутренний IP в адрес, который будет виден из интернета.
Чтобы проверить находится ли компьютер за NAT или транслирует в интернет реальный адрес можно следующим образом:
Вывод команды показывает следующие данные:
Как теперь разобрать является ли адрес локальным или же напрямую «смотрит» в интернет. Согласно спецификации, существует четыре диапазона адресов, которые ни при каких обстоятельствах не используются в интернете, а являются исключительно локальными:
В том случае, когда адрес машины попадает в один из этих диапазонов, следует считать, что компьютер находится в локальной сети или «за» NAT. Можно также дополнительно использовать специальные службы, которых есть множество в интернете для определения реального IP адреса. Теперь стало понятнее находится ли компьютер за NAT в роутере что это за сервис, и за то он отвечает.
Проблемы NAT и возможности решения
С момента появления NAT сразу же стали проявляться проблемы. Невозможно было получить доступ по отдельному протоколу или в работе отдельных программ. Данные проблемы так и не удалось полностью устранить, получилось только найти некоторые варианты решения только с использованием трансляции адресов, но ни один вариант решения не является правильным с точки зрения спецификаций администрирования.
В качестве примера можно рассмотреть протокол передачи файлов (FTP), который был саммым распространенным к появлению NAT. Для файловых серверов (FTP) ключевым является реальный IP адрес компьютера, который посылает запрос на доступ. Здесь преобразование адресов не работает, потому что запрос на сервер отправляется с IP, невидимого из интернета. Нет возможности создать сессию клиент-сервер для загрузки файлов. Обойти проблему помогает использование FTP в пассивном режиме. В этом режиме используется другой набор команд, и работа ведется через специальный прокси-сервер, который дополнительно открывает другой порт для соединения и передает его программе клиенту. Проблемой такого решения является то, что необходимо использовать сторонние FTP клиенты.
Полностью избавиться от проблемы доступа получилось только с появлением SOCKS (Socket Secure) протокола. Этот протокол позволяет обмениваться данными через прокси-сервер в «прозрачном» режиме. То есть сервер не будет знать, что происходит подмена адресов с локальных на глобальные и наоборот. Изобретение SOCKS позволило избавиться от ряда проблем и упростить работу администрирования сети:
Использование NAT и SOCKS не всегда оправдано с точки зрения сетевого администрирования. Иногда более целесообразным является использование специализированных прокси, которых существуете множество для любого протокола передачи данных.
Настройка NAT на компьютере
Все современные операционные системы имеют уже встроенный NAT. В Windows эта функция реализована с 1999 года с появлением Windows XP. Управление NAT осуществляется непосредственно через свойства сетевого подключения. Чтобы настроить службу нужно сделать следующее:
Если при выведется сообщение что невозможно запустить службу общего доступа, нужно убедиться, что запущена служба DHCP-клиент. При необходимости можно установить запуск службы принудительно, а не по запросу автоматически.
Настройка NAT на маршрутизаторе
Что такое NAT в роутере, целесообразность его использования и проблемы, которые он может создать было описано выше, теперь можно перейти непосредственно к реализации задачи. Настройка службы на роутере зависит от его модели, используемой прошивки и других параметров. Но достаточно понять механизм, чтобы не возникало сложностей и вопросов по настройке отдельного устройства. Для настройки выполняются следующие действия (в качестве примера настройки выполняются на роутере Zyxel на прошивке v1):
Открывшаяся страница и будет той, которая управляет политиками доступа и маршрутизацией. Здесь необходимо включить службу, активировав переключатель в положение «Enable». Сами настройки выполняются в группе «Criteria». Выбираются параметры NAT по нескольким категориям фильтров:
В качестве объекта перенаправления можно выбрать следующие варианты:
В каждом отдельно взятом роутере настройки и название пунктов меню может отличаться, но принцип построения NAT остается неизменным.
NAT (обзор и примеры)
Содержание
Это абсолютно разные технологии. Не путайте их.
Что такое NAT
Существуют более узкие понятие SNAT, DNAT, маскарадинг, PAT, NAT-PT и т.д.
зачем нужен NAT, как его используют
Для вывода в интернет внутренней сети
Для подмены внешнего ip адреса другим (перенаправление трафика)
Для балансировки нагрузки между одинаковыми серверами с разными ip адресами.
Для объединения двух локальных сетей с пересекающейся внутренней адресацией.
как устроен NAT
port-mapping, прокидывание портов
Преимущества и недостатки
Несовместим с некоторыми протоколами. Конкретная реализация NAT должна поддерживать инспекцию требуемого протокола.
NAT обладает свойством «экранировать» внутреннюю сеть от внешнего мира, но его нельзя использовать вместо межсетевого экрана.
Настройка на Cisco IOS
Маршрутизаторы и межсетевые экраны Cisco поддерживают различные типы NAT, в зависимости от набора опций ПО. Наиболее используемым является метод NAT с привязкой внутренних локальных адресов в различные порты одного внешнего адреса (PAT в терминологии Cisco).
Для настройки NAT на маршрутизаторе требуется: o Определить трафик, который необходимо транслировать (при помощи access-list’ов или route-map);
Аксесс-лист LOCAL выбирает весь трафик из 10 сети.
Роут-мап INT1 выбирает трафик аксесс-листа LOCAL, выходящий через сабинтерфейс Fa 0/1.1
o Определить на какие внешние адреса проводить трансляцию. Выбрать пул внешних адресов. Для PAT достаточно одного адреса.
Задание пула внешних адресов с именем GLOBAL. В пуле всего один адрес.
o Включить NAT для выбранных внутренних и внешних адресов.
Включение NAT для трансляции адресов источника на внутреннем интерфейсе. Будет транслироваться только трафик попадающий под условия роут-мапа INT1. Внешний адрес будет браться из пула GLOBAL.
Статическое «прокидывание порта» или «публикация сервиса». В трафике идущем внутрь на адрес 212.192.64.74 на порт tcp 23 будет заменен адресат на адрес 10.0.0.1 и порт 23.
o Назначить внутренние и внешние интерфейсы.
Интерфейс Fa 0/0 назначен внутренним для NAT.
Сабинтерфейс Fa 0/1.1 назначен внешним для NAT.
o Отладка и диагностика:
Примеры
Приведем несколько демонстрационных примеров для эмулятора cisco Packet Tracer.
Простая схема вывода небольшой сети в интернет через пул внешних адресов http://k.psu.ru/disk/files/user/MoiseevVI/wiki/NAT_exapmles_Simple_SNAT.pkt
Порядок работы NAT
Порядок применения правил NAT различается у различных производителей и на различном оборудовании. Приведем порядок применения политик NAT для маршрутизаторов на cisco IOS:
Интернет-канал от одного провайдера через NAT
Простая схема реализации NAT с одним провайдером
Резервирование интернет-канала от двух провайдеров при помощи NAT, ip sla
Дано: мы получаем для нескольких компьютеров интернет от провайдера ISP1. Он выделили нам адрес 212.192.88.150. Выход в интернет организован с этого ip адреса через NAT.
В чем сложность задачи? clear ip nat translations?
Схема
Конфиг
1 clear ip nat translations *
Найден, оттестирован такой кусок EEM. Не на всех версиях IOS генерируется событие.. Надо уточнить.
2 При падении интерфейса на провайдера, велики шансы, что его шлюз будет пинговаться через второго
Разное
CGN (carrier grade nat) с особым пулом приватных адресов
Трансляция Сетевых Адресов — Network Address Translation подробное описание технологии
Трансляция сетевых адресов по английский Network Address Translation (NAT) это технология замены ip адресов и портов в заголовке ip пакета. Чаще всего nat используется, чтобы заменить ip адрес внутренней сети на ip адрес из внешней сети. Это делается, чтобы преодолеть нехватку адресов IPv4.
Внутренние и внешние IP адреса
Внешние ip адреса это обычные адреса, которые можно применять в интернет. Они должны быть уникальными во всём мире, их нельзя использовать просто так. Нужно получать разрешение у корпорации ICANN, у одного из ее региональных регистраторов.
Проблема с внешними адресами в протоколе ipv4 в том, что их не хватает для современного масштаба интернет. Адресов ipv4 примерно 4 млрд., а сейчас устройств в интернете гораздо больше.
Внутренние IP адреса это три специальных, диапазонов ip адресов, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 которые можно использовать для создания внутренних или частных сетей. Диапазоны определены в документе RFC 1918. Эти адреса не могут использоваться в интернет, зато их можно применять в своей сети без обращения в ICANN. Разные частные сети, могут использовать одни и те же диапазоны внутренних ip адресов.
Пример использования NAT
Как работает технология NAT для преобразования внутренних адресов во внешние? Предположим, у нас есть сеть организации в которой используются внутренние адреса из диапазона 192.168.1.0. Есть Интернет в котором такие адреса использовать нельзя и внутренняя сеть подключаемая к интернет через устройство NAT.
Устройство NAT имеет один внешний ipv4 адрес 184.86.48.128 и когда компьютеры из внутренней сети хотят подключиться к интернету, устройство NAT преобразует ip адреса из внутренней сети в ip адрес внешней сети.
Типы NAT
Есть достаточно много разных вариантов технологии NAT. Мы рассмотрим 3 типа, которые используются чаще всего. Однако, кроме них есть и другие возможные варианты.
Статический NAT
Первый тип это статическое отображение ip адресов один к одному. В этом случае, нам нужно иметь столько же внешних адресов, сколько и компьютеров во внутренней сети. т.е. 4 компьютера и 4 ip адреса в нашем случае. И у нас фиксированное отображение внутренних адресов во внешние ip адреса.
Такая схеме используетя редко и она возможна, когда Вы подключаете сеть организации не к интернет, а к какой-то другой организации, где тоже используются внутренние ip адреса и возможен конфликт ip адресов.
Динамический NAT
Второй вариант это динамическое преобразование, когда набор внутренних ip адресов отображается на группу внешних ip адресов. В случае динамического NAT у нас есть несколько внешних ip адресов, которые поочередно используются разными компьютерами из внутренней сети. Например сначала компьютер 1 использует первый адрес, а компьютер 3 второй адрес.
Через некоторое время, второй компьютер может использовать второй адрес, а третий компьютер первый адрес. Таким образом, преобразование выполняется динамически.
Один ко многим (masquerading)
Третий вариант, который используется чаще всего это, когда все адреса из внутренней сети, отображаются на один внешний ip адрес.
Рассмотрим, как работает вариант NAT one-to-many, потому что с его помощью, можно подключать к интернет большие сети организаций, используя один внешний ip адрес (184.86.48.128). Именно это позволяет частично смягчить проблему нехватки адресов ipv4.
Преобразование или трансляция сетевых адресов, реализуется с помощью таблицы NAT, которая находится внутри устройства NAT.
Работа NAT
Как работает nat в режиме masquerading? Предположим, что первый компьютер решил зайти на сайт. Он отправляет пакет, в ip адресе указывается ip адрес компьютера из внутренней сети (192.168.1.2), в поле порт указывается динамический порт, выданный браузеру операционной системой (57160). И пакет предназначен для 80 порта адреса Веб-сайта.
Но, так как адреса из внутренней сети не могут использоваться в интернет, то устройству nat нужно заменить ip адрес из внутренней сети в заголовке пакета в адресе отправителя (192.168.1.1), на ip адрес из внешней сети (184.86.48.128).
Как это делает устройство nat? После того, как устройство nat получило пакет, оно записывает внутренний ip адрес и внутренний порт в таблицу и генерирует пару внешний адрес и внешний порт для замены в пакете. Так как у нас всего лишь один внешний адрес, то именно он записывается в поле внешний ip. Внешний порт генерируется случайным образом. Устройство нат сгенерировало адрес пота 48202.
На следующем этапе происходит трансляция, т.е. замена ip адреса и порта. IP адрес и порт отправителя удаляются из пакета и на их место записываются новые данные из таблицы nat. Внешний ip адрес устройства nat и внешний порт, которое устройство nat сгенерировало случайным образом.
В таком виде пакет передается на веб сервер. Когда приходит ответ от веб-сервера, там в качестве получателя, указывается ip адрес устройства nat и порт на этом устройстве.
Но в реальности эти данные предназначены не для устройства nat, а для компьютера внутренней сети. Поэтому устройство нат должно понять к какому компьютеру во внутренней сети предназначены данные. Затем изменить ip адрес и порт, передать данные нужному компьютеру. Это делается, с помощью таблицы nat.
В таблице nat ищется запись в которой внешний ip адрес и внешний порт, такие же как в поступившем пакете. Пока у нас в таблице одна запись, поэтому устройство nat берет из этой записи внутренний ip адрес интересующего нас компьютера и его порт. Устройство nat сново производит замену ip адреса и порта в пакете и в в таком виде передает пакет во внутреннюю сеть.
Что происходит если в интернет захочет зайти какой-нибудь другой компьютер, предположим, что компьютер 4 тоже хочет зайти на веб-сайт zvondozvon.ru. Устройство nat работает аналогично, извлекает ip адрес и порт, записывает их в таблицу nat. В качестве внешнего ip адреса указывается единственный внешний ip адрес устройства nat и номер внешнего порта снова генерируется случайным образом.
Адрес и порт из внутренней сети меняются на адрес и порт из внешней сети. И в таком виде пакет передается в интернет.
Когда приходит ответ от веб-сервера, снова выполняется поиск пары внешний ip адрес и внешний порт. В таблице nat ищется соответствующие им внутренний ip адрес и внутренний порт. Производится замена в заголовке пакета и пакет передается во внутреннюю сеть. Можете посмотреть видео, если что-то было не ясно.
Преимущества NAT
Эта технология долго позволяла справляться с нехваткой адресов ipv4. Вы можете подключить к интернет сеть крупной организации, где много компьютеров, с помощью всего лишь одного внешнего адреса ipv4.
Эту технологию легко развернуть и использовать, Вам нужно всего лишь одно устройство nat и адреса для внутренней сети. Вы можете свободно использовать из диапазона частных адресов не обращаясь в ICANN.
Дополнительное преимущество в безопасности, технология nat скрывает внутреннюю структуру сети от внешнего мира. Для внешнего мира есть всего один адрес ipv4, а что установлено внутри сети, с внутренними адресами, никто не видит.
Недостатки NAT
Однако nat обладает рядом существенных недостатков. Первый теоретический недостаток, заключается в том, что нарушение фундаментального принципа построения ip-сетей, в которых каждый компьютер должен иметь возможность соединяться с любым другим компьютером.
Следствие этого теоретического недостатка, является ряд практических. Например нет возможности подключиться из внешнего мира к компьютерам во внутренней сети. Из внешнего мира виден всего лишь один ip адрес и невозможно понять, что в реальности за этим ip адресом находится большое количество других устройств.
Некоторые протоколы, которые разрабатывались в ранние годы создания интернет, и рассчитаны на то, что каждое устройство может соединиться с каждым, в случае с nat работают плохо. Например, плохо работает протокол FTP, который использует два соединения, одно для управления, другое для передачи данных. Соединение для передачи данных обычно устанавливается сервером, если клиент находится за устройством nat, то сервер FTP не может установить с ним соединение для передачи данных.
Плохо работают протоколы, которые не устанавливают соединения. Для которых нет возможности сохранить запись в таблице nat на всё время жизни соединения.
Дополнительный недостаток в том, что нет единого стандарта nat, а есть много разных вариантов, которые поддерживаются разными производителями оборудования и их ПО, все это вносит путаницу и приводит к несовместимости.
Решение проблем с NAT
Как можно решить проблемы с nat? Если Вы хотите иметь возможность попасть из внешнего мира во внутреннюю сеть, то для этого можно использовать статическое отображение, которое мы уже рассматривали выше.
Можно использовать отображение один к одному, но для этого нужно иметь несколько внешних ip адресов.
Также можно использовать статическое отображение для портов. Например, порт 80 на устройстве nat отображается во внутренний адрес сервера и порт 80. Порт 25, который используется для электронной почты отображается во внутренний адрес почтового сервера и порт 25. В этом случае у нас есть один ip адрес, но разные его порты отображаются в разные пары, ip адрес и порт, во внутренней сети.
Есть технология NAT Traversal, которая позволяет устанавливать соединения с компьютерами во внутренней сети без интернет. Она определена в стандарте RFC 3489. Есть и другие варианты такой технологии. Такая технология часто используется в приложениях для передачи видео и голоса, например Skype.
Итоги
Рассмотрели технологию трансляции сетевых адресов NAT, она используется, чтобы в заголовке ip пакета преобразовать ip адрес внутренней или частно сети в ip адрес внешней сети, которая может использоваться в интернет. Технология nat реализуется с помощью маршрутизаторов, межсетевых экранов и другие сетевые устройства.