Короткий ответ

Клиент берёт шлюз из DHCP option 3 (router). Если в ipconfig /all Default Gateway 192.168.0.1 или 10.0.10.3 вместо 10.0.10.1 — либо scope настроен неверно, либо Ack пришёл от чужого сервера. Не прописывайте статику на 50 ПК. Исправьте option 3, уберите rogue, renew.

DNS option 006 смотрите сразу: часто оба кривые вместе.

Симптомы и как отличить

  • Адрес из 10.0.10.0/24, шлюз нет;
  • шлюз из другой подсети (маршрут сразу broken);
  • часть ПК правильный 10.0.10.1, часть нет — два сервера.

Отличия: нет адреса — 169.254 или пустой scope. Шлюз верный, интернет нет — NAT/DNS.

Возможные причины

  1. В scope Router = неверный IP.
  2. Политика/класс DHCP переопределяет option 3.
  3. Rogue: роутер «DHCP server = LAN» из коробки.
  4. Relay подставляет другой giaddr/scope.
  5. Резервация с собственными option.
  6. netplan + DHCP + ручной gateway одновременно.
  7. Второй VLAN helper на этот broadcast.

Диагностика

1. Что получил клиент

ipconfig /all
Get-NetIPConfiguration | Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGateway, DnsServer
nmcli device show
resolvectl status
ip route | grep default

Зафиксируйте: IP, mask, gw, DNS, DHCP Server.

2. Кто DHCP Server

Поле DHCP Server в ipconfig /all. Это должен быть 10.0.10.2 (или ваш официальный). Чужой 192.168.0.1 — rogue или не тот VLAN.

ipconfig /all
Get-DhcpServerv4Lease -ComputerName DC01 -ScopeId 10.0.10.0 | Where-Object IPAddress -eq '10.0.10.10'

Аренды на DC нет, а адрес есть — Ack от другого.

3. Option на официальном сервере

Get-DhcpServerv4OptionValue -ComputerName DC01 -ScopeId 10.0.10.0
Get-DhcpServerv4OptionValue -ComputerName DC01 -ScopeId 10.0.10.0 -OptionId 3
Get-DhcpServerv4OptionValue -ComputerName DC01 -ScopeId 10.0.10.0 -OptionId 6

Router должен быть 10.0.10.1, DNS 10.0.10.2.

4. Два Offer

sudo tcpdump -n -i eth0 udp port 67 or port 68

На Windows-клиенте: ipconfig /release затем /renew в окне захвата. Два Offer — конкурирующий сервер. MAC источника Offer — на CAM.

5. Ubuntu netplan конфликт

# плохо: dhcp4 true И gateway4 одновременно в старых схемах

Смотрите netplan get. Ручной via + DHCP default = два default, метрика решает, «неверный шлюз» на вид.

Решение

Сценарий A. Option 3 в scope

Поставьте 10.0.10.1. Клиентам renew (или ждите lease). Можно сократить lease на время миграции, не до 1 минуты на 2000 хостов.

Set-DhcpServerv4OptionValue -ComputerName DC01 -ScopeId 10.0.10.0 -OptionId 3 -Value 10.0.10.1

Проверьте политики, которые бьют scope.

Сценарий B. Rogue

Отключите DHCP на домашнем роутере/Hyper-V Default Switch в этом VLAN. Snooping: trust только uplink к 10.0.10.2. Не оставляйте «временно» второй пул.

Сценарий C. Relay/не тот scope

Helper на SVI VLAN 10 должен указывать на сервер, scope = 10.0.10.0. Неверный giaddr выдаст чужую сеть и чужой router option.

Сценарий D. Клиент не отпускает старый lease

ipconfig /release
ipconfig /renew
sudo dhclient -r eth0
sudo dhclient -v eth0

Сценарий E. Статика шлюза в NIC

Верните «шлюз автоматически». На Ubuntu уберите ручной default из netplan при dhcp4: true.

6. Один Ack — один виновник

Пока в tcpdump два Offer, не спорьте, «какой шлюз правильный в документации». Клиент возьмёт кто ответил быстрее. На проблемном ПК ipconfig /all: DHCP Server, Default Gateway, DNS. DHCP Server ≠ 10.0.10.2 — rogue или не тот VLAN. Если сервер официальный, а gw ≠ 10.0.10.1 — option 3/политика/резервация.

Get-DhcpServerv4OptionValue -ComputerName DC01 -ScopeId 10.0.10.0
Get-DhcpServerv4Reservation -ComputerName DC01 -ScopeId 10.0.10.0 |
  Where-Object IPAddress -eq '10.0.10.50'

Резервация с собственным router перебивает scope. Relay: неверный giaddr выдаст чужой scope и чужой option 3 — с точки зрения ПК «DHCP врёт», хотя виноват helper. Ubuntu netplan с dhcp4: true и ручным default даёт два default; метрика выбирает «не тот». ICS на соседнем Windows в VLAN — свой DHCP. После исправления option 3 сначала убедитесь, что 10.0.10.1 отвечает, иначе массовый renew отрежет офис. Не кладите два IP в option 3 вместо VRRP VIP. Проверка: три ПК после renew, один tcpdump с одним Offer, Find-NetRoute 1.1.1.1 via 10.0.10.1.

Связка option 3 и option 6: часто чинят только DNS, оставляя gw 192.168.0.1. Тогда «интернет появился у админа со статикой» и не появился у DHCP-клиентов. Проверяйте оба option одним выводом Get-DhcpServerv4OptionValue. Гостевой VLAN может легитимно иметь другой router — не ломайте его, правя corp scope. Телефоны с Vendor class — отдельный router в voice VLAN, это не баг corp DHCP. После уничтожения rogue не забудьте snooping trust только на uplink к 10.0.10.2, иначе завтра тот же роутер вернётся. Клиентам с длинным lease дайте время или принудительный renew в окно. Статика шлюза на одном VIP-сервере допустима; на двадцати ПК — нет. Проверка с Ubuntu: ip route | grep default должен показывать один via 10.0.10.1. Два default после netplan — недоделанный сценарий E.

Как проверить, что проблема устранена

ipconfig /renew
Get-NetIPConfiguration
ping -n 4 10.0.10.1
Find-NetRoute -RemoteIPAddress 1.1.1.1
nslookup contoso.example 10.0.10.2

Default 10.0.10.1, DNS 10.0.10.2, один Offer в tcpdump. Несколько ПК после renew.

Если не помогло

  • Option 3 верный, но маска option 1 кривая.
  • Класс Vendor: телефоны берут другой router — нормально, если voice VLAN.
  • Split DNS при верном шлюзе.
  • Метрика VPN ниже default LAN.

Профилактика

  • DHCP snooping, один официальный сервер (+failover пара с одним scope).
  • Ревью option 3/6 при каждом изменении scope.
  • Запрет DHCP на пользовательских роутерах (port ACL).
  • Мониторинг: default gateway клиентов != 10.0.10.1.

FAQ

Можно ли прописать шлюз статически и оставить DHCP только для IP?

Да, но это обход. Следующий ПК снова получит кривой option 3. Чините сервер.

Два значения option 3 — балансировка?

Клиент обычно берёт первое. Не кладите два шлюза «для HA» в option 3 вместо VRRP VIP 10.0.10.1.

Почему DNS правильный, шлюз нет?

Разные option. Чините 3, не flushdns.

ICS на Windows в том же VLAN?

Internet Connection Sharing поднимает свой DHCP. Выключите ICS на «добром» ПК.

Нужно ли reboot после смены option 3?

Нет, renew достаточно. Reboot — если NIC в странном состоянии, не как ритуал.