Проверка наличия доступа к сети Интернет

Начиная с Windows Vista в операционной системе Windows появилась функция определения наличия подключения к сети интернет. Для пользователя это выглядит как монитор компьютера в трее идентифицирующий состояние подключения, к примеру на иконке выводит желтый вопросительный знак когда соединение с интернет отсутствует или выводит дополнительные предупреждения.

Network Connectivity Status Indicator (Microsoft NCSI) — индикатор статуса сетевого подключения. Проверяет работоспособность соединения с интернетом в Windows Vista/7/8/10.

Проверка наличия подключения производится двумя способами (Описание работы будет производится для протокола IPv4):
1) Windows подключается по следующему сайту www.msftncsi.com/ncsi.txt, если получен ответ 200 OK и тело запроса содержит ответ «Microsoft NCSI».
2) Windows производит DNS запрос сайта dns.msftncsi.com и если ответ содержит 131.107.255.255.

Результаты проверок:
1) Если обе проверки успешно завершены — Значит соединение с Интернет установлено.
2) Если файл ncsi.txt недоступен, но dns.msftncsi.com резолвится корректно — система уведомляет возможной необходимости аутентификации посредством браузера.
3) Если файл ncsi.txt недоступен, а dns.msftncsi.com резолвится с другим адресом, либо его IP невозможно определить, — система сообщает о недоступности подключения к сети Интернет.

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

Анонимность Network Connectivity Status Indicator
Любая информация передаваемая в Интернет где-либо фиксируется, в данном случае IP будет зафиксирован на серверах Microsoft. msftncsi.com обычный веб-сервер и он ведет журналы своей работы. Хотя согласно заявлению Microsoft эти данные не используются для установления личности пользователя.

Управление настройками Network Connectivity Status Indicator
Описание настроек для протокола IPv4, IPv6 имеет аналогичные.

Все настройки Microsoft NCSI находятся в ветке реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet

Разберем основные использующиеся ключи реестра:
EnableActiveProbing — Включает или отключает функцию Microsoft NCSI, по умолчанию имеет значение 1, значение 0 полностью отключает Network Connectivity Status Indicator.
ActiveDnsProbeContent — IP-адрес хоста для проверки работы DNS
ActiveDnsProbeHost – имя хоста для проверки работы DNS
ActiveWebProbeHost — адрес сайта, на котором размещен файл
ActiveWebProbePath – путь к файлу проверки
ActiveWebProbeContent — содержимое файла проверки

Используя эти параметры можно реализовать свою проверку, на своем собственном сервере.
Изменим некоторые параметры
ActiveWebProbeHost = g-soft.info
ActiveWebProbePath = ncsi/notebook1.txt
ActiveWebProbeContent = Hello World!

Если файл g-soft.info/ncsi/notebook1.txt доступен и содержит текст «Hello World!» значит доступ в интернет есть, а мы в свою очередь записали внешний IP адрес компьютера журнал работы веб-сервера. Получив тем самым своеобразный «антивор».
Если изменить хост для проверки на внутренний веб-сайт внутри сети, мы избавимся от ошибки в корпоративной сети, иначе нам надо разрешить полный доступ до домена msftncsi.com.

Похожим способом мы можем поступить с проверкой доступности домена, но смысла в этом нет, так как эти данные дальше DNS-сервера не предаются.