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

Ответы:


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-адрес должен быть предпочтительным.


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

БР, Матия


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.