LINUX.ORG.RU
ФорумAdmin

Потеря пакетов DHCP на неуправляемом коммутаторе

 


0

2

Добрый день.

Прошу помощи, т.к. у самого уже мысли кончились.

Схема простая: DHCP сервер <=> коммутатор с поддержкой Opt82 и DHCP relay <=> Неуправляемый коммутатор 8 портов <=> Потребители.

Проблема:
Если потребителей <= 3, то все нормально функционируют и нормально получают IP.
Вот трейс:

19:12:50.870634 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 610)
    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from a8:f9:4b:23:c2:0d, length 582, xid 0x441e2e1a, Flags [none]
          Client-Ethernet-Address a8:f9:4b:23:c2:0d
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Client-ID Option 61, length 7: ether a8:f9:4b:23:c2:0d
            Hostname Option 12, length 11: "eltex-nv102"
            Vendor-Class Option 60, length 36: "Eltex-NV102-fs_nv102_141110_0.201.10"
            MSZ Option 57, length 2: 576
            Parameter-Request Option 55, length 8:
              Subnet-Mask, Default-Gateway, Domain-Name-Server, Hostname
              Domain-Name, BR, NTP, Vendor-Option
            Agent-Information Option 82, length 32:
              Circuit-ID SubOption 1, length 4: ^@M-H^@^C
              Remote-ID SubOption 2, length 6: M-|M-zM-wM-?vM-,
              Unknown SubOption 9, length 16:
                0x0000:  0000 0cf8 0b01 0953 575f 4143 4345 5353
19:12:50.871140 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 342)
    10.10.155.1.67 > 10.0.5.3.68: BOOTP/DHCP, Reply, length 314, xid 0x441e2e1a, Flags [none]
          Your-IP 10.0.5.3
          Client-Ethernet-Address a8:f9:4b:23:c2:0d
          file "AMINET.txt"
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Offer
            Server-ID Option 54, length 4: 10.10.155.1
            Lease-Time Option 51, length 4: 300
            Subnet-Mask Option 1, length 4: 255.255.0.0
            Default-Gateway Option 3, length 4: 10.0.0.1
            Domain-Name-Server Option 6, length 4: 10.0.0.1
            NTP Option 42, length 4: 10.0.0.1
            Agent-Information Option 82, length 32:
              Circuit-ID SubOption 1, length 4: ^@M-H^@^C
              Remote-ID SubOption 2, length 6: M-|M-zM-wM-?vM-,
              Unknown SubOption 9, length 16:
                0x0000:  0000 0cf8 0b01 0953 575f 4143 4345 5353
19:12:50.873803 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 610)
    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from a8:f9:4b:23:c2:0d, length 582, xid 0x441e2e1a, Flags [none]
          Client-Ethernet-Address a8:f9:4b:23:c2:0d
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Request
            Client-ID Option 61, length 7: ether a8:f9:4b:23:c2:0d
            Hostname Option 12, length 11: "eltex-nv102"
            Vendor-Class Option 60, length 36: "Eltex-NV102-fs_nv102_141110_0.201.10"
            Requested-IP Option 50, length 4: 10.0.5.3
            Server-ID Option 54, length 4: 10.10.155.1
            Parameter-Request Option 55, length 8:
              Subnet-Mask, Default-Gateway, Domain-Name-Server, Hostname
              Domain-Name, BR, NTP, Vendor-Option
            Agent-Information Option 82, length 32:
              Circuit-ID SubOption 1, length 4: ^@M-H^@^C
              Remote-ID SubOption 2, length 6: M-|M-zM-wM-?vM-,
              Unknown SubOption 9, length 16:
                0x0000:  0000 0cf8 0b01 0953 575f 4143 4345 5353
19:12:50.874748 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 342)
    10.10.155.1.67 > 10.0.5.3.68: BOOTP/DHCP, Reply, length 314, xid 0x441e2e1a, Flags [none]
          Your-IP 10.0.5.3
          Client-Ethernet-Address a8:f9:4b:23:c2:0d
          file "AMINET.txt"
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: ACK
            Server-ID Option 54, length 4: 10.10.155.1
            Lease-Time Option 51, length 4: 300
            Subnet-Mask Option 1, length 4: 255.255.0.0
            Default-Gateway Option 3, length 4: 10.0.0.1
            Domain-Name-Server Option 6, length 4: 10.0.0.1
            NTP Option 42, length 4: 10.0.0.1
            Agent-Information Option 82, length 32:
              Circuit-ID SubOption 1, length 4: ^@M-H^@^C
              Remote-ID SubOption 2, length 6: M-|M-zM-wM-?vM-,
              Unknown SubOption 9, length 16:
                0x0000:  0000 0cf8 0b01 0953 575f 4143 4345 5353

Если же потребителей больше 3, то именно на неуправляемом коммутаторе теряется пакет Offer (ответ от сервера).
И на сервере бесконечно повторяются вот эти два пакета.

18:50:44.596551 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 610)
    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from a8:f9:4b:23:c2:0d, length 582, xid 0x7a039f5a, Flags [none]
          Client-Ethernet-Address a8:f9:4b:23:c2:0d
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Client-ID Option 61, length 7: ether a8:f9:4b:23:c2:0d
            Hostname Option 12, length 11: "eltex-nv102"
            Vendor-Class Option 60, length 36: "Eltex-NV102-fs_nv102_141110_0.201.10"
            MSZ Option 57, length 2: 576
            Parameter-Request Option 55, length 8:
              Subnet-Mask, Default-Gateway, Domain-Name-Server, Hostname
              Domain-Name, BR, NTP, Vendor-Option
            Agent-Information Option 82, length 32:
              Circuit-ID SubOption 1, length 4: ^@M-H^@^C
              Remote-ID SubOption 2, length 6: M-|M-zM-wM-?vM-,
              Unknown SubOption 9, length 16:
                0x0000:  0000 0cf8 0b01 0953 575f 4143 4345 5353
18:50:44.597057 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 342)
    10.10.155.1.67 > 10.0.5.3.68: BOOTP/DHCP, Reply, length 314, xid 0x7a039f5a, Flags [none]
          Your-IP 10.0.5.3
          Client-Ethernet-Address a8:f9:4b:23:c2:0d
          file "AMINET.txt"
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Offer
            Server-ID Option 54, length 4: 10.10.155.1
            Lease-Time Option 51, length 4: 300
            Subnet-Mask Option 1, length 4: 255.255.0.0
            Default-Gateway Option 3, length 4: 10.0.0.1
            Domain-Name-Server Option 6, length 4: 10.0.0.1
            NTP Option 42, length 4: 10.0.0.1
            Agent-Information Option 82, length 32:
              Circuit-ID SubOption 1, length 4: ^@M-H^@^C
              Remote-ID SubOption 2, length 6: M-|M-zM-wM-?vM-,
              Unknown SubOption 9, length 16:
                0x0000:  0000 0cf8 0b01 0953 575f 4143 4345 5353

Кстати если потребитель комп с виндой, то он также не может получить IP, но по таймауту примерно 60 сек. винда отправляет Discover с bootp flags: Broadcast и ей Offer также возвращается броадкастом и она всетаки получает IP.

Подскажите как мне исправить ситуацию.

Если оно не новое, то я бы начал с проверки блока питания коммутатора, а потом посмотрел на внутренности коммутатора на предмет вздутых/потекших конденсаторов.

Если беда с питанием, то подключение еще потребителей должно усугублять ситуацию.

vel ★★★★★
()

Если потребителей <= 3, то все нормально функционируют и нормально получают IP.

С разных портов коммутатора?

snaf ★★★★★
()
Ответ на: комментарий от snaf

С разных портов коммутатора?

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

Если беда с питанием, то подключение еще потребителей должно усугублять ситуацию.

Как только появляется четвертый потребитель проблема проявляется на всех устройствах.

Если оно не новое, то я бы начал с проверки блока питания коммутатора...

Вот тут то главный вопрос, у меня тестовый коммутатор ооочень старый (практически из мусорного ведра достал), на него можно грешить, но взял на пробу новенький SNR со всеми гиговыми портами, на нем таже проблема, правда по поводу количества потребителей с которого проявляется проблема я не уверен, но с пятью устройствами она точно есть.
На самом деле я больше грешу на адекватность конфигурации и работы DHCP сервера. Верно ли что он ответ отсылает юникастом когда у потребителя еще нет IP адреса?

StereoRu
() автор топика
Ответ на: комментарий от frob

Тоесть если до трех потредителей на порту DHCP сервер восприниммает нормально, то следовательно он работает и настроен верно. Верно?
Даже не знаю чем продолжить дебаг.
Замена маленького коммутатора врятли поможет, хотя можно попробовать. Затем наверно надо его заменить на чтото более производительное и показавшее на практике адекватность своей работы....

StereoRu
() автор топика
Ответ на: комментарий от StereoRu

А у этого «неуправляемого» вообще ничего никак не управляется?

frob ★★★★★
()

А показать /var/log/messages и /etc/dhcpd.conf? (или где у тебя лежат логи и конфиг dhcp)

Наугад могу предположить, что в конфиге dhcp у тебя для

Circuit-ID SubOption 1, length 4: ^@M-H^@^C
Remote-ID SubOption 2, length 6: M-|M-zM-wM-?vM-,

разрешено недостаточно адресов.

irr123
()
Ответ на: комментарий от irr123

А у этого «неуправляемого» вообще ничего никак не управляется?

Из элементов мониторинга только лампочки, из элементов управления только шнур питания. (очень похож на этот)

разрешено недостаточно адресов.

Но ведь до трех потребителей работает нормально.

А показать /var/log/messages и /etc/dhcpd.conf?

В логе бесконечно дублируются две строки. DHCPDISCOVER от потребителя всегда долетает до сервера, а вот ответ DHCPOFFER не всегда долетает до потребителя.

Mar 20 18:56:25 router dhcpd: DHCPDISCOVER from a8:f9:4b:23:c2:0d via vlan155
Mar 20 18:56:25 router dhcpd: DHCPOFFER on 10.0.5.3 to a8:f9:4b:23:c2:0d via vlan155

Это dhcp.conf

ddns-update-style none;
authoritative;
use-host-decl-names off;
default-lease-time 300;
max-lease-time 600;
get-lease-hostnames off;
allow bootp;

option routers                  10.0.0.1;
option subnet-mask              255.255.0.0;
option ntp-servers              10.0.0.1;
option domain-name-servers      10.0.0.1;

local-address 10.10.155.1;

on release {
    set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
    log(info, concat("##### IP release " , ClientIP));
}
on expiry {
    set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
    log(info, concat("##### IP expiry " , ClientIP));
}
on commit {
        if exists agent.remote-id {
                  set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
                  set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
                  set ClientPort = binary-to-ascii (10, 8, ".", option agent.circuit-id);
                  set ClientSwitch = binary-to-ascii(16, 8, ".", option agent.remote-id);
                  log(info, concat("##### IP: " , ClientIP, " Mac: ", ClientMac, " Port: ",ClientPort, " Switch: ",ClientSwitch));
        }
}

shared-network test
{
        class "v200" { match if ((binary-to-ascii(16, 8, ".", option agent.remote-id) = "fc.fa.f7.bf.76.ac") and binary-to-ascii(10, 8, ".", suffix(option agent.circuit-id,1)) = "3"); }

        subnet 10.0.0.0 netmask 255.255.240.0
        {
                option routers                  10.0.0.1;
                option subnet-mask              255.255.0.0;
                option ntp-servers              10.0.0.1;
                option domain-name-servers      10.0.0.1;

                pool { range 10.0.5.1 10.0.5.6; allow members of "v200"; }
#####################################################################################
                group {
                        option routers          		10.0.0.1;
                        option option-66 				"10.10.111.10";
						option subnet-mask              255.255.0.0;
						option ntp-servers              10.0.0.1;
						option domain-name-servers      10.0.0.1;

                        host router_100 { hardware ethernet b0:fa:eb:31:42:f4; fixed-address 10.0.5.7; }
                }

                group {
                        option routers          		10.0.0.1;
						option subnet-mask              255.255.0.0;
						option ntp-servers              10.0.0.1;
						option domain-name-servers      10.0.0.1;

                        host stb_200 { hardware ethernet a8:f9:4b:23:c2:0d; fixed-address 10.0.5.3; }
                }
        }

#####################################################################################
        subnet 10.10.155.0 netmask 255.255.255.0 { }
}

StereoRu
() автор топика

Перед тем как ломать голову, я бы просто просто взял из ближайшей мусорки другой свитч и проверил работу с ним.

thesis ★★★★★
()
Ответ на: комментарий от StereoRu

Грешить на коммутаторы сложно, потому адреса через них клиенты все-таки получаются, да и релей работает.

То что оферы до клиента не долетают, вот здесь я не уверен (чтобы точно убедиться стоит поснифить трафик), поэтому единственной разумной мыслью мне кажется расширить этот

pool { range 10.0.5.1 10.0.5.6; allow members of «v200»; }

диапазон до какого-нибуть стандартного вроде /28.

irr123
()
Ответ на: комментарий от irr123

Коллеги, всем откликнувшимся большое спасибо за помощь! Проблема решена.
Косяк был в домашнем роутере с китайскими корнями фирмы noname :-). Как только он появлялся в неуправляемом коммутаторе, то почему то перехватывал все DHCPOFFER на себя. Если поставить коммутатор за noname, когда noname работает в бридже, то все работает как часы.

StereoRu
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.