У меня есть Windows Server со статически привязанными ~ 10 IP-адресами. Проблема в том, что я не знаю, как указать IP-адрес по умолчанию.
Иногда, когда я назначаю новый адрес сетевой карте, IP-адрес по умолчанию меняется на последний IP-адрес, введенный в расширенной конфигурации IP на сетевой карте. В результате (поскольку я использую NAT) изменяется и исходящий общедоступный IP-адрес.
Несмотря на то, что эта проблема в настоящее время существует в Windows Server 2008.
Как вы можете установить IP-адрес по умолчанию на сетевой карте, если у нее есть несколько привязанных IP-адресов?
альтернативный текст http://www.nmediasolutions.com/_images/probleme/ip.png
Вот результат ipconfig
:
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 192.168.99.49(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.51(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.52(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.53(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.54(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.55(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.56(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.57(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.58(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.59(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.60(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.61(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.62(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.64(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.65(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.66(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.67(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.68(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.70(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.71(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.100(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.108(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.109(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.112(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.63(Duplicate)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.99.1
Если я сделаю pathping
есть ответ, первым будет 99.49, также если мой IP-адрес по умолчанию 99.100
Tracing route to www.l.google.com [72.14.204.99]
over a maximum of 30 hops:
0 Machine [192.168.99.49]
На машине есть таблица маршрутизации:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.99.1 192.168.99.49 261
10.10.10.0 255.255.255.0 On-link 10.10.10.10 261
10.10.10.10 255.255.255.255 On-link 10.10.10.10 261
10.10.10.255 255.255.255.255 On-link 10.10.10.10 261
192.168.99.0 255.255.255.0 On-link 192.168.99.49 261
192.168.99.49 255.255.255.255 On-link 192.168.99.49 261
192.168.99.51 255.255.255.255 On-link 192.168.99.49 261
192.168.99.52 255.255.255.255 On-link 192.168.99.49 261
192.168.99.53 255.255.255.255 On-link 192.168.99.49 261
192.168.99.54 255.255.255.255 On-link 192.168.99.49 261
192.168.99.55 255.255.255.255 On-link 192.168.99.49 261
192.168.99.56 255.255.255.255 On-link 192.168.99.49 261
192.168.99.57 255.255.255.255 On-link 192.168.99.49 261
192.168.99.58 255.255.255.255 On-link 192.168.99.49 261
192.168.99.59 255.255.255.255 On-link 192.168.99.49 261
192.168.99.60 255.255.255.255 On-link 192.168.99.49 261
192.168.99.61 255.255.255.255 On-link 192.168.99.49 261
192.168.99.62 255.255.255.255 On-link 192.168.99.49 261
192.168.99.64 255.255.255.255 On-link 192.168.99.49 261
192.168.99.65 255.255.255.255 On-link 192.168.99.49 261
192.168.99.66 255.255.255.255 On-link 192.168.99.49 261
192.168.99.67 255.255.255.255 On-link 192.168.99.49 261
192.168.99.68 255.255.255.255 On-link 192.168.99.49 261
192.168.99.70 255.255.255.255 On-link 192.168.99.49 261
192.168.99.71 255.255.255.255 On-link 192.168.99.49 261
192.168.99.100 255.255.255.255 On-link 192.168.99.49 261
192.168.99.108 255.255.255.255 On-link 192.168.99.49 261
192.168.99.109 255.255.255.255 On-link 192.168.99.49 261
192.168.99.112 255.255.255.255 On-link 192.168.99.49 261
192.168.99.255 255.255.255.255 On-link 192.168.99.49 261
224.0.0.0 240.0.0.0 On-link 192.168.99.49 261
224.0.0.0 240.0.0.0 On-link 10.10.10.10 261
255.255.255.255 255.255.255.255 On-link 192.168.99.49 261
255.255.255.255 255.255.255.255 On-link 10.10.10.10 261
Думаю, мой маршрут должен выглядеть так:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.99.1 **192.168.99.100** 261
10.10.10.0 255.255.255.0 On-link 10.10.10.10 261
10.10.10.10 255.255.255.255 On-link 10.10.10.10 261
10.10.10.255 255.255.255.255 On-link 10.10.10.10 261
192.168.99.0 255.255.255.0 On-link 192.168.99.100 261
192.168.99.49 255.255.255.255 On-link 192.168.99.100 261
192.168.99.51 255.255.255.255 On-link 192.168.99.100 261
192.168.99.52 255.255.255.255 On-link 192.168.99.100 261
192.168.99.53 255.255.255.255 On-link 192.168.99.100 261
192.168.99.54 255.255.255.255 On-link 192.168.99.100 261
192.168.99.55 255.255.255.255 On-link 192.168.99.100 261
192.168.99.56 255.255.255.255 On-link 192.168.99.100 261
192.168.99.57 255.255.255.255 On-link 192.168.99.100 261
192.168.99.58 255.255.255.255 On-link 192.168.99.100 261
192.168.99.59 255.255.255.255 On-link 192.168.99.100 261
192.168.99.60 255.255.255.255 On-link 192.168.99.100 261
192.168.99.61 255.255.255.255 On-link 192.168.99.100 261
192.168.99.62 255.255.255.255 On-link 192.168.99.100 261
192.168.99.64 255.255.255.255 On-link 192.168.99.100 261
192.168.99.65 255.255.255.255 On-link 192.168.99.100 261
192.168.99.66 255.255.255.255 On-link 192.168.99.100 261
192.168.99.67 255.255.255.255 On-link 192.168.99.100 261
192.168.99.68 255.255.255.255 On-link 192.168.99.100 261
192.168.99.70 255.255.255.255 On-link 192.168.99.100 261
192.168.99.71 255.255.255.255 On-link 192.168.99.100 261
192.168.99.100 255.255.255.255 On-link 192.168.99.100 261
192.168.99.108 255.255.255.255 On-link 192.168.99.100 261
192.168.99.109 255.255.255.255 On-link 192.168.99.100 261
192.168.99.112 255.255.255.255 On-link 192.168.99.100 261
192.168.99.255 255.255.255.255 On-link 192.168.99.100 261
224.0.0.0 240.0.0.0 On-link 192.168.99.100 261
224.0.0.0 240.0.0.0 On-link 10.10.10.10 261
255.255.255.255 255.255.255.255 On-link 192.168.99.100 261
255.255.255.255 255.255.255.255 On-link 10.10.10.10 261
Как я могу быть уверен, что IP-адрес, использованный в изображении (предполагаемый IP-адрес по умолчанию), будет использоваться моим сервером в качестве адреса по умолчанию?
С Server 2008 Пакет обновления 2 (не R2), или Vista SP2 и исправление MS KB975808 решение есть, хотя и немного корявое. Вы должны удалить все адреса, которые НЕ нужны в качестве источника, а затем повторно добавить каждый из них в командной строке, используя
Netsh int ipv4 add address <Interface Name> <ip address> skipassource=true
Исправление включает флаг «Пропустить как источник».
Более подробные сведения о том, как разные версии Windows выбирают исходные IP-адреса, см. Сообщение в блоге TechNet.
Для сетевого интерфейса не существует такой вещи, как «IP по умолчанию»; скорее таблица маршрутизации вашей системы определяет, какой логический интерфейс следует использовать при взаимодействии с другими устройствами.
Похоже, что вы хотите настроить маршрут по умолчанию. Это приведет к тому, что все разговоры, инициированные этой машиной, будут осуществляться с определенного IP-адреса.
Используйте route add, чтобы добавить шлюз по умолчанию
Ваша ситуация не совсем ясна, но если я вас правильно понял:
1) Почему бы вам просто не установить «обязательный IP-адрес по умолчанию» последним?
2) Или, может быть, вы можете попробовать это (при условии, что адрес шлюза 192.168.99.1):
route delete 0.0.0.0
route -p add 192.168.99.1 mask 255.255.255.255 192.168.99.100
route -p add 0.0.0.0 mask 0.0.0.0 192.168.99.1 192.168.99.100
Чтобы получить дополнительную информацию о синтаксисе команды "route", посмотрите здесь: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx?mfr=true
Команда в виде:
> маршрут добавить 0.0.0.0 маска 0.0.0.0 192.168.99.1 метрика xxx, если yyy
изменит адрес, видимый, когда машина переходит на любой адрес, отличный от 192.168.99.0 / 24 и не 10.10.10.0 / 24. То есть, когда используется шлюз по умолчанию. Показатель (xxx) должен быть выше любого другого, чтобы гарантировать использование правила. Интерфейс (yyy) должен быть интерфейсом для использования. Но я не думаю, что есть способ контролировать, какой IP-адрес на этом интерфейсе использовать, если существует несколько IP-адресов.
> маршрут добавить 192.168.99.0 маску 255.255.255.0 метрика xxx, если yyy
аналогичен, но предназначен для любого адреса 192.168.99.0/24, на который переходит система. Дело в том, что при назначении нескольких IP-адресов одному интерфейсу могут возникнуть проблемы такого рода.
Не могли бы вы использовать метрики по IP-адресам? В свойствах TCP / IP снимите флажок «Автоматическая метрика» и назначьте статическую метрику со значением ниже 261 (как показано на скриншоте) адресу, который вы хотите использовать по умолчанию.
Мне удалось продублировать вашу проблему: похоже, что Windows использует самый низкий назначенный IP-адрес на данном сетевом интерфейсе как «исходящий», независимо от фактического порядка, в котором они были назначены.
Мне не удалось найти никакой документации об этом поведении, но я совершенно уверен, что это задумано.
Я думаю, что в O.S. уровень, но это можно сделать с помощью кода в вашем приложении: сокет может быть явно привязан к выбранной паре IP-адрес / порт перед подключив его к удаленной конечной точке. Но вам придется использовать библиотеки более низкого уровня, чем стандартные веб-сервисы. I.E. вам придется вручную открыть сокет, подключить его и использовать для чтения / записи данных.
Пример .NET / C #:
using System.Net;
using System.Net.Sockets;
IPAddress local_addr = IPAddress.Parse("192.168.99.100");
IPAddress remote_addr = IPAddress.Parse("1.2.3.4");
int local_port = 4242;
int remote_port = 80;
IPEndPoint local_ep = new IPEndPoint(local_addr,local_port);
IPEndPoint remote_ep = new IPEndPoint(remote_addr,remote_port);
Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
s.Bind(local_ep);
s.Connect(remote_ep);
// Now use the socket to talk to the remote host
Это откроет соединение с 1.2.3.4:80, исходящее из 192.168.99.100:4242, поэтому удаленный хост увидит, что оно исходит именно с этого IP-адреса.
Опробовано и протестировано путем подключения к IIS, он регистрирует запрос как исходящий с указанного IP-адреса.
Выбор адреса источника для исходящего вызова обрабатывается стеком TCP / IP иначе, чем после капитального ремонта Vista. В XP / 2003 и ранее исходный адрес определялся таблицей маршрутов, если не был явно объявлен приложением, выполняющим исходящий вызов. Начиная с Vista / 2008, исходный адрес может определяться по префиксу сродства к месту назначения или адресу шлюза следующего перехода, если место назначения не является локальным. Следующая запись в блоге Technet очень хорошо объясняет изменение поведения.
У меня Windows 2008 R2 SP1 x64 Enterprise edition используется в качестве веб-серверов с одной сетевой картой.
Я столкнулся с той же проблемой, описанной выше. Я хочу, чтобы исходящие соединения обрабатывались IP-адресом по умолчанию (тем, который подписан на сервере), но он продолжает случайным образом выбирать, какой IP-адрес из моих 10 IP-адресов для моих 10 веб-сайтов на этом сервере.
Все они отображаются как предпочтительные IP-адреса, если вы выполните следующую команду.
Netsh int ipv4 show ipaddresses level=verbose
Я попытался загрузить Hot Fix, но по какой-то причине (и я дважды, трижды проверил) он сказал: «Он не может работать в этой версии ОС). Если вы, ребята, хотите попробовать вот.
Если у вас запущен DNS-сервер MS, вы заметите, что ЖЕ имя сервера будет зарегистрировано 11 раз (в моем случае) 1 IP для сервера и 10 IP для каждого из веб-сайтов.
Я считаю, что это может быть РЕШЕНИЕ (в настоящее время, если у кого-то еще нет лучшего решения)
Чтобы перейти на сервер Windows в свойствах TCP, где вы ввели IP-адреса для сервера и веб-сайтов, вы увидите там вкладку DNS. Теперь СНИМИТЕ РЕГИСТРАЦИЮ АДРЕСОВ СОЕДИНЕНИЙ и ПЕРЕЗАГРУЗИТЕ сервер (и не устанавливайте флажок).
Если вы проверите DNS-сервер, все записи DNS с IP-адресами исчезнут.
Сейчас Введите ВРУЧНУЮ в DNS имя сервера и предпочтительный IP-адрес.. И это должно решить проблему.
Если у кого-то из вас есть лучшее решение, поделитесь с нами.
Жалоба: Не уверен, почему MS не исправила эту проблему. Они должны были создать параметр (например, флажок) для серверов, которые переносят несколько IP-адресов в одной подсети, чтобы вы могли выбрать, какой IP-адрес должен быть предпочтительным.
«Адрес по умолчанию» - это адрес, указанный в первом поле ввода в свойствах интерфейсной карты, поскольку по умолчанию он будет отвечать этим адресом, все остальные считаются вторичными.
(ISA-сервер является хорошим примером такого поведения, поскольку вы не можете сказать ему, что он должен ответить с IP-адресом, с которым он связался ...)
Я нашел решение:
Это работало в моем 2008R2 / IIS7 с 20 IP-адресами.
BR, Matija
Я решил это, изменив маску сети на 255.255.255.255
для всех дополнительных адресов и оставив без изменений только адрес по умолчанию.
Надеюсь, это поможет вам!