Добавьте статический IP-псевдоним к интерфейсу DHCP в Windows 8 (и выше)

16

У меня машина с Windows 8, которая имеет только один порт Ethernet. Необходимо использовать DHCP, а также статический IP-адрес. Каждый IP-адрес находится в отдельной подсети, и каждый выполняет свою несовместимую задачу.

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

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

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

Поскольку я не могу сделать это полностью с помощью DHCP, мне нужен статический IP, потому что эта машина также выступает в качестве сервера для 10.x.y.zподсети. Администраторы локальных сетей уже дали мне статический IP в этой схеме, но это недостаточно , потому что мне также нужно поговорить с 192.168.x.yстороны сети.

Мне известен подобный вопрос здесь . Я спрашиваю еще раз, потому что:

  1. Этот другой вопрос был задан, когда Windows 7 была актуальной. Возможно, Microsoft использовала эти два с лишним года, чтобы исправить эту слабость в реализации сетевого стека Windows 8?

    (Да, слабость : Linux допускает сетевой интерфейс с DHCP и статическим IP-адресом. В TCP / IP нет ничего, что мешало бы Microsoft разрешить это. Им просто нужно написать код, чтобы разрешить это.)

  2. Кажется, что графический интерфейс конфигурации сети в Windows 8 имеет то же ограничение, что и Windows 7, но, возможно, существует некоторый низкоуровневый хак, который позволит нам назначить статический IP-псевдоним интерфейсу DHCP?

Уоррен Янг
источник

Ответы:

13

Наконец, DHCP и статические IP-адреса могут быть настроены для сосуществования на одной сетевой карте. Эта функция появилась в обновлении для создателей Windows 10 (1703).

Существует новое свойство , называемое dhcpstaticipcoexistenceв netsh interface ipv4 set interfaceкоманде, который может быть установлен enabledи этот интерфейс может быть сконфигурирован с несколькими IP - адресами статическими вместе с DHCP-сконфигурированный IP. Однако это должно быть сделано с помощью netsh add addressкоманды, но пока невозможно через графический интерфейс.

Было опубликовано мало документации об обновлении, netshи об этом мало что обсуждают во всем Интернете (поиск Google dhcpstaticipcoexistenceдает только 5 результатов на момент ответа). Но эта особенность реальна.

Сесил
источник
5
Этот ответ был очень полезен для меня, так как работал при перезагрузке и казался хорошим сторонним решением. Включение примеров используемых команд было бы неплохо. Этот ответ был так близок к приведению примеров команд, но мне пришлось пойти в Google, чтобы выяснить точный синтаксис. Мои последние команды были netsh interface ipv4 set interface interface="Ethernet" dhcpstaticipcoexistence=enabledи netsh interface ipv4 add address "Ethernet" 192.168.1.200 255.255.255.0.
Jljtgr
13

Вот точные команды, необходимые для предложения Сесила, основанного на новой функции dhcpstaticipcoexistence в Windows 10 :

  1. Узнайте имя интерфейса:

    netsh interface ipv4 show interface
    
  2. Включить dhcpstaticipcoexistence:

    netsh interface ipv4 set interface interface="interface name" dhcpstaticipcoexistence=enabled
    
  3. Добавьте статический IP-адрес в ваш интерфейс

    netsh interface ipv4 add address "interface name" 192.168.x.xxx 255.255.255.0
    
  4. Используйте команду 'ipconfig / all', чтобы убедиться, что статический IP-адрес добавлен. Вы не можете сделать это из графического интерфейса.

Майкл Чжан
источник
6

Я написал небольшой пакетный файл. Вы можете проверить, работает ли он в вашей ситуации. (здесь работает нормально)

  • Это вернет ваш интерфейс к DHCP.
  • После этого он извлечет IP, маску подсети, шлюз по умолчанию и первый DNS-сервер. Это сложная часть. Особенно если у вас несколько интерфейсов. Если это не работает, нам нужно немного возиться здесь, чтобы заставить его работать.
  • Если вы хотите второй DNS тоже, он должен быть добавлен здесь (но я не смотрел так далеко, потому что один DNS должен быть в порядке на данный момент).
  • Он установит эти настройки как «статические» на интерфейсе.
  • После этого вы можете 10.x.y.zбез проблем добавить адрес в свой интерфейс.

Вот сценарий:

@ эхо выключено
установить интерфейс = "Ethernet 2"
установить extra_ip = 10.0.0.33
установить extra_mask = 255.255.248.0

echo Настройка% interface% обратно на DHCP
netsh int ipv4 set name name =% interface% source = dhcp
netsh int ipv4 set имя dnsservers =% interface% source = dhcp

echo Ожидание стабилизации IP ...
время ожидания / т 5

echo Получение текущего IP% интерфейса%
ipconfig>% temp% \ ipconfig.txt
for / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "IPv4" ^ | find / v "127.0"') установите _IP = %% a
установить IP =% _ IP: ~ 1%
for / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "Подсеть" ^ | find / v "127.0"') установите _IP = %% a
установить MASK =% _ IP: ~ 1%
for / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "По умолчанию" ^ | find / v "127.0" ^ | find / v "::"') установите _IP = %% a
установить GATE =% _ IP: ~ 1%
for / f "tokens = 2 delims =:" %% a in ('type% temp% \ ipconfig.txt ^ | find "DNS-серверы" ^ | find / v "127.0"') действительно установить _IP = %% a
установить DNS1 =% _ IP: ~ 1%

echo Настройка IP-адреса, маски подсети и шлюза по умолчанию ...
эхо (IP% IP%, маска% MASK%, gw% GATE%)
netsh int ipv4 set name name =% interface% static% IP%% MASK%% GATE% gwmetric = 1

время ожидания / т 5
echo Настройка первичного DNS (% DNS1%) ...
netsh int ipv4 set имя dnsserver =% interface% static% DNS1% первичный

echo Добавление вторичного IP ...
netsh int ipv4 добавить адрес% interface%% extra_ip%% extra_mask%

время ожидания / т 5
эхо.
echo Новая конфигурация IP:
ipconfig / all

del% temp \ ipconfig.txt

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

Rik
источник
3

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

Настраиваемая конфигурация сети, подобная той, которую вы запрашиваете , хорошо документирована здесь .

Фергус
источник
Идея VM - охота на бабочек кувалдой. Добавление системы виртуальных машин и лицензирование использования Windows для виртуальных машин будет сложным и, возможно, более дорогостоящим, чем просто добавление второго сетевого адаптера к компьютеру. Мне нужен только 10.x.y.zадрес для обслуживания одной программы.
Уоррен Янг
Вот почему я предвосхищаю ответ "один обходной путь мог быть .."; добавление виртуальной машины, безусловно, будет работать. Multihoming очевиден; но опять же, ваша идея в корне изменит исходный вопрос. удачи
Фергус
1

Как насчет планирования сценария для добавления IP-адреса после загрузки:

netsh interface ipv4 add address “Local Area Connection” 10.x.y.z 255.255.255.0
Павел
источник
Отличная идея, но я уверен, что вынудит адаптер из DHCP.
Фергус
Я проверил это, и @Fergus прав: высказывание netsh interface ipv4 show addressпосле этого дает только статический IP. IP-адрес DHCP исчез.
Уоррен Янг
Ой, да, я помню сейчас. Вариант будет получить текущий IP, а затем добавить оба обратно. Маловероятно, что аренда DHCP не будет продлена при активном использовании (для этого есть льготный период), поэтому это имеет значение только во время загрузки.
Пол
@Paul: Если я просто добавлю DHCP-адрес обратно netsh, разве это не сделает его статическим IP-адресом, чтобы стек Windows не продолжал посылать обновления DHCP-аренды на DHCP-сервер? Когда начальное время аренды истекло, DHCP-сервер может свободно переназначить этот адрес.
Уоррен Янг
@WarrenYoung Как долго вы получаете аренду? ( ipconfig /allдля меня это 10 дней от моего роутера). Поэтому, если компьютер перезагружается до истечения срока аренды, это не должно быть проблемой. В противном случае вы можете добавить ipconfig /releaseи ipconfig /renewнад этими строками и запланировать его запуск в 3 часа ночи (когда никто не находится за компьютером).
Рик
0

Я использовал Win IP Config версии 2.7.2 с 2007 года, работающую в Windows 10. Установите для сетевого адаптера значение DHCP, Запустите Win IP Config в качестве администратора (щелкните правой кнопкой мыши значок вместо двойного щелчка для параметра). Затем нажмите IP + и введите нужный статический IP-адрес. У меня сейчас один DHCP и два статических адреса. Теперь я могу заниматься разработкой встроенных систем и одновременно получать доступ к Интернету с помощью одной сетевой карты!

Brandon
источник
Это выглядит ... так ... Шэдди ...
Paquetp