Отладка DHCP

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы
Время выполнения инструкции: 20-30 минут

Организация постоянных пакетов с запросом адреса

В Windows создать bat файл с содержимым:

:label1
ping \-n 60 127.0.0.1
ipconfig /release *
ipconfig /renew
goto label1
Многие коммутаторы умеют кешировать lease. Поэтому при отладке их нужно перезагружать.

Отладка получения IP адреса

  1. Просмотрите трафик на сетевом интерфейсе настроенном на приём DHCP запросов:
    tcpdump -pnnei eth0 port 67 or port 68
    

    В примере показан запрос Request от релэя 198.51.100.10 на адрес биллинга 198.51.100.20;

    14:00:57.468749  In aa:bb:cc:dd:ee:ff ethertype IPv4 (0x0800), length 383: 198.51.100.10.67 > 198.51.100.20.67: BOOTP/DHCP, Request from 48:8f:5a:f2:f1:a1, length 339
    

    Если в выводе нет запросов Request, значит они не доходят до интерфейса биллинга. Проверьте настройки вашей сети.

  2. Просмотрите запрос адреса в логе DHCP сервера:
    • Удалите данные по выданным адресам, чтобы они были взяты из конфигурационного файла:
      rm -f /app/collector/var/lib/dhcpd/*
      
    • Перезапустите DHCP сервер:
      chroot /app/collector/ service dhcpd restart
      
    • Проследите за логом DHCP сервера:
      tail -f /app/collector/var/log/messages
      
  3. Варианты записей лога:
    • Запрос пришел из широковещательного сегмента через eth0. Такая ситуация верна, если биллинг находится в одном широковещательном сегменте с абонентами.
      Aug 3 14:25:59 dhcpd: DHCPDISCOVER from aa:bb:cc:dd:ee:ff via eth0: network ISC: no free leases
      
    • Запрос пришел с IP адреса коммутатора. Такая ситуация верна, если вы настроили релэй на коммутаторе.
      Aug 3 14:25:59 dhcpd: DHCPDISCOVER from aa:bb:cc:dd:ee:ff via 198.51.100.10: network ISC: no free leases
      
  4. Проверьте, что Offer доходит до абонента. То есть абонент получает выданный адрес.
    1. Посмотрите лог DHCP сервера:
      /app/collector/var/log/messages | fgrep -i dhcpd
      
    2. Если видим, что на запрос IP адреса DHCPDISCOVER биллинг отвечает DHCPOFFER и на этом dhcp диалог по этому абоненту заканчивается, значит DHCPOFFER до абонента от биллинга не доходит.
      Jan 17 12:50:09 carbonsoft dhcpd: DHCPDISCOVER from aaa:bb:cc:dd:ee:ff via 192.168.0.35
      Jan 17 12:50:09 carbonsoft dhcpd: DHCPOFFER on 10.0.4.189 toaa:bb:cc:dd:ee:ff via 192.168.0.35
      

      Возможные причины:
      С биллинга недоступен адрес RELAY агента. В данном примере это 192.168.0.35
      Проверить можно командой:

      ping 192.168.0.35 -c 4
      PING 192.168.0.35 (192.168.0.35) 56(84) bytes of data.
      --- 192.168.0.35 ping statistics ---
      4 packets transmitted, 0 received, 100% packet loss, time 13007ms
      

      Если адрес RELAY агента доступен, значит проблема в сети дальше. Необходимо проследить путь пакета от биллинга до абонента по всем промежуточным хостам вплоть до абонента.

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

Отладка opt82

  1. Проверьте, что отключена опция OPT 82. Создавать статические mac привязки вместо vlan+port;
  2. Настройте на коммутаторе релей и OPT82;
  3. В учётной записи абонента укажите MAC.
    Не ставьте галочку opt82. Эту опцию поставим после того как отладим прием opt82 от коммутатора.
  4. Просмотрите лог dhcp сервера. В логе виден запрос на получение адреса и дальнейшая его обработка. DHCP сервер последовательно проходит по всем типам коммутаторов и разбирает DHCP указанными в них функциями. В конечном счёте адрес выдаётся по MAC адресу.
    /app/collector/var/log/messages
    

    Пример:

    • aa:bb:cc:dd:ee:ff - MAC адрес клиента;
    • 192.0.2.2 - адрес абонента в биллинге;
    • 198.51.100.10 - адрес релэя;
    • 198.51.100.20 - адрес биллинга.
      лог DHCP сервера
      May 19 14:01:32 TestBill dhcpd: RAW:: Lease for 192.0.2.2agent.circuit-id txt=
      May 19 14:01:32 TestBill dhcpd:  agent.circuit-id bin8=0 100 0 7 1
      May 19 14:01:32 TestBill dhcpd:  agent.remote-id txt=<E0><E8><E6>#036#005k
      May 19 14:01:32 TestBill dhcpd:  agent.remote-id bin8=224 232 230 30 5 107
      May 19 14:01:32 TestBill dhcpd: binary-to-ascii: length of buffer 1 not a multiple of width 2!
      May 19 14:01:32 TestBill dhcpd: PARS_ALTER:: Lease for 192.0.2.2 SWIP=<E6>#036#005k VLAN=7 PORT=1 PARAM=none MAC=none GPON_MODEM_PORT=none SVLAN=none
      May 19 14:01:32 TestBill dhcpd: PARS_SNR2940:: Lease for 192.0.2.2 SWIP=198.51.100.10 VLAN=100 PORT= PARAM=none MAC=none GPON_MODEM_PORT=none SVLAN=none
      May 19 14:01:32 TestBill dhcpd: PARS_SNR2950:: Lease for 192.0.2.2 SWIP=<E0><E8><E6>#036#005k VLAN=#001 PORT= PARAM=none MAC=none GPON_MODEM_PORT=none SVLAN=none
      May 19 14:01:32 TestBill dhcpd: PARS_ELTEX_LTE2:: Lease for 192.0.2.2 SWIP=none VLAN=
      May 19 14:01:32 TestBill dhcpd: PARS_Cisco2950:: Lease for 192.0.2.2 SWIP=none VLAN=7 PORT=1 PARAM=none MAC=aa:bb:cc:dd:ee:ff GPON_MODEM_PORT=none SVLAN=none
      May 19 14:01:32 TestBill dhcpd: DHCPREQUEST for 192.0.2.2 (198.51.100.20) from aa:bb:cc:dd:ee:ff via 198.51.100.10
      May 19 14:01:32 TestBill dhcpd: DHCPACK on 192.0.2.2 to aa:bb:cc:dd:ee:ff via 198.51.100.10
      
  5. Убедитесь, что биллинг разберает данные из opt82 DHCP запроса верно;
  6. Заполните поля opt82 учётной записи. Установите галочку opt82. Биллинг сгенерирует конфигурационный файл dhcpd.
    /app/collector/etc/dhcp/dhcpd.conf
    

    В конфигурационном файле будет создан class и pull для каждой учётной записи с opt82.

            class "match_vlan_0_port_2_ip_198.51.100.10__opt82_param_aa:bb:cc:dd:ee:ff_gpon_modem_port_NULL_svlan_NULL_hw_serial_<null>" {
                    match if ((binary-to-ascii(16, 8, ":", option agent.remote-id) = "aa:bb:cc:dd:ee:ff"));
            }
    
            pool {
                    range 192.0.2.2;
                    allow members of "match_vlan_0_port_2_ip_198.51.100.10_opt82_param_aa:bb:cc:dd:ee:ff_gpon_modem_port_NULL_svlan_NULL_hw_serial_<null>";
            }
    
    
  7. Проверьте, что клиентская станция получает адрес. Видно, что был применён тип коммутатора Cisco2950.
    May 19 15:34:30 Avetel dhcpd: DHCPREQUEST for 192.0.2.2 (198.51.100.20) from aa:bb:cc:dd:ee:ff (Cisco2950) via 198.51.100.10
    May 19 15:34:30 Avetel dhcpd: DHCPACK on 192.0.2.2 to aa:bb:cc:dd:ee:ff (Cisco2950) via 198.51.100.10
    
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.