- Что такое NAT в роутере: определение, примеры, как включить и настроить
- Что такое NAT и как работает и зачем он нужен
- Термины NAT
- Типы NAT
- Статический (Static) NAT
- Динамический (Dynamic) NAT
- PAT (Port Address Translation)
- Плюсы и минусы IP NAT
- Видео
- Как настроить и включить NAT на роутере
- Настройка сети NAT
- Обзор NAT
- Создание виртуальной сети NAT
- Соединение с виртуальной машиной
- Пример конфигурации. Подключение виртуальных машин и контейнеров к сети NAT
- Docker для Windows (для виртуальных машин Linux) и компонент контейнеров Windows
- Несколько приложений, использующих одну систему 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. Например:
- 192.168.1.10 – Компьютер папы.
- 192.168.1.11 – Телефон сына.
- 192.168.1.12 – Планшет жены.
- 192.168.1.13 – ноутбук дочери.
Шлюз, он же роутер, имеет сразу два адреса:
- Внутренний – 192.168.1.1
- Внешний – его выдает провайдер и он может иметь любой вид. Например, 175.67.87.223.
Все жители квартиры сразу могут иметь доступ к интернету с одного внешнего адреса за счет роутера. Как я уже и говорил, таких внешних айпишников в интернете очень мало – всего 4 294 967 296.
NAT – это технология, которая позволяет переводить вот такие вот локальные адреса во внешние и получать ответ из интернета. В итоге каждый житель квартиры, находясь внутри локальной сети, и используя за счет роутера внешний IP – может выходить в интернет.
Если говорить грубо, то NAT – это как дверь в квартире, каждый может её использовать, чтобы выйти в открытый мир. В итоге пользователей в интернете становится куда больше чем 4 миллиарда, но количество самих адресов остается всегда одним и тем же.
NAT позволяет скрывать внутренние айпишники от интернета, и их никто не сможет увидеть. Это мы рассмотрели случай, когда подключена небольшая семья. А представим, что нужно подключить офис из сотни или даже тысячи человек. Для организации просто не целесообразно подключать каждому пользователю свой интернет с внешним IP. Да и это не нужно. Достаточно использовать маршрутизатор, в котором уже по умолчанию будет работать NAT.
Схема достаточно простая, давайте рассмотрим пример.
- Компьютер из домашней сети с ИП 192.168.1.10 отправил запрос на какой-то сайт.
- Запрос пришел на роутер (192.168.1.1).
- Роутер не может использовать свой локальный адрес, поэтому переводит запрос и использует внешний адрес.
- Сайт получает запрос с внешним IP и на него отсылает ответ.
- Роутер принимает ответ от сайта, и уже отправляет его на компьютер, но уже используя внутренний айпишник.
Как видите, NAT постоянно переводит внутренний адрес во внешний и обратно. Если локальная сеть имеет только один выходной маршрутизатор, который может быть связан с внешней сетью, то такую сеть называют Stub сетью.
Термины NAT
В сфере NAT есть различная терминология, которую вы можете встретить в настройках маршрутизатора или на схемах подключения.
Есть 4 вида NAT адресов:
- Insidelocal – внутренний локальный адрес, который прописывается в первичном запросе от клиента.
- Insideglobal – внешний айпишник роутера.
- Outsidelocal – внутренний глобальный адрес сервера в интернете. Внутренний он, потому что он прописывается в первичном запросе от компьютера во внутренней сети.
- Outsideglobal – внешний глобальный. IP запроса на конечный сервер, который записан во внешнем запросе от роутера.
Пока ничего не понятно? Сейчас постараюсь рассказать на примере. Давайте рассмотрим пример NAT адресации. Смотрим на картинку ниже.
- У нас есть компьютер с (Inside Local) адресом 192.168.0.30, который находится с домашней сети.
- Он посылает запрос на сервер с (Outside Local) адресом 246.10.79.235.
- Маршрутизатор принимает ответ и переводит запрос:
(Inside Local) 192.168.0.30 -> (Outside Local) 246.10.79.235
(Inside Global) 135.87.99.202 -> (Outside Global) 246.10.79.235
- Когда сервер получает запрос, он отсылает ответ и все запросы переделываются в обратном порядке. Чтобы роутеру было понятно от кого пришел ответ и кому отправить запрос, он все данные записывает в свою таблицу маршрутизации.
Типы NAT
Статический (Static) NAT
Статический NAT – это когда у каждого локального внутреннего адреса, есть свой глобальный адрес. Часто используется для Web-серверов. Весь трафик при этом проходит аналогично через один узел, и у каждого устройства есть свой как локальный, так и глобальный IP.
Динамический (Dynamic) NAT
У нас есть пул внутренних айпишников, который постоянно присваивается разные глобальные внешние адреса. Внешние IP присваиваются по принципу, какой есть свободный, тот и назначается маршрутизатором. Очень часто используется в городских сетях провайдерами, именно поэтому ваши глобальные IP постоянно меняются. Чтобы немного расширить эту тему, советую более подробно почитать про белые и серые IP.
PAT (Port Address Translation)
Самая популярная форма NAT. Про неё я в самом начале и говорил. Когда нескольким локальным адресам назначается один глобальный. То есть когда вся семья, грубо говоря, использует один внешний IP. Чтобы маршрутизатор понял, кому именно посылать ответ от сервера, на который ранее был запрос, он использует в своем запросе номер порта. И по нему отсылает ответ нужному локальному пользователю.
Посмотрите на картинку выше. Как видите при запросе на выделенный сервер, помимо того, что роутер переводит адреса, он еще в запросе добавляет номер порта. То есть ответ от сервера также имеет этот порт, который потом уже используется для того, чтобы ответ получил нужный компьютер.
Плюсы и минусы IP NAT
- Офисы, а также домашние сети при большом количестве клиентов могут использовать всего один или несколько внешних интернет-адресов.
- Повышается надежность локальной сети, где контроль за пропускной способностью и трафиком отслеживает роутер.
- Снижает стоимость, которая нужна для приобретения внешних IP.
- Контроль внешнего и внутреннего доступа к обоим сетям.
- Увеличивается задержка запроса, так как маршрутизатору нужно постоянно делать NAT перевод адресов.
- В больших сетях, где идет многоуровневая NAT адресация, сложно найти место поломки, так как IP постоянно изменяется.
Видео
Если вам что-то было не понятно, или вам лень читать, то советую посмотреть это полезное видео.
Как настроить и включить NAT на роутере
Стандартный NAT уже работает в режиме PAT и его настраивать не нужно. То есть вы просто настраиваете интернет и Wi-Fi на маршрутизаторе. Другой вопрос, если дома вы решили организовать Web, игровой или почтовый сервер. А быть может вы хотите подключить камеры видеонаблюдения и следить за домом или квартирой, отдыхая на Бали. Вот тут нам понадобится проброс портов – об смотрите статью про порты. Там коротко рассказано, что такое порты, для чего они нужны и как их пробросить.
Источник
Настройка сети NAT
Windows 10 Hyper-V разрешает использовать для виртуальной сети собственное преобразование сетевых адресов (NAT).
В этом руководство рассматриваются следующие темы:
- Создание сети NAT
- Подключение существующей виртуальной машины к новой сети
- Проверка правильности подключения виртуальной машины
- Юбилейное обновление Windows 10 или более поздняя версия
- Hyper-V включен (инструкции см. здесь)
Примечание. Сейчас можно создать только одну сеть NAT для узла. Дополнительные сведения о реализации, возможностях и ограничениях NAT для Windows (WinNAT) см. в блоге, посвященном возможностям и ограничениям WinNAT.
Обзор NAT
NAT предоставляет виртуальной машине доступ к сетевым ресурсам с помощью IP-адреса и порта главного компьютера через внутренний виртуальный коммутатор Hyper-V.
Преобразования сетевых адресов (NAT) — это сетевой режим, предназначенный для экономии IP-адресов за счет сопоставления внешнего IP-адреса и порта с гораздо большим набором внутренних IP-адресов. По сути, NAT использует таблицу потоков для маршрутизации трафика с внешнего IP-адреса (адреса узла) и номера порта на правильный внутренний IP-адрес, связанный с конечной точкой в сети (виртуальной машиной, компьютером, контейнером и т. д.).
Кроме того, NAT позволяет нескольким виртуальным машинам размещать приложения, которым требуются одинаковые (внутренние) порты связи, сопоставляя их с уникальными внешними портами.
По всем этим причинам NAT часто применяется в технологии контейнеров (см. статью Сетевые подключения контейнеров).
Создание виртуальной сети NAT
Давайте рассмотрим настройку новой сети NAT.
Откройте консоль PowerShell от имени администратора.
Создайте внутренний коммутатор.
Найдите индекс интерфейса созданного виртуального коммутатора.
Этот индекс интерфейса можно определить, выполнив команду Get-NetAdapter
Выходные данные должны иметь следующий вид:
Внутренний коммутатор будет иметь такое имя, как vEthernet (SwitchName) , и описание интерфейса Hyper-V Virtual Ethernet Adapter . Запишите его ifIndex для использования на следующем шаге.
Настройте шлюз NAT с помощью New-NetIPAddress.
Ниже приведена общая команда:
Чтобы настроить шлюз, вам потребуется некоторая информация о сети:
IPAddress — «NAT Gateway IP» задает IP-адрес шлюза NAT в формате IPv4 или IPv6.
Общая форма имеет вид a.b.c.1 (например, 172.16.0.1). Хотя последняя позиция необязательно должна быть равна 1, обычно используется именно это значение (в зависимости от длины префикса).
Общий IP-адрес шлюза имеет значение 192.168.0.1.
PrefixLength — «NAT Subnet Prefix Length» определяет размер локальной подсети NAT (маску подсети). Длина префикса подсети является целым числом от 0 до 32.
Значение 0 соответствует всему Интернету, а значение 32 — всего одному IP-адресу. Обычно используются значения в диапазоне от 24 до 12 в зависимости от того, сколько IP-адресов необходимо подключить к NAT.
Общее значение PrefixLength равно 24. Это маска подсети 255.255.255.0.
InterfaceIndex: ifIndex — это индекс интерфейса виртуального коммутатора, который вы определили на предыдущем шаге.
Выполните следующую команду, чтобы создать шлюз NAT:
Настройте сеть NAT с помощью New-NetNat.
Ниже приведена общая команда:
Чтобы настроить шлюз, потребуется указать информацию о сети и шлюзе NAT:
Name — NATOutsideName описывает имя сети NAT. Оно используется для удаления сети NAT.
InternalIPInterfaceAddressPrefix — «NAT subnet prefix» задает описанные ранее префикс IP-адреса шлюза NAT и длину префикса подсети NAT.
Общая форма имеет вид a.b.c.0/NAT Subnet Prefix Length.
Учитывая приведенные выше данные, для этого примера мы используем 192.168.0.0/24.
В рамках данного примера выполните следующую команду для настройки сети NAT:
Поздравляем! Теперь у вас есть виртуальная сеть NAT. Чтобы добавить виртуальную машину в сеть NAT, выполните эти инструкции.
Соединение с виртуальной машиной
Чтобы подключить виртуальную машину к новой сети NAT, подключите внутренний коммутатор, созданный на первом шаге в разделе Настройка сети NAT, к виртуальной машине с помощью меню параметров виртуальной машины.
Так как служба WinNAT сама по себе не выделяет и не назначает IP-адреса конечным точкам (например, виртуальной машины), вам потребуется сделать это вручную в виртуальной машине, т. е. задать IP-адреса в диапазоне внутреннего префикса NAT, задать IP-адрес шлюза по умолчанию, указать данные DNS-сервера. Единственной оговоркой является наличие подключения конечной точки к контейнеру. В этом случае служба HNS выделяет и использует службу HCS для назначения IP-адреса, IP-адреса шлюза и сведений о DNS непосредственно контейнеру.
Пример конфигурации. Подключение виртуальных машин и контейнеров к сети NAT
Чтобы подключить несколько виртуальных машин и контейнеров к одной сети NAT, необходимо убедиться, что внутренний префикс подсети NAT имеет размер, достаточный для охвата диапазонов IP-адресов, назначенных различными приложениями или службами (например, Docker для Windows и компонент контейнеров Windows — HNS). Для этого потребуется назначить IP-адреса на уровне приложения, а также выполнить сетевую настройку или настройку вручную силами администратора, исключив повторное использование существующих назначений IP-адресов в том же узле.
Docker для Windows (для виртуальных машин Linux) и компонент контейнеров Windows
Приведенное ниже решение позволит Docker для Windows (виртуальным машинам Linux с контейнерами Linux) и компоненту контейнеров Windows совместно использовать общий экземпляр WinNAT с помощью отдельных внутренних коммутаторов vSwitch. Будет работать подключение между контейнерами Linux и Windows.
Пользователь подключил виртуальные машины к сети NAT через внутренний коммутатор vSwitch с именем VMNAT и теперь хочет установить компонент «Контейнеры Windows» с подсистемой Dосker.
Docker или HNS назначит IP-адреса контейнерам Windows, а администратор назначит IP-адреса виртуальным машинам из разностного набора.
Пользователь установил компонент «Контейнеры Windows» с работающей подсистемой Docker и хочет подключить виртуальные машины к сети NAT.
Docker или HNS назначит IP-адреса контейнерам Windows, а администратор назначит IP-адреса виртуальным машинам из разностного набора.
В итоге вы должны получить два внутренних коммутатора виртуальных машин и один общий для них коммутатор NetNat.
Несколько приложений, использующих одну систему NAT
В некоторых сценариях требуется, чтобы несколько приложений или служб использовали одну систему NAT. В этом случае необходимо придерживаться описанной ниже процедуры, чтобы несколько приложений или служб могли использовать больший внутренний префикс подсети NAT.
В качестве примера мы рассмотрим сосуществование Docker 4 Windows — Docker Beta — Linux VM и компонента контейнеров Windows на одном узле. Эта процедура может быть изменена.
C:> net stop docker
Stop Docker4Windows MobyLinux VM
PS C:> Get-ContainerNetwork | Remove-ContainerNetwork -force.
PS C:> Get-NetNat | Remove-NetNat.
Позволяет удалить все ранее существовавшие сети контейнера (т. е. удаляется vSwitch, NetNat и выполняется очистка).
New-ContainerNetwork -Name nat -Mode NAT –subnetprefix 10.0.76.0/24 (эта подсеть используется для компонента контейнеров Windows) Создает внутренний vSwitch с именем nat.
Позволяет создать сеть NAT с именем «nat» и префиксом IP-адреса 10.0.76.0/24.
Remove-NetNAT
Позволяет удалить сети NAT с именами nat и DockerNAT (сохраняя внутренние коммутаторы Vswitch).
New-NetNat -Name DockerNAT -InternalIPInterfaceAddressPrefix 10.0.0.0/17 (создает более крупную сеть NAT для совместного использования D4W и контейнерами)
Позволяет создать сеть NAT с именем DockerNAT и увеличенным префиксом 10.0.0.0/17.
Run Docker4Windows (MobyLinux.ps1)
Позволяет создать внутренний vSwitch DockerNAT.
Позволяет создать сеть NAT с именем DockerNAT и префиксом 10.0.75.0/24.
Net start docker
Docker использует пользовательскую сеть NAT по умолчанию для подключения к контейнерам Windows.
В конце вы должны получить два внутренних коммутатора vSwitch — один с именем DockerNAT, другой с именем nat. При выполнении Get-NetNat выводится только одна подтвержденная сеть NAT (10.0.0.0/17). IP-адреса для контейнеров Windows назначаются сетевой службой узлов Windows (HNS) (HNS) из подсети 10.0.76.0/24. В соответствии с имеющимся сценарием MobyLinux.ps1 IP-адреса для Docker 4 Windows назначаются из подсети 10.0.75.0/24.
Диагностика
Несколько сетей NAT не поддерживается.
В этом руководстве предполагается, что других NAT на узле нет. Приложениям или службам необходимо использовать NAT, и они могут создать ее в процессе установки. Поскольку Windows (WinNAT) поддерживает только один внутренний префикс подсети NAT, при попытке создать несколько NAT система переходит в неизвестное состояние.
Чтобы понять, является ли это проблемой, убедитесь, что имеется только одна NAT.
Если NAT уже существует, удалите ее.
Убедитесь, что для приложения или компонента (например, для контейнеров Windows) имеется всего один «внутренний» vmSwitch. Запишите имя vSwitch.
Проверьте, есть ли частные IP-адреса (например, IP-адрес шлюза NAT по умолчанию обычно имеет значение x.y.z.1) старого NAT, по-прежнему назначенные адаптеру.
Если используется старый частный IP-адрес, удалите его.
Удаление нескольких NAT
Мы встречали сообщения о нескольких случайно созданных сетях NAT. Это вызвано ошибкой, присутствующей в последних сборках (включая Windows Server 2016 Technical Preview 5 и Windows 10 Insider Preview). Если после запуска команд ls или Get-ContainerNetwork сети Docker появится несколько сетей NAT, в командной строке PowerShell с повышенными привилегиями выполните следующее:
Перезагрузите операционную систему перед выполнением последующих команд ( Restart-Computer )
Источник