|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (18)
просмотр истории страницы... |
goto label1 {code} |
{info} {note} |
Многие коммутаторы умеют кешировать lease. Поэтому при отладке их нужно перезагружать. |
{info} {note} |
h2. Отладка |
# Настройте релей на коммутаторе и OPT82 # Временно для отладки, в учетной записи тестовому абоненту ставим привязку по MAC.(MAC адрес должен быть в формате 00:00:00:00:00:00) Галочку opt82 НЕ ставим. Эту опцию поставим после того как отладим прием opt82 опций от коммутатора. # Пытаемся получить адрес тестовым абонентом по мак привязке. # Смотрим запрос адреса в логе |
# Настройте на коммутаторе релей и OPT82; # В учётной записи абонента укажите MAC. |
{panel} {note} |
rm \-f /app/collector/var/lib/dhcpd/\* dhcpd.leases\~ chroot /app/collector/ /etc/init.d/dhcpd restart tail \-f /app/*/var/log/messages |
Не ставьте галочку opt82. Эту опцию поставим после того как отладим прием opt82 опций от коммутатора. |
{panel} {note} |
Если видим Aug 3 14:25:59 dhcpd: DHCPDISCOVER from 90:2b:34:14:75:48 {color:#ff0000}{*}via Leth1:*{color} network ISC: no free leases Значит релей не настроен или настроен неверно. При правильной настройке релея запрос будет приходить от ip адреса коммутатора(например 192.168.0.35): Aug 3 14:25:59 dhcpd: DHCPDISCOVER from 90:2b:34:14:75:48 {color:#ff0000}{*}via 192.168.0.35{*}{color}: network ISC: no free leases *Примечание:* Если в логе запросов нет, значит проблема сетевая, т.е. широковещательный сегмент не включает в себя вашего тестового абонента. В этом случае анализируем пакеты на предмет использования релея на коммутаторе: {panel} tcpdump \-nvvei any port 67 or port 68 {panel} {panel} tshark \-V \-ni any \-R "bootp.hw.mac_addr contains "MAC_ADDRESS"" {panel} Вывод вида: |
# Просмотрите лог dhcp сервера. В логе виден запрос на получение адреса и дальнейшая его обработка. DHCP сервер последовательно проходит по всем [типам коммутаторов|Добавление коммутаторов и их типов в биллинг] и разбирает DHCP указанными в них функциями. В конечном счёте адрес выдаётся по MAC адресу. |
{code} |
tcpdump: WARNING: Promiscuous mode not supported on the "any" device tcpdump: listening on any 12:47:02.633297 B 0:e:5e:a:ef:42 ip 394: 0.0.0.0.68 > 255.255.255.255.67: [no cksum] xid:0xb2a4df25 [|bootp] (DF) (ttl 32, id 28219, len 378) 12:47:03.178477 B 90:2b:34:14:75:48 ip 344: 0.0.0.0.68 > 255.255.255.255.67: xid:0x99b6d10d flags:0x8000 [|bootp] (ttl 128, id 14097, len 328) 12:47:06.178208 B 90:2b:34:14:75:48 ip 344: 0.0.0.0.68 > 255.255.255.255.67: xid:0x99b6d10d secs:768 flags:0x8000 [|bootp] (ttl 128, id 14107, len 328) 12:47:15.178663 B 90:2b:34:14:75:48 ip 344: 0.0.0.0.68 > 255.255.255.255.67: xid:0x99b6d10d secs:3072 flags:0x8000 [|bootp] (ttl 128, id 14127, len |
/app/collector/var/log/messages |
{code} |
Говорит о том, что адрес запрашивается без использования релея, броадкастом. При верно настроенном релее пакеты будут приходить юникастовые от ip адреса коммутатора на ip адрес сервера. # Проверить, что *DHCPOFFER* доходит до абонента 1) Смотрим лог /app/collector/var/log/messages \| grep \-i dhcpd 2) Если видим, что на запрос ip адреса *DHCPDISCOVER* биллинг отвечает *DHCPOFFER* и на этом dhcp диалог по этому абоненту заканчивается, значит *DHCPOFFER* до абонента от биллинга не доходит. |
Пример: #* aa:bb:cc:dd:ee:ff - MAC адрес клиента; #* 192.0.2.2 - адрес абонента в биллинге; #* 198.51.100.10 - адрес релэя; #* 198.51.100.20 - адрес биллинга. {code:title=лог 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 |
{code} |
Jan 17 12:50:09 carbonsoft dhcpd: DHCPDISCOVER from a8:f9:4b:aa:dd:dd via 192.168.0.35 Jan 17 12:50:09 carbonsoft dhcpd: DHCPOFFER on 10.0.4.189 to a8:f9:4b:aa:dd:dd via 192.168.0.35 |
# Убедитесь, что биллинг разберает данные из opt82 DHCP запроса верно; # Заполните поля opt82 учётной записи. Установите галочку opt82. Биллинг сгенерирует конфигурационный файл dhcpd. |
{code} |
Возможные причины: 1) С биллинга недоступен адрес RELAY агента. В данном примере это *192.168.0.35* Проверить можно командой ping 192.168.0.35 2) Если адрес RELAY агента доступен, значит проблема в сети дальше. Необходимо проследить путь пакета от биллинга до абонента по всем промежуточным хостам вплоть до абонента. # После этих действий обратитесь в техническую поддержку для помощи в настройке разбора полей opt82. Специалистам технической поддержки в заявке нужно будет сообщить: \- id абонента; \- vlan и порт в которые он включен на коммутаторе; \- В идеале сообщать точную модель и марку коммутатора, а также версию прошивки. *Примечание:* при настройке обратите внимание, чтоб [пул адресов|asrdocnew:Пулы IP-адресов] из которого вы отдаете адреса по dhcp не был зарезервирован для ручной раздачи. |
/app/collector/etc/dhcp/dhcpd.conf {code} В конфигурационном файле будет создан class и pull для каждой учётной записи с opt82. {code} 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>"; } {code} # Проверьте, что клиентская станция получает адрес. Видно, что былприменён тип коммутатора *Cisco2950*. {code} 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 {code} |