Поделиться через


Работа со средствами NAT и брандмауэрами

Зачастую в сетевом подключении между клиентом и сервером отсутствует прямой и открытый путь для взаимодействия. Пакеты фильтруются, перенаправляются, анализируются и преобразуются как на конечных, так и на промежуточных компьютерах в сети. Типичными примерами промежуточных приложений, участвующих в сетевом взаимодействии, служат средства преобразования сетевых адресов (NAT) и брандмауэры.

При наличии средств NAT и брандмауэров транспорты и шаблоны обмена сообщениями (MEP) Windows Communication Foundation (WCF) работают по другому. В этом разделе описано, как работают средства NAT и брандмауэры в типичных топологиях сети. Также приведены рекомендации по конкретным комбинациям транспортов WCF и MEP, которые помогают повысить надежность приложений при наличии в сети средств NAT и брандмауэров.

Влияние преобразования сетевых адресов на обмен данными

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

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

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

Влияние брандмауэров на обмен данными

Брандмауэр — это программная или аппаратная система, которая применяет правила к трафику, проходящему через эту систему, с целью определить, разрешить или запретить прохождение такого трафика. Брандмауэры можно настроить для проверки входящего или исходящего трафика. Брандмауэр создает в сети периметр безопасности либо на границе сети, либо на узле конечной точки. Корпоративные пользователи традиционно размещали свои серверы за брандмауэром для предотвращения вредоносных атак. С появлением персонального брандмауэра в Windows XP с пакетом обновления 2 (SP2) также значительно увеличилось количество домашних пользователей, защищенных брандмауэром. Скорее всего, одна или обе конечных точки подключения снабжены брандмауэром, проверяющим пакеты.

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

В типичной конфигурации домашнего пользователя брандмауэр запрещает входящие подключения кроме случаев, когда ранее было установлено исходящее подключение к этому компьютеру. В типичной конфигурации корпоративного пользователя брандмауэр запрещает входящие подключения ко всем портам за исключением группы заданных портов. Примером служит брандмауэр, который запрещает подключения ко всем портам, кроме портов 80 и 443 для предоставления услуг HTTP и HTTPS. Также домашним и корпоративным пользователям предлагаются управляемые брандмауэры, которые разрешают доверенному пользователю или процессу изменять конфигурацию брандмауэра. Управляемые брандмауэры чаще используются домашними пользователями, у которых нет корпоративной политики по контролю за использованием сети.

Использование Teredo

Teredo — это технология туннелирования для IP версии 6, которая обеспечивает прямую адресацию компьютеров, находящихся за средством NAT. В основе технологии Teredo лежит использование открытого и глобально маршрутизируемого сервера для объявления потенциальных подключений. Сервер Teredo служит общей точкой пересечения для клиента и сервера приложения, с помощью которой они могут обмениваться информацией о подключении. Затем компьютеры запрашивают временный адрес Teredo, а пакеты туннелируются по существующей сети. Для поддержки Teredo в WCF необходима поддержка протоколов IPv6 и Teredo в операционной системе. Операционная система Windows XP и более поздние версии поддерживают Teredo. ОС Windows Vista и более поздние версии по умолчанию поддерживают IPv6. От пользователя требуется только включить поддержку Teredo. В ОС Windows XP с пакетом обновления 2 (SP2) и Windows Server 2003 пользователь должен включить поддержку IPv6 и Teredo. Дополнительные сведения см. в разделе Teredo Overview.

Выбор транспорта и шаблона обмена сообщениями

Выбор транспорта и шаблона обмена сообщениями осуществляется в три этапа.

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

  2. Анализ ограничений протокола и портов компьютеров конечной точки. Корпоративные серверы, как правило, находятся за мощными брандмауэрами, которые блокируют многие порты. Однако зачастую открыт порт 80 для трафика HTTP и порт 443 для трафика HTTPS. Ограничения портов у конечных пользователей применяются реже, однако может использоваться брандмауэр, разрешающий только исходящие подключения. В некоторых брандмауэрах предусмотрена возможность избирательного открытия подключений для отдельных приложений на конечной точке.

  3. Выбор транспортов и шаблонов обмена сообщениями с учетом возможности адресации и ограничения портов в сети.

В типичной топологии клиент-серверных приложений клиенты расположены за средством NAT без поддержки Teredo с брандмауэром, разрешающим только исходящий трафик. При этом сервер с возможностью прямой адресации расположен за мощным брандмауэром. Для такого сценария хорошо подходит транспорт TCP с дуплексным шаблоном обмена сообщениями и транспорт HTTP с шаблоном обмена сообщениями типа "запрос-ответ". В типичной топологии одноранговых приложений обе конечные точки находятся за средствами NAT и брандмауэрами. В таком сценарии и в сценариях с неизвестной топологией сети необходимо учитывать следующие рекомендации.

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

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

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

В следующих таблицах приведены сведения о различных шаблонах обмена сообщениями (односторонние, запрос-ответ и дуплексные) и различных транспортах (стандартный TCP, TCP с Teredo, стандартный и двусторонний HTTP) в WCF.

Возможность адресации Прямая адресация сервера Прямая адресация сервера с обходом NAT Сервер NAT Сервер NAT с обходом NAT

Прямая адресация клиента

Любой транспорт и шаблон обмена сообщениями

Любой транспорт и шаблон обмена сообщениями

Не поддерживается

Не поддерживается

Прямая адресация клиента с обходом NAT

Любой транспорт и шаблон обмена сообщениями

Любой транспорт и шаблон обмена сообщениями

Не поддерживается

TCP с Teredo и любой шаблон обмена сообщениями. В ОС Windows Vista предусмотрен параметр конфигурации компьютера для поддержки HTTP с Teredo.

Клиент NAT

Любой односторонний транспорт и шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт.

Любой односторонний транспорт и шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт.

Не поддерживается

Не поддерживается

Клиент NAT с обходом NAT

Любой односторонний транспорт и шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт.

Любой транспорт, кроме двустороннего HTTP, и любой шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт. Для двустороннего TCP-транспорта требуется Teredo. В ОС Windows Vista предусмотрен параметр конфигурации компьютера для поддержки HTTP с Teredo.

Не поддерживается

TCP с Teredo и любой шаблон обмена сообщениями. В ОС Windows Vista предусмотрен параметр конфигурации компьютера для поддержки HTTP с Teredo.

Ограничения брандмауэра Открытый сервер Сервер с управляемым брандмауэром Сервер с брандмауэром, разрешающим только трафик HTTP Сервер с брандмауэром, разрешающим только исходящий трафик

Открытый клиент

Любой транспорт и шаблон обмена сообщениями

Любой транспорт и шаблон обмена сообщениями

Любой HTTP-транспорт и шаблон обмена сообщениями

Не поддерживается

Клиент с управляемым брандмауэром

Любой односторонний транспорт и шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт.

Любой односторонний транспорт и шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт.

Любой HTTP-транспорт и шаблон обмена сообщениями

Не поддерживается

Клиент с брандмауэром, разрешающим только трафик HTTP

Любой HTTP-транспорт и шаблон обмена сообщениями

Любой HTTP-транспорт и шаблон обмена сообщениями

Любой HTTP-транспорт и шаблон обмена сообщениями

Не поддерживается

Клиент с брандмауэром, разрешающим только исходящий трафик

Любой односторонний транспорт и шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт.

Любой односторонний транспорт и шаблон обмена сообщениями. Для шаблона дуплексного обмена сообщениями требуется TCP-транспорт.

Любой HTTP-транспорт и любой недуплексный шаблон обмена сообщениями.

Не поддерживается