Меню Рубрики

Nat traversal windows 7

Исправляем проблему подключения к L2TP/IPSec VPN серверу за NAT

Столкнулись с интересной проблемой у одного из заказчиков после перенастройки VPN сервера Windows Server 2012 с PPTP на L2TP/ IPSec (из за отключения поддержки PPTP VPN в iOS). Изнутри корпоративной сети VPN клиенты без каких-либо проблем подключаются к VPN серверу, а вот внешние Windows клиенты при попытке установить соединение с L2TP VPN сервером, выдают такую ошибку:

The network connection between your computer and the VPN server could not be established because the remote server is not responding. This could be because one of the network devices (e.g. firewalls, NAT, routers, etc) between your computer and the remote server is not configured to allow VPN connections. Please contact your Administrator or your service provider to determine which device may be causing the problem.

В других версиях Windows о наличии аналогичной проблемы могут свидетельствовать ошибки VPN подключения 800, 794 или 809.

Стоит отметить, что данный VPN сервер находится за NAT, а на маршрутизаторе настроен проброс портов, необходимых для работы L2TP:

  • UDP 1701 — Layer 2 Forwarding Protocol (L2F) & Layer 2 Tunneling Protocol(L2TP)
  • UDP 500
  • UDP 4500 NAT-T – IPSec Network Address Translator Traversal
  • Protocol 50 ESP

В правилах Windows Firewall VPN сервера эти порты также открыты. Т.е. используется классическая конфигурация. Для подключения используется встроенный VPN клиент Windows.

VPN ошибка 809 для L2TP/IPSec в Windows за NAT

Как оказалось, проблема эта уже известна и описана в статье https://support.microsoft.com/en-us/kb/926179. По умолчанию встроенный VPN клиент Windows не поддерживает подключение к L2TP/IPsec через NAT. Дело в том, что IPsec использует протокол ESP (Encapsulating Security Payload) для шифрования пакетов, а протокол ESP не поддерживает PAT (Port Address Translation). Если вы хотите использовать IPSec для коммуникации, Microsoft рекомендует использовать белые IP адреса на VPN сервере.

Но есть и обходное решение. Можно исправить этот недостаток, включив поддержку протокола NATT, который позволяет инкапсулировать пакеты протокола ESP 50 в UDP пакеты по порту 4500. NAT-T включен по-умолчанию почти во всех операционных системах (iOS, Android, Linux), кроме Windows.

Если VPN сервер L2TP/IPsec находится за NAT, то для корректного подключения внешних клиентов через NAT необходимо на стороне Windows сервера и клиента внести изменение в реестр, разрешающее UDP инкапсуляцию пакетов для L2TP и поддержку (NAT-T) для IPsec.

  1. Откройте редактор реестра regedit.exe и перейдите в ветку:
    • Для Windows 10,8.1,7 и Windows Server 2016,2012R2,2008R2 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
    • Для Windows XP/Windows Server 2003 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
  2. Создайте DWORD параметр с именем AssumeUDPEncapsulationContextOnSendRuleи значением 2;

  • 0 – (значение по-умолчанию), предполагается, что VPN сервер подключен к интернету без NAT;
  • 1 – VPN сервер находится за NAT;
  • 2 — и VPN сервер и клиент находятся за NAT.

Set-ItemProperty -Path «HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent» -Name «AssumeUDPEncapsulationContextOnSendRule» -Type DWORD -Value 2 –Force;

После включения поддержки NAT-T, вы сможете успешно подключаться к VPN серверу с клиента через NAT (в том числе двойной NAT).

L2TP VPN не работает на некоторых Windows компьютерах в локальной сети

Есть еще один интересный баг. Если в вашей локальной сети несколько Windows компьютеров, вы не сможете установить более одного одновременного подключения к внешнему L2TP/IPSec VPN серверу. Если при наличии активного VPN туннеля с одного клиента, вы попытаетесь подключиться к тому же самому VPN серверу с другого компьютера, появится ошибка с кодом 809 или 789:

По информации на TechNet проблема связана с некорректной реализацией клиента L2TP/IPSec клиента в Windows (не исправляется уже много лет).

Для исправления этого бага нужно изменить два параметра реестра в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters и перезагрузите компьютре:

  • AllowL2TPWeakCrypto – изменить на 00000001 (ослабляет уровень шифрования, для L2TP/IPSec используются алгоритмы MD5 и DES)
  • ProhibitIPSec – изменить на 00000000 (включает шифрование IPsec, которое часто отключается некоторыми VPN клиентами или утилитами)


Для изменения этих параметров реестра достаточно выполнить команды:
reg add «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters» /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f
reg add «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters» /v ProhibitIpSec /t REG_DWORD /d 0 /f

Это включает поддержку нескольких одновременных L2TP/IPSec-подключений в Windows через общий внешний IP адрес (работает на всех версиях, начиная с Windows XP и заканчивая Windows 10).

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

NAT Traversal (Network Address Translation Traversal)

NAT (англ. Network Address Translation — «преобразование сетевых адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Также имеет названия IP Masquerading, Network Masquerading и Native Address Translation. NAT-T — протокол, который инкапсулирует трафик IPSec и одновременно создает пакеты UDP, которые NAT корректно пересылает. Для этого NAT-T помещает дополнительный заголовок UDP перед пакетом IPSec, чтобы он во всей сети обрабатывался как обычный пакет UDP и хост получателя не проводил никаких проверок целостности. После поступления пакета к месту назначения заголовок UDP удаляется, и пакет данных продолжает свой дальнейший путь как инкапсулированный пакет IPSec. Итак, с помощью техники NAT-T возможно установление связи между клиентами IPSec в защищённых сетях и общедоступными хостами IPSec через межсетевые экраны.

Содержание

Принципы работы NAT Traversal

NAT Traversal в своей работе опирается на протоколы обнаружения и управления, входящие в спецификации, установленные Форумом UPnP (Universal Plug and Play). В составе Форума UPnP имеется рабочий комитет, занимающийся составлением протокола управления шлюзовыми устройствами интернета (Internet Gateway Device, IGD) и определением служб для этих устройств. Шлюзы интернета, поддерживающие обязательные элементы протокола управления устройствами IGD, будут объявлять о своем присутствии и публиковать XML-документы с описаниями для пунктов управления своих локальных сетей. Из этих документов пункты управления смогут узнать, какие операции UPnP требуется вызвать для того, чтобы определить, включена ли поддержка NAT в шлюзе, и выполнить сопоставление портов. API-интерфейс NAT Traversal в составе Windows позволяет избежать необходимости доступа к UPnP напрямую; он включает функции обнаружения, управления и настройки устройства NAT.

NAT Traversal API

Когда сетевому приложению нужно обнаружить устройство NAT и отрегулировать параметры его работы, приложение может воспользоваться интерфейсом NAT Traversal API, входящим в комплект Windows (и полностью описанным в материалах пакета Platform SDK), и выполнить следующие функции:

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

С помощью этих функций приложения могут обходить многие проблемы, вызываемые наличием NAT. Следует учесть, что API-интерфейсы NAT Traversal в составе Windows на сегодняшний день поддерживают сопоставления портов только неограниченного срока действия — так называемые статические сопоставления портов.

API-интерфейсы NAT Traversal в составе Windows XP

API-интерфейсы NAT Traversal устанавливаются в Windows XP по умолчанию. Их также можно устанавливать на компьютерах, работающих под управлением Windows Me и Windows 98; для этого используется специальная программа, имеющаяся на компакт-диске Windows XP, — мастер настройки сети (Network Setup Wizard). Для доступа к API-интерфейсам NAT Traversal пользователи также должны установить обозреватель Internet Explorer версии 6.0, обеспечивающий дополнительную поддержку средства синтаксического разбора XML. NAT Traversal в Windows 2000 на данный момент не поддерживается.

Поддержка NAT Traversal в шлюзах интернета

Поддержка NAT Traversal в шлюзах интернета реализована в виде поддержки спецификации IGD (Internet Gateway Device), определенной Рабочим комитетом по шлюзам интернета в рамках Форума UPnP. Производители шлюзов должны иметь в виду, что API-интерфейсы NAT Traversal, включенные в Windows, исходят из следующих предположений о работе устройств IGD.

  • Устройства IGD объявляют в каждый момент времени только один внешний интерфейс. Хотя с технической точки зрения допустимо объявление нескольких внешних интерфейсов, API-функции NAT Traversal будут использовать только первый из них.
  • IGD поддерживают сопоставления портов, обеспечивающие пересылку пакетов с любого удаленного IP-адреса внутренним клиентам.
  • IGD поддерживают сопоставления портов, в которых в качестве клиента указан широковещательный адрес.
  • IGD поддерживают различные номера для внешнего порта NAT и внутреннего порта клиента.
  • IGD генерируют объявления с номером версии 1.
  • Статические сопоставления портов действуют неограниченно долго, невзирая на перезагрузки, изменения IP-адресов и присутствие клиента на сервере.

На момент написания данного документа уже несколько ведущих производителей объявили о планах начать в 2001 г. поставки поддерживающих эти спецификации UPnP шлюзовых устройств интернета, совместимых с API-интерфейсами Windows NAT Traversal. Это важное событие как для пользователей, так и для отрасли в целом.

Чем больше производителей шлюзов интернета осознают преимущества технологии UPnP как средства обхода проблем NAT и чем больше пользователей знакомятся с этими средствами, тем выше шансы на то, что решение NAT Traversal на базе UPnP станет непременным атрибутом устройств данной категории. Производителям шлюзов интернета следует вступать в ряды Форума UPnP — так они смогут быстрее узнать о том, как добиться совместимости своих устройств со стандартами UPnP.

Следует заметить, что средство общего доступа к подключению интернета в Windows XP поддерживает версию 0.9 стандарта UPnP IGD. Ожидается, что версия 1.0 будет совместима с версией 0.9.

Как приложения используют NAT Traversal

Способ использования NAT Traversal приложением зависит от ряда факторов, например, от того, каким должен быть срок действия сопоставления портов и сколько клиентов или служб используют данный порт. Очень важно, чтобы приложения в конце уничтожали («очищали») создаваемые ими статические сопоставления портов, чтобы освобождать порты для других приложений.

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

Если приложение не будет работать постоянно или нет гарантии, что его статические сопоставления портов будут все время поддерживаться сетью, оно может резервировать какой-либо известный порт при каждом запуске и возвращать его при каждом завершении работы. Это можно делать с помощью параллельно активизируемого сценария. Возможен и иной вариант: вместо добавления и удаления сопоставления портов приложение будет каждый раз включать и выключать его. Можно также оставить статическое сопоставление портов постоянно действующим и просто обновлять его при запуске приложения. И в этом случае изменение внешнего IP-адреса автоматически учитывается статическим сопоставлением портов. Если один и тот же внутренний номер порта используется сразу несколькими приложениями разных клиентов частной сети, эти приложения придется немного изменить, чтобы обеспечить работу нескольких клиентов.

В каждый момент времени только один клиент может сопоставлять внешнему порту этот внутренний номер порта. Рекомендуется такой режим: право на использование порта получает первый клиент. Остальные клиенты должны запрашивать асимметричные сопоставления, в которых внутренний порт отличался бы от внешнего. Следует рассмотреть такой особый случай: несколько клиентов могут прослушивать один и тот же внешний порт с единственной целью — быть обнаруженными удаленными узлами. Входящие пакеты могут преобразовываться так, чтобы в качестве внутреннего IP-адреса клиента указывался широковещательный адрес, а не адрес конкретного клиента. Клиенты, прослушивающие сеть через этот порт, смогут ответить, инициируя свое собственное подключение к удаленному узлу. Такой метод не рекомендуется для общего пользования, поскольку входящие пакеты с этим адресом назначения будут приниматься каждым клиентом сети, создавая для них дополнительную нагрузку.

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

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

Преимущества

NAT выполняет три важных функции.

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

Недостатки

  1. Старые протоколы. Протоколы, разработанные до массового внедрения NAT, не в состоянии работать, если на пути между взаимодействующими хостами есть трансляция адресов. Некоторые межсетевые экраны, осуществляющие трансляцию IP-адресов, могут исправить этот недостаток, соответствующим образом заменяя IP-адреса не только в заголовках IP, но и на более высоких уровнях (например, в командах протокола FTP).
  2. Идентификация пользователей. Из-за трансляции адресов «много в один» появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.
  3. Иллюзия DoS-атаки. Если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS-атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT приводит к проблеме с подключением к серверу некоторых пользователей из-за превышения допустимой скорости подключений. Частичным решением проблемы является использование пула адресов (группы адресов), для которых осуществляется трансляция.
  4. Пиринговые сети. В NAT-устройствах, не поддерживающих технологию Universal Plug & Play, в некоторых случаях, необходима дополнительная настройка при работе с пиринговыми сетями и некоторыми другими программами, в которых необходимо не только инициировать исходящие соединения, но также принимать входящие.

Заключение

NAT представляет собой одобренное группой IETF решение проблемы исчерпания пространства имен IPv4. Шлюзы интернета, использующие NAT, часто устанавливаются дома и в небольших офисах. Они применяются потому, что дешевы, легко управляемы и не требуют установки специального программного обеспечения.

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Nat ics windows 7
  • Nat for windows server 2008
  • Nas на windows 2008
  • Nas windows server storage
  • Nas server windows server 2012 r2