IIS7 / 2008 Sql / Проблемы со службами - PullRequest
0 голосов
/ 07 мая 2009

Пытаясь подключить сервер 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)?

1 Ответ

0 голосов
/ 07 мая 2009

Вы видите побочный эффект автоматического вычисления метрики маршрута. Когда несколько адресов имеют маршрут к одному адресу и включена автоматическая метрика (в настройках Advanced ... в TCP), Windows будет использовать попытку и предсказать «самый быстрый» путь к этому адресу.

Я подозреваю, что оба ваших интерфейса (виртуальный или другой) имеют одинаковые метрики маршрута, поэтому выбор не является детерминированным. Вы можете поощрять его от использования своего «обратного» адреса, установив более высокую метрику маршрута для своих адресов .10 / .11. Если автоматические метрики отключены, вы также можете назначить явный статический маршрут, используя свой адрес 10.10.10.1.

Подробнее о TechNet - поиск на странице для автоматических метрик.

http://technet.microsoft.com/en-us/library/bb727001.aspx

К лучшему или к худшему. Если оба интерфейса объявляют путь с одинаковыми метриками - любой интерфейс может победить. Поведение в прошлом было недетерминированным - оно изменилось.

Наилучший подход - использовать route в командной строке для создания статического постоянного TCP-маршрута с более низкой или самой низкой стоимостью между .1 и .2. Поочередно увеличивайте стоимость каждого маршрута по адресам .14 и .15. Я бы использовал первое, так как меньше поддерживать и меньше побочных эффектов для других коммуникаций.

...