Skip Navigation Links
Проект "Real Time Systems DD"
Служба обхода NAT (Network Address Translation)

В серверных операционных системах Windows Server 2008 и Windows 2008 R2 есть хорошо реализованная, легко конфигурируемая служба IP-маршрутизации «Routing and Remote Access», в которую, в частности, входит протокол маршрутизации NAT (Network Address Translation). Но если в локальной сети существует несколько серверов, которые должны быть видимы из глобальной сети, т.е. имеют публичные IP-адреса, и несколько компьютеров, которые имеют приватные IP-адреса, но должны иметь доступ в ИНТЕРНЕТ (глобальную сеть), то нужно выделить отдельные сервера для публичной IP-маршрутизации и маршрутизации через протокол NAT. При этом приватные компьютеры локальной сети становятся невидимыми для публичных серверов, так как не воспринимают входящие IP-соединения от публичных серверов.

Чтобы, в описанной выше ситуации, ограничиться одним маршрутизатором, я разработал систему обхода NAT, которая состоит из системной службы обхода NAT, утилиты конфигурирования службы обхода NAT, а также CALLOUT WFP-драйвера режима ядра «nattraverse_kmdffilter.sys», который обеспечивает фильтрацию входящих TCP/UDP соединений путем запрета прохождения IP-пакетов с выбранным в конфигураторе номерами портов.

Мои исследования показали, что протокол маршрутизации NAT реализован с помощью набора «callout» WFP-фильтров (Windows Filtering Platform), расположенных на слоях с весом 0xFFFFFFFFFFFFFFFD. Я, с помощью службы обхода NAT, помещаю на соответствующие слои, но с весом 0xFFFFFFFFFFFFFFFE, условные WFP-фильтры, которые для публичных адресов пробрасывают IP-пакеты над WFP-фильтрами протокола NAT. В этом, в принципе, и заключается механизм функционирования службы обхода NAT.

Последняя версия системы обхода NAT разработана в среде «Visual Studio 11 Beta». Среда программирования «Visual Studio 11», в отличие от предыдущих версий, имеет встроенную поддержку WDK (Windows Driver Kit), что оказалось очень полезным при разработке драйвера «nattraverse_kmdffilter.sys». Эта поддержка обеспечивает простоту доступа к заголовочным файлам и библиотекам WDK в проектах обычных приложений (нет необходимости вручную прописывать пути доступа к каталогам WDK). Новая среда программирования имеет также развитую и очень удобную поддержку удалённой отладки драйверов и приложений, что оказалось также полезным при разработке Системы обхода NAT. Но бета-версия новой среды имеет существенный недостаток: в ней отсутствует поддержка проектов «Visual Studio Installer», а присутствующая система «InstallShield LE» создаёт инсталляторы, которые не работают (выдаётся ошибка о неправильном символе в пути ".." и инсталляция откатывается). Поэтому для построения бинарных инсталляционных пакетов использовалась среда программирования «Visual Studio 2010».

Разработанная служба может оказаться полезной в системах малого и среднего бизнеса. Но лучше бы было, если MICROSOFT улучшило возможности конфигурирования самого протокола NAT. И, вообще, лучше бы MICROSOFT улучшала возможности конфигурирования стандартных служб стандартных редакций Windows Server, а не выпускала неуправляемые, ублюдочные и дорогие системы типа SBS (Small Business Server).

Сергей Дюков

Таблица загрузок проекта:
Ссылка Описание
NATTraversalX64.msi Бинарный инсталляционный пакет для 64-разрядных ОС Windows
NATTraversalX86.msi Бинарный инсталляционный пакет для 32-разрядных ОС Windows
NATTraversal.zip Упакованная папка проекта «Visual Studio 11»
NATTraversal Папка проекта «Visual Studio 11»

Таблица комментариев и пожеланий:
Добавте новый комментарий или пожелание:
Имя создателя комментария:   
Адрес электронной почты создателя комментария:   
Текст комментария:   
   
«RTSDD Web-Site» v 1.0.0000.0001 β Системы Реального Времени DD © 2019
Главный архитектор систем Сергей Дюков
Готово Статус исполнения