Windows Server 2008: указание IP-адреса по умолчанию, когда сетевая карта имеет несколько адресов

23

У меня 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-адресом по умолчанию), будет использоваться моим сервером в качестве адреса по умолчанию?

Cédric Boivin
источник

Ответы:

11

Для Server 2008 с пакетом обновления 2 (не R2) или Vista SP2 и исправления MS KB975808 существует решение, хотя и немного неуклюжее. Вы удалили бы все адреса, которые не хотите использовать в качестве источника, а затем заново добавили каждый из них в командной строке, используя

Netsh int ipv4 add address <Interface Name> <ip address> skipassource=true

Исправление включает флаг «Пропустить как источник».

Более подробное описание того, как разные версии Windows выбирают исходные IP-адреса, см. В этом блоге TechNet .

Пол
источник
6

Не существует такой вещи, как «IP по умолчанию» для сетевого интерфейса; скорее таблица маршрутизации вашей системы определяет, какой логический интерфейс следует использовать при связи с другими устройствами.

Похоже, что вы хотели бы сделать, это настроить маршрут по умолчанию. Это приведет к тому, что все разговоры, инициированные этой машиной, будут осуществляться с определенного IP-адреса.

Используйте route add для добавления шлюза по умолчанию

Брайан Тиллман
источник
Как я могу изменить свою таблицу маршрутизации, на самом деле 99,49 мне нужно, чтобы маршрут по умолчанию был 99,100
Седрик
Шлюз по умолчанию - это маршрут по умолчанию и наоборот. Это просто вопрос терминологии.
Кевин М
Я знаю это, но не могу изменить маршрут по умолчанию. Как я могу это изменить? Какова правильная формула команды
Седрик Бойвин
1
Вы можете попробовать это: «добавление маршрута 0.0.0.0 маска 0.0.0.0 192.168.99.100 метрика 2»
Джефф Майлз
Если я это сделаю, нет, я не смогу больше выходить в интернет, потому что это неправильный шлюз.
Седрик Бойвин
2

Ваша ситуация не совсем ясна, но если я вас правильно понял:
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

Алексей Шатыгин
источник
Не работает, команда не хороша. Ошибка, не могу найти указанный файл
Cédric Boivin
попробуйте без "if": route -p добавить 192.168.99.1 mask 255.255.255.255 192.168.99.100 но это должно сработать, не могли бы вы процитировать ошибку?
Алексей Шатыгин
На этот раз нет сообщений об ошибках, но это ничего не меняет
Cédric Boivin
Это должно изменить вашу таблицу маршрутизации. Можете ли вы снова выполнить «route print», эту команду и «route print» и поместить вывод здесь?
Алексей Шатыгин
И, прежде чем выполнить команду, которую я написал, сделайте «route delete 0.0.0.0»
Алексей Шатыгин
1

Не могли бы вы использовать метрики на IP-адресах? В свойствах TCP / IP снимите флажок Автоматическая метрика и присвойте статический адрес со значением ниже 261 (как показано на скриншоте) адресу, который вы хотите использовать по умолчанию.

Джефф Майлз
источник
Я попробую это, это хорошая идея.
Седрик Бойвин
Не работает, смотрите мою модификацию на моем посту.
Седрик Бойвин
есть ли способ изменить адрес интерфейса?
Седрик Бойвин
1

Команда в форме:
> route add 0.0.0.0 mask 0.0.0.0 192.168.99.1 metric xxx, если yyy
изменит адрес, увиденный, когда машина перейдет на любой адрес не-192.168.99.0 / 24 и не-10.10.10.0 / 24 , То есть, когда используется шлюз по умолчанию. Метрика (ххх) должна быть выше, чем что-либо еще, чтобы обеспечить использование правила. Интерфейс (гггг) должен быть интерфейсом для использования. Но я не думаю, что есть способ контролировать, какой IP-адрес на этом интерфейсе использовать, если есть несколько IP-адресов.
> route add 192.168.99.0 mask 255.255.255.0 metric xxx, если yyy
аналогичен, но для любого адреса 192.168.99.0/24, на который идет система. Дело в том, что назначение нескольких IP-адресов одному интерфейсу может иметь проблемы такого рода.

Бо Гесте
источник
1

Мне удалось продублировать вашу проблему: похоже, что Windows использует самый низкий назначенный IP-адрес на данном сетевом интерфейсе как «исходящий», независимо от фактического порядка, в котором они были назначены.

Я не смог найти какую-либо документацию об этом поведении, но я уверен, что это так.


редактировать

Я думаю, что это действительно невозможно сделать на уровне ОС, но это может быть сделано с помощью кода в вашем приложении: сокет может быть явно привязан к выбранной паре IP-адрес / порт перед подключением его к удаленной конечной точке. Но вам придется использовать библиотеки более низкого уровня, чем стандартные веб-сервисы. То есть вам придется вручную открыть сокет, подключить его и использовать его для чтения / записи данных.

Пример .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-адреса.

Массимо
источник
Я читал некоторую одежду, которая может быть двоичным сравнением с IP-адресом?
Седрик Бойвин
1
Да, двоичное сравнение, скорее всего, выберет «самый низкий»; Однако я не пробовал использовать IP-адреса, принадлежащие разным подсетям.
Массимо
Моя самая большая проблема в настоящее время - у меня более 300 веб-сайтов на нескольких IP-адресах, и когда мой сервер выходит в Интернет для вызова другого сервера (веб-службы), я не могу быть уверен, какой публичный IP-адрес у моего сервера.
Седрик Бойвин
Спасибо за этот ответ, но в моем сценарии невозможно применить эти решения. Решения должны исходить от ОС или, возможно, брандмауэра. Это хороший способ решить проблему с помощью приложения, но мы обращаемся ко многим приложениям, чтобы решить проблему на каждом веб-сайте.
Седрик Бойвин
Но даже если бы вы могли делать то, что хотели, вы не могли бы заставить разные веб-сайты использовать разные IP-адреса; таким образом, вы могли бы :-)
Massimo
1

Выбор адреса источника для исходящего вызова по-разному обрабатывается стеком TCP / IP с момента капитального ремонта Vista. В XP / 2003 и более ранних версиях адрес источника определялся таблицей маршрутов, когда он не был явно объявлен приложением, осуществляющим исходящий вызов. Начиная с Vista / 2008, адрес источника можно определить по привязке префикса к адресу назначения или адресу шлюза следующего перехода, если пункт назначения не является локальным. Следующая публикация в блоге Technet очень хорошо объясняет изменение поведения.

http://blogs.technet.com/b/networking/archive/2009/04/24/source-ip-address-selection-on-a-multi-homed-windows-computer.aspx

Брайан Меллингер
источник
1

Я использую Windows 2008 R2 SP1 x64 Enterprise Edition в качестве веб-серверов с одним сетевым адаптером.

Я столкнулся с той же проблемой, описанной выше. Я хочу, чтобы исходящие соединения обрабатывались с помощью IP-адреса по умолчанию (подписанного на сервере), но он продолжает произвольно выбирать, какой IP-адрес из моих 10 IP-адресов для моих 10 веб-сайтов на этом сервере.

Все они отображаются в качестве предпочтительных IP-адресов, если вы выполните следующую команду.

Netsh int ipv4 show ipaddresses level=verbose

Я попытался загрузить Hot Fix, но по какой-то причине (и я дважды, трижды проверил) он сказал: «Он не может работать на этой версии ОС). Если вы, ребята, хотите попробовать вот это .

Если у вас запущен сервер MS DNS, вы заметите, что ЖЕ имя сервера будет зарегистрировано 11 раз (в моем случае) 1 IP для сервера и 10 IP для каждого из веб-сайтов.

То, что я считаю, это может быть ВРЕМЕННОЕ РЕШЕНИЕ (в настоящее время, если у кого-то еще нет лучшего решения)

Чтобы перейти на сервер Windows в свойствах TCP, где вы ввели IP-адреса для сервера и веб-сайтов, вы увидите там вкладку DNS. Теперь ОТКЛЮЧИТЕ АДРЕСА РЕГИСТРАЦИЯ СОЕДИНЕНИЙ и перезагрузите сервер (и не проверяйте).

Если вы отметите DNS-сервер, все записи DNS с IP-адресами исчезнут.

Теперь введите вручную в DNS имя сервера и предпочитаемый IP-адрес . И это должно исправить проблему.

Если у кого-то из вас есть лучшее решение, пожалуйста, поделитесь с нами.

Gripe: Не уверен, почему MS не решил эту проблему. Они должны были создать опцию (например, флажок) для серверов, которые переносят несколько IP-адресов в одной подсети, чтобы вы могли выбрать, какой IP-адрес должен быть предпочтительным.

Neo
источник
0

«Адрес по умолчанию» - это адрес, введенный в первое поле ввода в свойствах интерфейсной карты, поскольку он по умолчанию отвечает этим, все остальные считаются вторичными.

(ISA-сервер является хорошим примером такого поведения, так как вы не можете сказать, чтобы он отвечал с IP, с которым он связывался ...)

Александр Низу
источник
Это должно быть так, но не работает. В моем случае ip 99.49 находится в расширенной конфигурации, а 99.100 - это тот, кто указывает на свойство ipv4 ....
Седрик Бойвин
Это действительно странно, так как наша инфраструктура часто использует это для фильтров веб-серверов и прочего. Вы пытались удалить все IP-адреса из свойств карты, кроме того, который вы хотите использовать по умолчанию, применить и затем вернуть их обратно?
Александр Низу
Да, я пробую это, и та же самая проблема возникает, когда я вхожу в 99.49
Седрик Бойвин
99,49 самый низкий из ваших IP-адресов?
Александр Низу
Да, это вы можете посмотреть мой ipconfig на вершине
Седрик Бойвин
0

Я нашел решение:

  • на свой основной ник, удалите IP, который вы хотите по умолчанию, удалите gw aswell по умолчанию, дайте ему высокую метрику (пример: 50)
  • добавьте дополнительный ник, присвойте ему IP-адрес, который вы хотите использовать как «по умолчанию», установите здесь значение GW по умолчанию, а на вкладке «Дополнительно» установите самый низкий показатель (пример: 1)

Это работало в моем 2008R2 / IIS7 с 20 IP-адресами.

БР, Матия

user39080
источник
0

Я решил это, изменив маску сети 255.255.255.255на все дополнительные адреса и оставив только адрес по умолчанию без изменений.

Я надеюсь, что это решить для вас!

Aldo
источник