9

У меня машина с 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?

6 ответов6

7

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

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

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

@echo off
set interface="Ethernet 2"
set extra_ip=10.0.0.33
set extra_mask=255.255.248.0

echo Setting %interface% back to DHCP
netsh int ipv4 set address name=%interface% source=dhcp
netsh int ipv4 set dnsservers name=%interface% source=dhcp

echo Waiting for IP to stabilize...
timeout /t 5

echo Getting current IP of %interface%
ipconfig > %temp%\ipconfig.txt
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "IPv4" ^| find /v "127.0"') do set _IP=%%a
set IP=%_IP:~1%
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "Subnet" ^| find /v "127.0"') do set _IP=%%a
set MASK=%_IP:~1%
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "Default" ^| find /v "127.0" ^| find /v "::" ') do set _IP=%%a
set GATE=%_IP:~1%
for /f "tokens=2 delims=:" %%a in ('type %temp%\ipconfig.txt ^| find "DNS Servers" ^| find /v "127.0"') do set _IP=%%a
set DNS1=%_IP:~1%

echo Setting IP Address, Subnet Mask and Default Gateway...
echo (IP %IP%, mask %MASK%, gw %GATE%)
netsh int ipv4 set address name=%interface% static %IP% %MASK% %GATE% gwmetric=1

timeout /t 5
echo Setting Primary DNS (%DNS1%)...
netsh int ipv4 set dnsserver name=%interface% static %DNS1% primary

echo Adding secondary IP...
netsh int ipv4 add address %interface% %extra_ip% %extra_mask%

timeout /t 5
echo.
echo New IP configuration:
ipconfig /all

del %temp\ipconfig.txt

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

3

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

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

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

3

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

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

2

Спасибо Сесил, это работает, вот что я сделал:

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

    интерфейс netsh ipv4 показать интерфейс

  2. Включить dhcpstaticipcoexistence:

    netsh interface ipv4 set interface interface = "имя интерфейса" dhcpstaticipcoexistence = включено

  3. Добавьте статический IP-адрес в ваш интерфейс

    netsh interface ipv4 добавить адрес "имя интерфейса" 192.168.x.xxx 255.255.255.0

  4. Используйте команду 'ipconfig /all', чтобы убедиться, что статический IP-адрес добавлен. Вы не можете сделать это из графического интерфейса.

1

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

netsh interface ipv4 add address “Local Area Connection” 10.x.y.z 255.255.255.0
0

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

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