Рейтинг:0

Стек Juniper EX4200 с PFSense DHCP (цикл обнаружения/предложения)

флаг cn

В настоящее время я борюсь со своим стеком коммутаторов Juniper.

Топология такая Топология

Клиентские порты в стеке настроены как тегированный доступ с dot1x (множественный запрашивающий) и переключаются в соответствии с аутентификацией Radius. Это работает без проблем, и VLAN назначаются правильно.

Два брандмауэра PFSense предоставляют один экземпляр DHCP для каждой VLAN в конфигурации аварийного переключения с IP-адресом CARP в той же подсети, что и VLAN. Таким образом, DHCP-ретранслятор не требуется.

Клиенты Windows могут получить IP-адрес и работать правильно, а клиенты Linux и загрузка PXE — нет.

Из tcpdump и Wireshark мы видим цикл DHCP Discover/Offer на клиентах Linux. Предложение достигает клиента, но клиент не отправляет DHCP-запрос. Мы пробовали несколько производных Linux и реализаций PXE, но безуспешно. Мы также сравнили захваты Wireshark из Windows и Linux, и абсолютно никакой разницы.

Любые предложения о том, как отследить проблему?

Заранее спасибо.

Обновлять:

Просто чтобы добавить больше информации.

Процесс назначения IP выглядит следующим образом:

  1. Клиент запускается (сетевой адаптер подключается к стеку коммутатора)
  2. Коммутатор аутентифицирует Клиента на Radius-сервере.
  3. Radius Server отвечает Accept и VLAN ID 940
  4. Стек коммутатора назначает VLAN 940 порту, к которому подключается клиент в режиме множественных запросов.
  5. Клиенты отправляют DHCP Discover
  6. DHCP-сервер (оба PFSense) отвечают предложением.
  7. Клиент отправляет запрос DHCP
  8. DHCP-сервер отправляет DHCP ACK

Итак, очевидно, 1-6 работает. Клиент назначается VLAN 940 через Radius Server, отправляет DHCP-обнаружение, оба PFSense имеют экземпляр DHCP, настроенный для VLAN 940 (диапазон IP-адресов 10.94.0.1-200/24), и они отправляют предложение.

Это tcpdump на одном из брандмауэров PFsense на случай, если это поможет.

18:55:25.538580 IP (tos 0x0, ttl 20, id 3, смещение 0, флаги [нет], proto UDP (17), длина 576)
        0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, запрос от 00:19:99:f7:3d:23 (oui Unknown), длина 548, xid 0x99f73d23, 18 секунд, флаги [ Трансляция] (0x8000)
              Клиент-Ethernet-адрес 00:19:99:f7:3d:23 (oui неизвестно)
              Расширения Vendor-rfc1048
                Волшебное печенье 0x63825363
                DHCP-сообщение, опция 53, длина 1: обнаружение
                Опция запроса параметров 55, длина 36:
                  Маска подсети, часовой пояс, шлюз по умолчанию, сервер времени
                  IEN-Name-Server, Domain-Name-Server, RL, Hostname
                  BS, доменное имя, SS, RP
                  ЭП, РСЗ, ТТЛ, БР
                  YD, YS, NTP, опция поставщика
                  Запрошенный IP, время аренды, идентификатор сервера, RN
                  RB, Vendor-Class, TFTP, BF
                  Опция 128, Опция 129, Опция 130, Опция 131
                  Опция 132, Опция 133, Опция 134, Опция 135
                МСЗ Вариант 57, длина 2: 1260
                GUID Option 97, длина 17: 0.72.178.216.253.99.205.17.226.190.154.221.134.53.14.178.59
                АРКА Вариант 93, длина 2:0
                Опция NDI 94, длина 3: 1.2.1
                Vendor-Class Option 60, длина 32: «PXEClient: Arch: 00000: UNDI: 002001»
                КОНЕЦ Опция 255, длина 0
                PAD Option 0, длина 0, встречается 200
    
    18:55:26.546900 IP (tos 0x10, ttl 128, id 0, смещение 0, флаги [нет], proto UDP (17), длина 334)
        10.94.0.253.bootps > 255.255.255.255.bootpc: [udp sum ok] BOOTP/DHCP, ответ, длина 306, xid 0x99f73d23, 18 секунд, флаги [трансляция] (0x8000)
              Ваш-IP 10.94.0.5
              IP-адрес сервера 10.91.0.1
              Клиент-Ethernet-адрес 00:19:99:f7:3d:23 (oui неизвестно)
              файл "pxelinux.0"
              Расширения Vendor-rfc1048
                Волшебное печенье 0x63825363
                DHCP-сообщение, опция 53, длина 1: предложение
                Параметр идентификатора сервера 54, длина 4: 10.94.0.253
                Опция аренды 51, длина 4: 600
                Маска подсети Вариант 1, длина 4: 255.255.255.0
                Вариант шлюза по умолчанию 3, длина 4: 10.94.0.254
                Вариант 6 сервера доменных имен, длина 8: 10.0.2.1,10.0.2.2
                Вариант доменного имени 15, длина 9: «domain.intra»
                Опция NTP 42, длина 4: 10.94.0.254
                Опция TFTP 66, длина 9: «10.91.0.1»
                КОНЕЦ Опция 255, длина 0
                
    18:55:26.547180 IP (tos 0x10, ttl 128, id 0, смещение 0, флаги [нет], proto UDP (17), длина 334)
        10.94.0.252.bootps > 255.255.255.255.bootpc: [udp sum ok] BOOTP/DHCP, ответ, длина 306, xid 0x99f73d23, 18 секунд, флаги [трансляция] (0x8000)
              Ваш-IP 10.94.0.104
              IP-адрес сервера 10.91.0.1
              Клиент-Ethernet-адрес 00:19:99:f7:3d:23 (oui неизвестно)
              файл "pxelinux.0"
              Расширения Vendor-rfc1048
                Волшебное печенье 0x63825363
                DHCP-сообщение, опция 53, длина 1: предложение
                Параметр идентификатора сервера 54, длина 4: 10.94.0.252
                Опция аренды 51, длина 4: 600
                Маска подсети Вариант 1, длина 4: 255.255.255.0
                Вариант шлюза по умолчанию 3, длина 4: 10.94.0.254
                Вариант 6 сервера доменных имен, длина 8: 10.0.2.1,10.0.2.2
                Вариант доменного имени 15, длина 9: «domain.intra»
                Опция NTP 42, длина 4: 10.94.0.254
                Опция TFTP 66, длина 9: «10.91.0.1»
                КОНЕЦ Опция 255, длина 0

Клиент видит то же самое, но просто игнорирует это. Это выглядит неправильно?

Это просто работает, если я делаю то же самое с виртуальной машиной Linux на коммутаторах на стороне сервера (где подключен сервер Radius). Поэтому я почти уверен, что проблема где-то в стеке коммутаторов Juniper.

Обновление 2:

Мое предположение о проблеме в стеке коммутаторов было верным. Кажется, что режим порта с тегированным доступом ведет себя не так, как должен. Переключение в режим порта «доступ» решило проблему. Но для меня это не имеет особого смысла, так как режим «доступа» не должен иметь возможность обрабатывать несколько запросов в разных VLAN, но, очевидно, он это делает.

Рейтинг:0
флаг za
Pat

Многие дистрибутивы Linux используют klibc ipconfig при настройке сетевых интерфейсов (учтите, что это другой инструмент, чем тот, который используется в Windows с тем же именем)

https://kernel.googlesource.com/pub/scm/libs/klibc/klibc/+/klibc-0.130/ipconfig/README

Пожалуйста, смотрите переменную

-c прототип    

который может быть указан как BOOTP или DHCP

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

При загрузке, т.е. Ubuntu, вы можете указать этот параметр, добавив IP=DHCP или же IP=BOOTP в командной строке ядра. В Debian все по-другому, и они используют ядро IP переменная для разных целей, в этом случае вы должны отредактировать загрузочный initrd и вручную изменить строку ipconfig в соответствующем скрипте (обычно /lib/live/boot/9990-networking.sh).

флаг cn
Привет. Спасибо за подсказку, но я думаю, что проблема где-то в конфигурации стека коммутаторов.
флаг za
Pat
Вы можете запустить неразборчивый захват Wireshark в зеркальный порт вашего коммутатора/ов, и вы должны увидеть весь трафик. Но если это работает для Windows и не работает для Linux, я не думаю, что виноват ваш коммутатор.

Ответить или комментировать

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