napt что это в роутере
Что такое 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 в роутере. Как вы, наверное, все знаете, большинство адресов в интернете использует IPv4 версию. Эти адреса имеют диапазон от 0.0.0.0 до 255.255.255.255. Если подсчитать, то у нас есть больше 4-х миллиардов айпишников. Вроде бы достаточно много, но на деле с ростом клиентов интернета свободных адресов почти уже не осталось. Приплюсуем сюда тот факт, что многие IP зарезервированы, а на планете активно развивается мобильный интернет, который забирает львиную долю IPv4.
Но как получается всем подключаться к интернету и не оставаться в стороне? – Для этих целей и используется NAT (Network Address Translation – трансляция сетевых адресов). А теперь о самой сетевой технологии более подробно в статье.
Что такое NAT и как работает и зачем он нужен
Если у вас есть дома роутер, то вы уже используете технологию NAT. Чтобы вам было понятнее для чего она нужна, давайте рассмотрим простой пример. Представим, что вам нужно в квартиру провести интернет. Вы звоните провайдеру, он приходит и прокидывает вам кабель. Помимо всего, чтобы работать в глобальной сети вам нужен внешний айпишник, его также предоставляет только провайдер.
Конечно вы можете воткнуть кабель в ноутбук или компьютер, тогда никакого NAT (в вашей квартире) не будет, так как ваш комп будет напрямую подключен к интернету сети. Но если помимо вас, интернетом хотят пользоваться и другие жильцы квартиры, то вам нужно установить Wi-Fi роутер. Не будете же вы каждому жителю проводить интернет-кабель и отдельно платить за каждого.
Кабель подключается к выделенному WAN порту. Далее к роутеру уже можно подключить телефоны, планшеты, ноутбуки, компьютеры, телевизоры и многое другое. Маршрутизатор выступает неким шлюзом между вашей домашней и глобальной интернет сетью.
Роутер каждому устройству дома выдает свой локальный IP. Например:
Шлюз, он же роутер, имеет сразу два адреса:
Все жители квартиры сразу могут иметь доступ к интернету с одного внешнего адреса за счет роутера. Как я уже и говорил, таких внешних айпишников в интернете очень мало – всего 4 294 967 296.
NAT – это технология, которая позволяет переводить вот такие вот локальные адреса во внешние и получать ответ из интернета. В итоге каждый житель квартиры, находясь внутри локальной сети, и используя за счет роутера внешний IP – может выходить в интернет.
Если говорить грубо, то NAT – это как дверь в квартире, каждый может её использовать, чтобы выйти в открытый мир. В итоге пользователей в интернете становится куда больше чем 4 миллиарда, но количество самих адресов остается всегда одним и тем же.
NAT позволяет скрывать внутренние айпишники от интернета, и их никто не сможет увидеть. Это мы рассмотрели случай, когда подключена небольшая семья. А представим, что нужно подключить офис из сотни или даже тысячи человек. Для организации просто не целесообразно подключать каждому пользователю свой интернет с внешним IP. Да и это не нужно. Достаточно использовать маршрутизатор, в котором уже по умолчанию будет работать NAT.
Схема достаточно простая, давайте рассмотрим пример.
Как видите, NAT постоянно переводит внутренний адрес во внешний и обратно. Если локальная сеть имеет только один выходной маршрутизатор, который может быть связан с внешней сетью, то такую сеть называют Stub сетью.
Термины NAT
В сфере NAT есть различная терминология, которую вы можете встретить в настройках маршрутизатора или на схемах подключения.
Есть 4 вида NAT адресов:
Пока ничего не понятно? Сейчас постараюсь рассказать на примере. Давайте рассмотрим пример NAT адресации. Смотрим на картинку ниже.
Типы NAT
Статический (Static) NAT
Статический NAT – это когда у каждого локального внутреннего адреса, есть свой глобальный адрес. Часто используется для Web-серверов. Весь трафик при этом проходит аналогично через один узел, и у каждого устройства есть свой как локальный, так и глобальный IP.
Динамический (Dynamic) NAT
У нас есть пул внутренних айпишников, который постоянно присваивается разные глобальные внешние адреса. Внешние IP присваиваются по принципу, какой есть свободный, тот и назначается маршрутизатором. Очень часто используется в городских сетях провайдерами, именно поэтому ваши глобальные IP постоянно меняются. Чтобы немного расширить эту тему, советую более подробно почитать про белые и серые IP.
PAT (Port Address Translation)
Самая популярная форма NAT. Про неё я в самом начале и говорил. Когда нескольким локальным адресам назначается один глобальный. То есть когда вся семья, грубо говоря, использует один внешний IP. Чтобы маршрутизатор понял, кому именно посылать ответ от сервера, на который ранее был запрос, он использует в своем запросе номер порта. И по нему отсылает ответ нужному локальному пользователю.
Посмотрите на картинку выше. Как видите при запросе на выделенный сервер, помимо того, что роутер переводит адреса, он еще в запросе добавляет номер порта. То есть ответ от сервера также имеет этот порт, который потом уже используется для того, чтобы ответ получил нужный компьютер.
Плюсы и минусы IP NAT
Видео
Если вам что-то было не понятно, или вам лень читать, то советую посмотреть это полезное видео.
Как настроить и включить NAT на роутере
Стандартный NAT уже работает в режиме PAT и его настраивать не нужно. То есть вы просто настраиваете интернет и Wi-Fi на маршрутизаторе. Другой вопрос, если дома вы решили организовать Web, игровой или почтовый сервер. А быть может вы хотите подключить камеры видеонаблюдения и следить за домом или квартирой, отдыхая на Бали. Вот тут нам понадобится проброс портов – об смотрите статью про порты. Там коротко рассказано, что такое порты, для чего они нужны и как их пробросить.
NAT на Cisco. Часть 1
Добрый день, коллеги!
судя по многочисленным вопросам на форуме (ссылка в конце поста), от слушателей и коллег, работа NAT на маршрутизаторах Cisco (firewall’ы я опущу, Fedia достаточно подробно его работу расписал в своей серии статей про Cisco ASA) плохо описана, поэтому я попробую описать свой опыт и свое понимание данной технологии в большинстве ее ипостасей. Не претендую на всеобъемлющее описание и 100% точность, но кому интересно — велкам под кат.
Итак, для структурности описания разберемся с определением, что такое NAT.
Определение. NAT (Network Address Translation) — технология трансляции сетевых адресов, т.е. подмены адресов в заголовке IP-пакета (иногда может еще и порт менять в заголовках TCP/UDP, но об этом позже).
Другими словами, пакет, проходя через маршрутизатор, может поменять свой адрес источника и/или назначения.
Зачем это нужно?
1. Для обеспечения доступа из LAN, где чаще всего используются частные IP-адреса, в Internet, где маршрутизируются только глобальные IP-адреса.
2. (в меньшей степени) для сокрытия топологии сети и создания некоторого защитного барьера для проникновения внутрь сети (обсудим это позже на примере).
NAT бывает разным 🙂 И хотя много по этому поводу уже написано, есть желание отправлять новичков с вопросами о NAT по конкретному адресу, поэтому я все же приведу некоторую классификацию.
1. Static NAT — статический NAT задает однозначное соответствие одного адреса другому. Иными словами, при прохождении через маршрутизатор, адрес(а) меняются на строго заданный адрес, один-к-одному. (к примеру 10.1.1.1 всегда заменяется на 11.1.1.1 и обратно, но никогда на 12.1.1.1). Запись о такой трансляции хранится неограниченно долго, пока есть строчка в конфиге.
2. Dynamic NAT — при прохождении через маршрутизатор, новый адрес выбирается динамически из некоторого куска адресов, называемого пулом (англ. pool). Запись о трансляции хранится некоторое время, чтобы ответные пакеты могли быть доставлены адресату. Если в течение некоторого времени трафик по этой трансляции отсутствует, трансляция удаляется и адрес возвращается в пул. Если требуется создать трансляцию, а свободных адресов в пуле нет, то пакет отбрасывается. Иными словами, хорошо бы, чтобы число внутренних адресов было ненамного больше числа адресов в пуле, иначе высока вероятность проблем с доступом наружу.
3. Dynamic NAT with overload или PAT. Работает почти также, как dynamic NAT, но при этом происходит трансляция много-в-один, задействуя при этом возможности транспортного уровня. Об этом подробнее на примере дальше.
Поскольку я чаще всего работаю именно с железом Cisco, я опишу в статье именно особенности работы и возможные варианты NAT именно на этих железках.
Давайте посмотрим, что у нас есть в этом случае.
1. inside source NAT
Самый распространенный и достаточно простой вариант. Допустим у нас есть такая топология:
Другими словами,
а) подсеть внутренних адресов — 10.0.0.0/8
б) подсеть внешних адресов — 11.0.0.0/8
и мы хотим транслировать каким-то образом внутренние адреса во внешние при прохождении трафика через маршрутизатор.
Что для этого нужно?
1. Мы явно указываем, что мы хотим транслировать. Т.е. какой трафик и от каких хостов.
2. Мы явно указываем, во что мы хотим траслировать, т.е. пул внешних адресов (или единственный адрес для статической трансляции).
3. Помечаем внутренний и внешний интерфейс.
4. Включаем трансляцию.
На п.3 я себе позволю остановиться подробнее, потому что именно здесь часто происходит непонимание.
Как это работает?
Итак, допустим мы решили, что будем транслировать всю 10ю сеть целиком в 11ю. Задали их соответствующим образом (настройки потом, сначала теория). И пометили наши интерфейсы как внутренний (inside) и внешний (outside).
Теперь, давайте разберемся, что делает именно inside source NAT. На самом деле, в названии зашита половина действия 🙂 а именно: у пакета, пришедшего на inside интерфейс меняется source :). Но помните, мы говорили о том, что ответные пакеты должны доходить до нашего внутреннего хоста? Отсюда вторая половина действия: у пакета, пришедшего на outside интерфейс меняется destination.
Рассмотрим прямую трансляцию.
1. Трафик, приходя на интерфейс, помеченный как inside, если он соответствует тому, что мы хотим транслировать, маркируется как возможно_транслируемый. Часто полагают, что в этот момент происходит трансляция, но это не так.
2. Следующим этапом, трафик подвеграется маршрутизации (PBR и обычной). И если при этом трафик направляется на интерфейс, помеченный как outside — только тогда происходит трансляция. Если трансляция динамическая, маршрутизатор проверяет ее наличие в таблице трансляций. Если ее там нет — создает, если уже есть — обнуляет счетчик неактивности. Если же пакет попадает на выход на интерфейс, не помеченный как outside — трансляция НЕ происходит.
Теперь обратная трансляция.
1. Трафик, попадая на outside интерфейс, в противовес прямой трансляции, сначала подвергается NAT. Если трансляция существует (неважно, динамическая или статическая), в случае с inside source NAT, у него меняется destination. И только после этого трафик подвергается маршрутизации и перенаправляется по назначению.
Поэтому маркировать интерфейсы как inside или outside нужно именно принимая во внимание механизм работы.
Замечания и следствия.
1. Для обратной трансляции не обязательно наличие метки inside на каком-либо интерфейсе. Все равно, если прямая трансляция существует, обратная трансляция сработает до маршрутизации. Но когда будет существовать такая трансляция, ведь мы обсуждали, что трафик должен пройти через inside интерфейс для создания прямой трансляции? Отсюда
2. Трафик самого роутера подвергается трансляции, если он попадает на интерфейс, помеченный как outside и удовлетворяет правилу NAT. И это сколь полезно, столь и опасно. С одной стороны, мы можем транслировать трафик роутера как и любой другой. С другой стороны, многие хотят описать трафик, подлежащий трансляции как permit any, но тогда и, например, пакеты протоколов маршрутизации будут транслироваться, что приведет к сбою.
3. Интерфейсы типа loopback маршрутизатора трактуются как и любые другие, мы можем метить их как inside или outside, заворачивать на них трафик и получать от этого профит 🙂
Теперь посмотрим общую конфигурацию, а потом еще несколько частных случаев.
Конфигурация inside source NAT
inside source dynamic NAT
1. Указываем, что транслировать. Для этого создаем access-list, перечисляющий трафик. Например, в нашем случае достаточно одной строчки:
(config)# access-list 100 permit ip 10.0.0.0 0.255.255.255 any
Замечание. В ACL могут встречаться строчки deny. Вопреки распространенному заблуждению, трафик удовлетворяющей данной строчке не дропается, а просто не подвеграется трансляции. Так же, ACL может быть стандартным и расширенным, нумерованным и именованным.
2. Создаем пул из адресов, указывая стартовый и конечный адрес. Например так:
(config)# ip nat pool NAME_OF_POOL 11.1.1.10 11.1.1.20 netmask 255.255.255.0
Замечания.
1. Стартовый и конечный адрес в пуле могут совпадать, тогда трансляция будет в 1 адрес.
2. Опция netmask, хотя и является обязательной, по моему мнению — рудимент. Она позволяет вырезать из диапазона адресов в пуле те адреса, которые являются адресами подсети или бродкастными при данной маске.
3. Маркируем интерфейсы. В нашем случае достаточно
(config)# interface fa 0/0
(config-if)# ip nat inside
и
(config)# interface fa 0/1
(config-if)# ip nat outside
4. создаем собственно трансляцию:
ip nat inside source list 100 pool NAME_OF_POOL
вуаля 🙂 Если мы теперь обратимся например с хоста 10.1.1.1 к хосту 11.1.1.2, то получим такую трансляцию:
Router#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 11.1.1.10:55209 10.0.1.1:55209 11.1.1.2:23 11.1.1.2:23
Интересно, что хотя в таблице явно записаны source port и destination port, трансляция создается целиком для адреса. И на время ее жизни в таблице трансляция, пакеты снаружи могут проходить на внешний адрес (inside global)
Например, пинг с некоторого адреса во внешней сети на наш inside global будет успешным (на время жизни трансляции):
R4#ping 11.1.1.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 11.1.1.10, timeout is 2 seconds:
.
Иными словами, открывается трансляция единожды и к некоторому хосту, после этого некоторое время действует для любого адреса извне.
inside source dynamic NAT with overload
П. 1,2 и 3 — как в предыдущем разделе.
4. Создаем собственно трансляцию:
ip nat inside source list 100 pool NAME_OF_POOL overload
Видим, что добавилось всего одно слово: overload. Но оно существенно изменило схему работы трансляции.
Как было сказано, PAT — это трансляция много-в-мало или даже много-в-один. Но чтобы можно было отличить трафик одного соединения от другого, маршрутизатор будет менять не только IP-адреса, но еще и TCP/UDP порты.
Замечание. Схема работы с портами (когда меняется source, когда destination) — такая же, как и схема работы с IP-адресами.
Другими словами, при обращении изнутри наружу меняется source IP и source port, запись об этом вносится в таблицу трансляций. При обратной трансляции — все меняется наоборот.
Посмотрим, что изменилось:
R3#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 11.1.1.11:21545 10.0.1.1:21545 11.1.1.2:23 11.1.1.2:23
tcp 11.1.1.11:49000 10.0.2.1:49000 11.1.1.2:23 11.1.1.2:23
Видим, что разные внутренние адреса (10.0.1.1 и 10.0.2.1) странслировались в один внешний (11.1.1.11).
Замечания.
1. Кажется, что source-port не был изменен, как обещали, непорядок :). На деле, маршрутизатор пытается сохранить source port всеми доступными средствами. В частности, если порт inside global адреса уже был занят, он возьмет следующий адрес в пуле и проверит его порт на занятость. И только не найдя адреса со свободным портом возьмет следующий свободный.
2. Поведение такой трансляции отличается от поведения обычного dynamic NAT еще и тем, что доступ снаружи на inside global адрес невозможен. Именно это я имел ввиду, когда говорил о некоторой повышенной безопасности при использовании PAT, т.к. фактически все соединения инициируются изнутри нашей сети, а снаружи нам могут приходить только ответы на них.
3. Если мы получили у провайдера не целый блок адресов, а один несчастный адрес, который тут же и назначили внешнему интерфейсу маршрутизатора, можно не городить огород с пулом в один адрес, а сразу писать например так:
(config)# ip nat inside source list 100 interface fa0/1 overload
inside source static NAT and PAT
Много упоминалось о статических трансляциях, давайте наконец их обсудим.
Зачем это нужно?
Мы обсудили, что если в случае dynamic NAT трансляция не создана и в случае PAT, доступ извне невозможен. Если даже в случае dynamic NAT трансляция создана, то inside global адрес может меняться. И обращаться к нашему внутреннему хосту по какому-то внешнему адресу невозможно.
Тем не менее, нередки ситуации, когда внутри корпоративной сети есть сервер, доступ которому извне по статическому внешнему адресу жизненно необходим. В таком случае, можно выставить его прямиком в Интернет, назначив глобальный адрес. Но часто это не очень удобно, например по соображениям безопасности. И в таких случаях нам на помощь приходит static NAT.
Идем дальше. Часто бывает, что нужно выставить наружу не целый адрес, а только один порт (например 80й для www-сервера). Никаких проблем, можно создать и статическую PAT-трансляцию для некоторых портов:
(config)# ip nat inside source static tcp 10.0.1.1 80 11.1.1.21 80
(config)# ip nat inside source static udp 10.0.1.1 5060 11.1.1.21 7877
Видим, что порты одного и того же внешнего адреса можно пробрасывать на разные порты внутренних, и управлять трансляцией портов при этом тоже возможен.
Объемистая статейка получилась, придется разбить на несколько частей. Конечно inside source NAT многократно обсужден и расписан, но надеюсь, что даже не совсем новичкам удастся найти в статье что-то полезное. Надо было начать с некоторой базы, пусть и общеизвестной.
В следующей статье мы обсудим inside destination NAT, если конечно статья найдет отклик и поддержку.