none
Проблема с DHCP (корпоративная сеть) RRS feed

  • Общие обсуждения

  • Настроили Windows Server 2012 R2 — DHCP (ver. 6.3), на котором создали два пула: 192.168.2.0 и 192.168.3.0
    В сети у нас есть два вилана. Во втором вилане — сеть 192.168.2.0, в третьем — 192.168.3.0, соответственно.
    В каждой сети настроен DHCP-relay. Во втором вилане ip-адрес DHCP-релея — 192.168.2.1, в третьем — 192.168.3.1.

    При включении компьютера в сеть 192.168.2.0, DHCP-клиент запрашивает ip-адрес и идет процесс DHCPDISCOVER - DHCPOFFER - DHCPREQUEST - DHCPACK. DHCP-сервер в поле GIADDR видит, что запрос пришел от DHCP-релея 192.168.2.1 и выдает ip-адрес из соответствующего пула, то есть компьютер получает ip-адрес 192.168.2.2. Далее, если мы подключаем этот же компьютер в сеть 192.168.3.0, то при включении 
    компьютер в запросе DHCPREQUEST потребует свой предыдущий ip-адрес — 192.168.2.2. DHCP-сервер при этом, получив запрос, не смотрит от какого DHCP-релея он пришел, то есть проигнорирует поле GIADDR и сразу отдаст требуемый ip. То есть компьютер, находясь в сети 192.168.3.0 получит ip 192.168.2.2. Если при этом в командной строке компьютера последовательно прописать ipconfig /release, ipconfig /renew, то компьютер начнет цепочку получения ip-адреса, с DHCPDISCOVER, но при этом в option 50 запросит опять все тот же 192.168.2.2. DHCP-сервер так же проигнорирует GIADDR и выдаст требуемый, неверный для этой подсети ip-адрес.

    Если до того, как компьютер станет запрашивать 192.168.2.2 забиндить этот адрес на DHCP-сервере, то сервак, поняв, что этот ip он предоставить не может, по всей видимости, задастся вопросом, а из какого пула собственно выдавать новый ip, тогда он проверит поле GIADDR и увидит там 192.168.3.1, найдет пул 192.168.3.0 и выдаст 192.168.3.2 

    Проблема видится  в неправильном отрабатывании логики процесса, которая описывается в документации:

    DHCPAck and DHCPNack

    When the DHCP server receives the DHCPRequest, the server compares the network ID of the client’s allocated IP address to the network ID of the relay IP address. Based on the result of that comparison, the server does one of the following:

    • If the two network IDs are the same and if the IP address is available and thus can be reallocated to the DHCP client, the DHCP server sends a DHCPAck to the IP address of the DHCP relay agent. When the DHCP relay agent receives the DHCPAck, it readdresses and sends the message to the DHCP client.
    • If the two network IDs are the same and if the IP address is not available and thus cannot be reallocated to the DHCP client, the DHCP server sends a DHCPNack to the DHCP relay agent. When the DHCP relay agent receives the DHCPNack, it readdresses and sends the message to the DHCP client. The DHCP client then restarts the IP address allocation process with a DHCPDiscover.
    • If the two network IDs are not the same, the DHCP client has moved to a different subnet, and the DHCP server sends a DHCPNack to the DHCP relay agent. When the DHCP relay agent receives the DHCPNack, it readdresses and sends the message to the DHCP client. The DHCP client then restarts the IP address allocation process by sending a DHCPDiscover message.

    Как это можно исправить?

    16 апреля 2014 г. 7:23

Все ответы

  • Здравствуйте Виталий,

    Из обсуждения внизу:

    how does pc know which dhcp scope to use?

    You can set up all the scopes for different subnets you want, but your DHCP server will only hand out an IP for a different subnet if the request comes through a router or a DHCP relay agent. This request will be a multi cast, the packet will contain the IP info from the subnet the request originated from and the DHCP server will hand out an address from the co-responding scope.

    If the DHCP request arrives as a broadcast, this means the requesting host is on the same subnet. The DHCP server will hand out an IP from a scope that handles it's own subnet.

    If you want different IP configurations for certian hosts on your own subnet, you will have to configgure options for Classes, then associate the host for a speciffic class using "ipconfig setclassid" from the commandline.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий. Не забывайте помечать сообщения как ответы и полезные, если они Вам помогли.

    17 апреля 2014 г. 7:16
    Модератор
  • Спасибо за ответ.

    Как я понял из вашего ответа, вы пишете о том, что DHCP-сервер выбирает пул из которого выдает IP адреса несколькими способами. Либо если получает широковещательный запрос из сети, либо вы пишите если получает multi cast запрос от релея. Позвольте вас поправить, запрос будет НЕ multi cast, а unicast.

    Если вы внимательно прочитаете описание проблемы, вы увидите, что к нашему DHCP-серверу запросы идут исключительно от DHCP-релеев. Мы не спрашиваем, как нам построить сеть. Мы просим помочь нам исправить существующую проблему. Приведу дополнительные описания проблемы со скриншотами.

    Смотрим с помощью снифера запрос DHCPDISCOVER

    http://i020.radikal.ru/1404/08/39a8447370b5.jpg

    Мы видим, что запрос идет unicast'ом от DHCP-relay(192.168.45.1), в option 50 хост запрашивает старый адрес (192.168.43.8)

    Смотрим ответ DHCPOFFER

    http://f-lite.ru/lfp/i062.radikal.ru/1404/1f/af4ce51b403b.jpg/htm

    DHCP-relay по прежнему - 192.168.45.1 но DHCP-сервер выдает запрашиваемый 192.168.43.8 не из той сети. В сети 192.168.45.0/24 НЕ ДОЛЖНО быть 192.168.43.8  С таким адресом хост в сети работать не будет.

    17 апреля 2014 г. 10:55
  • мы по прежнему ждем ответа. проблема не устранилась. 
    21 апреля 2014 г. 6:45
  • Поведение очень похоже на ошибку в сервере DHCP. В более старых версиях Windows Server ситуация с DHCP relay и перемещением компьютера между VLAN отрабатывалась корректно. Исправление для Windows Server 2012 R2 для DHCP Relay в MS KB отсутствует.

    Имеет смысл обратиться в официальную службу поддержки продуктов Microsoft.


    Слава России!

    21 апреля 2014 г. 7:40
  • Super Scope отсутствует?

    Сазонов Илья http://isazonov.wordpress.com/

    21 апреля 2014 г. 8:39
    Модератор
  • Поведение очень похоже на ошибку в сервере DHCP. В более старых версиях Windows Server ситуация с DHCP relay и перемещением компьютера между VLAN отрабатывалась корректно. Исправление для Windows Server 2012 R2 для DHCP Relay в MS KB отсутствует.

    Имеет смысл обратиться в официальную службу поддержки продуктов Microsoft.


    Слава России!

    Подскажите контакты по которым можно обратиться.
    21 апреля 2014 г. 10:18
  • Super Scope отсутствует?

    Сазонов Илья http://isazonov.wordpress.com/

    Проверяли и с суперобластью и без нее
    21 апреля 2014 г. 10:19
  • Ее не должно быть. У вас работает так будто она есть. Дамп DHCP коннфигурации выгрузите и проверьте.


    Сазонов Илья http://isazonov.wordpress.com/

    21 апреля 2014 г. 10:34
    Модератор
  • Простите, что лезу в Вашу ветку, но у меня абсолютно идентичная проблема.

    Удалось ли решить ее Вам? Если да, поделитесь, пожалуйста.

    13 апреля 2015 г. 3:40
  • Вы лучше свою тему создайте, опишите именно вашу конфигурацию и проблему, если нужно, то можете сослаться на похожие обсуждения.

    Сазонов Илья

    https://isazonov.wordpress.com/

    13 апреля 2015 г. 3:52
    Модератор
  • Попробуйте, таки, обновить сервер с DHCP последними обновлениями и вывести области из суперобласти. У меня, похоже, проблема была именно из за суперобласти.
    6 октября 2015 г. 6:16