2

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

Мой IP-адрес по умолчанию - 169.254.1.38/24 . Да, мы используем диапазон IP-адресов для автоматического назначения адресов, но это статический настроенный IP-адрес, и наш DHCP-сервер назначит мне тот же IP-адрес, если я перейду на конфигурацию DHCP. Мой шлюз на 169.254.1.1 .

Я добавил IP-адрес 192.168.38.1/24 с помощью кнопки «Дополнительно» в свойствах адаптера. Как только я закрываю диалоговое окно, Windows начинает использовать 192.168.38.1 в качестве выходного адреса при попытке выхода в Интернет. Поскольку наш маршрутизатор находится в другой подсети, он не отвечает на запросы.

Вывод route print (вывод был на португальском я перевел метки:

...
IPv4 route table
===========================================================================
Active routes:
Network address            Mask         Gateway addr.      Interface   Cost
          0.0.0.0          0.0.0.0      169.254.1.1     192.168.38.1    266
...

И как только я удаляю второй IP, значение интерфейса маршрута возвращается к 169.254.1.38 и все возвращается к нормальному состоянию.

Есть ли способ, которым я могу изменить этот маршрут, чтобы он начал использовать правильный IP-адрес? Команда route add просто принимает интерфейсы в качестве параметров, а не IP-адреса.

Я использую Windows 7 64bit.

2 ответа2

4

Локальная подсеть IPv4, как определено в RFC 3927, всегда должна быть 169.254/16 (Примечание: /16, а не /24), а значения "0" и "255" в третьем октете зарезервированы для вы вручную настраиваете локальный IPv4-адрес. Все остальные значения для третьего октета зарезервированы для автоматического самостоятельного назначения, а не для ручного назначения. Поэтому на вашем месте я бы изменил 169.254.1.38/24 на 169.254. 0.38 /16, и я бы изменил 169.254.1.1/24 на 169.254. 0.1 /16

Если у вас есть DHCP-сервер, вы не должны использовать link-local, вы должны использовать частную подсеть RFC 1918 (10/8, 172.16/12 или 192.168/16). В действительности, вместо того, чтобы просто переключаться на третий октет "0" или "255" в локальной подсети ссылки, как я описал выше, вам, вероятно, следует просто полностью переключиться на частную подсеть RFC 1918 и прекратить использовать локальный адрес ссылки IPv4. пространство вообще. Я не уверен, что это как-то связано с вашей проблемой, но я подумал, что вам может быть интересно узнать, как лучше следовать стандартам для адресных пространств, которые вы пытаетесь использовать. Исправление этого теперь может избежать некоторых более тонких проблем позже.

Помните, что, поскольку вы используете локальное адресное пространство IPv4-канала RFC 3927, ваш стек IP, вероятно, использует поведение "все подсети локальны", определенное в RFC 3927. Из-за поведения "все подсети являются локальными" локальных адресов каналов IPv4, совершенно нормально использовать частный IP-адрес RFC 1918, например 192.168.38.1, для связи с локальным IP-адресом каналов IPv4, например 169.254.1.1, в том же широковещательном домене ( например, Ethernet LAN).

1

Во-первых, я бы сделал это с двумя сетевыми картами ... гораздо проще.

Я просто добавляю это как доказательство того, что вы не получаете ожидаемого поведения (я знаю, что это не относится к Windows 7, но этот тип вещей не меняется часто): «Одна сетевая интерфейсная карта (NIC), настроенная с несколькими IP-адресами определенные в разных логических подсетях, всегда будут использовать первый IP-адрес, определенный в конфигурации TCP/IP, в качестве адреса источника независимо от места назначения. "

http://support.microsoft.com/kb/149399

Я бы проверил

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services \ Tcpip \ Parameters \ Interfaces \

Затем найдите свой интерфейс и вручную измените порядок IP-адресов в ключе «IP-адрес». Я сомневаюсь в этом, но вам может потребоваться отключить и снова включить интерфейс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .