Пытаясь подключить сервер 2008 к серверу sql, я заметил изменение в стеке IP 2008, из-за которого я немного сбит с толку. Я ищу либо способ ОС переопределить это, либо программный способ в .NET переопределить это.
Ради этого аргумента предположим, что у меня есть веб-сервер с несколькими IP-адресами для сервера нескольких сайтов, подключающихся к нескольким ресурсам (веб-сервис, sql и т. Д.) За брандмауэром.
SERVER IP: 10.10.10.1
SITE1 IP: 10.10.10.10
SITE2 IP: 10.10.10.11
SQL SERVER: 10.10.10.2
WEB SERVICE: 10.10.10.15
Брандмауэр настроен так, чтобы запретить все, разрешить только то, что нужно. Другими словами:
ALLOW FROM 10.10.10.1 TO 10.10.10.2
ALLOW FROM 10.10.10.1 TO 10.10.10.15
DENY ALL
До Windows 2008 Windows 2000/2003 всегда использовала базовый IP-адрес компьютера (10.10.10.1) при запросе сетевых ресурсов. Таким образом, правила брандмауэра были соблюдены, и доступ был предоставлен. В 2008 году, похоже, он выбирает ближайший матч:
Подключение к 10.10.10.2 происходит с IP 10.10.10.1. Брандмауэр счастлив.
Подключение к 10.10.10.15 происходит с IP 10.10.10.11, брандмауэр запрещает подключения.
Удаление всех виртуальных IPS из NIC, конечно, заставляет все работать, потому что каждый потом придет сюда 10.10.10.1
Теперь я немного понимаю, что если бы на этой машине было два сетевых адаптера, это имеет смысл из-за изменений в реализации RFC3484 и IPv6 (http://support.microsoft.com/kb/968920) и модель сильного / слабого хоста вступает в игру, но на срок мне, я не понимаю, почему это должно было изменить работу IP с одной сетевой картой.
У меня открыта поддержка, и я ничего не получаю. Я слышу бормотание «просто откройте брандмауэр, чтобы разрешить соединения с 10.10.10.11». Это не практично. Это будет означать добавление правила разрешения для каждого IP-адреса на многосетевой машине с одним ником только для Windows 2008. Я не могу поверить, что пробивание большего количества дыр в вашем брандмауэре только для стека IP-адресов 2008 года является хорошим ответом.
Есть ли способ отключить эту "функцию" в 2008 году на уровне машины?
Есть ли способ отключить это в .NET на уровне машины?
Есть ли способ отключить это для каждого соединения (SqlConnection, WebClient)?