Отладка DHCP

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (30)

просмотр истории страницы
{note}

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

Проверьте, что dhcp-сервер [настроен|DHCP]. В примере использованы:
* *Сервер* - 198.51.100.10
* *Клиент* - 198.51.100.20

h3. DHCP в широковещательном домене

# Просмотрите трафик на сетевом интерфейсе настроенном на приём DHCP запросов:
{code}
tcpdump -pnnei eth0 port 67 or port 68
{code}
В примере показан запрос *Request* от релэя 198.51.100.10 на адрес биллинга 198.51.100.20;
Вывод команды будет выглядеть следующим образом. В примере показан законченный dhcp диалог.
{code}
14:00:57.468749 In ff:ff:ff:ff:ff:ff ethertype IPv4 (0x0800), length 383: 198.51.100.10.67 > 198.51.100.20.67: BOOTP/DHCP, Request from aa:bb:cc:dd:ee:ff, length 339
10:37:00.623329 08:00:27:97:c8:3c > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 350: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 08:00:27:97:c8:3c, length 308
10:37:00.628647 08:00:27:ee:21:c8 > 08:00:27:97:c8:3c, ethertype IPv4 (0x0800), length 342: 198.51.100.10.67 > 198.51.100.20.68: BOOTP/DHCP, Reply, length 300
10:37:00.632202 08:00:27:97:c8:3c > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 08:00:27:97:c8:3c, length 300
10:37:00.632403 08:00:27:ee:21:c8 > 08:00:27:97:c8:3c, ethertype IPv4 (0x0800), length 342: 198.51.100.10.67 > 198.51.100.20.68: BOOTP/DHCP, Reply, length 300
{code}
Если в выводе нет запросов *Request*, значит они не доходят до интерфейса биллинга. Проверьте настройки вашей сети.
Если вывод команды пуст, значит пакеты не доходят до интерфейса биллинга. Проверьте настройки вашей сети.
{info}
Если в широковещательном домене несколько dhcp клиентов, удобно отфильтровать пакеты тестовой станции по mac адресу:
{code}
tcpdump -pnnei eth0 '(port 67 or port 68) and ether host 08:00:27:97:c8:3c'
{code}
{info}
# Просмотрите запрос адреса в логе DHCP сервера:
#* Удалите данные по выданным адресам, чтобы они были взяты из конфигурационного файла:
rm -f /app/collector/var/lib/dhcpd/*
{code}
#* Перезапустите DHCP сервер:
{code}
chroot /app/collector/ service dhcpd restart
{code}
#* Проследите за логом DHCP сервера:
{code}
tail -f /app/collector/var/log/messages
{code}
# Варианты записей лога:
#* Запрос пришел из широковещательного сегмента через eth0. Такая ситуация верна, если биллинг находится в одном широковещательном сегменте с абонентами.
#* Законченный dhcp диалог в логе сервера выглядит так:
{code}
Aug 3 14:25:59 dhcpd: DHCPDISCOVER from aa:bb:cc:dd:ee:ff via eth0: network ISC: no free leases
Jul 12 10:30:11 localhost dhcpd: DHCPDISCOVER from 08:00:27:97:c8:3c (windows07) via eth0
Jul 12 10:30:11 localhost dhcpd: DHCPOFFER on 198.51.100.20 to 08:00:27:97:c8:3c (windows07) via eth0
Jul 12 10:30:11 localhost dhcpd:
Jul 12 10:30:11 localhost dhcpd: DHCPREQUEST for 198.51.100.20 (198.51.100.10) from 08:00:27:97:c8:3c (windows07) via eth0
Jul 12 10:30:11 localhost dhcpd: DHCPACK on 198.51.100.20 to 08:00:27:97:c8:3c (windows07) via eth0
{code}
#* Запрос пришел с IP адреса коммутатора. Такая ситуация верна, если вы настроили релэй на коммутаторе.
{code}
Aug 3 14:25:59 dhcpd: DHCPDISCOVER from aa:bb:cc:dd:ee:ff via 198.51.100.10: network ISC: no free leases
{code}
# Проверьте, что *Offer* *DHCPOFFER* доходит до абонента. То есть абонент получает выданный адрес.
## Посмотрите лог DHCP сервера:
{code}
tail -f /app/collector/var/log/messages | fgrep -i dhcpd
{code}
## Если видим, что на запрос IP адреса DHCPDISCOVER биллинг отвечает DHCPOFFER и на этом dhcp диалог по этому абоненту заканчивается и начинается снова, значит DHCPOFFER до абонента от биллинга не доходит.
{code}
Jan 17 12:50:09 carbonsoft dhcpd: DHCPDISCOVER from aa:bb:cc:dd:ee:ff via 192.168.0.35
Jan 17 12:50:09 carbonsoft dhcpd: DHCPOFFER on 10.0.4.189 to aa:bb:cc:dd:ee:ff via 192.168.0.35
Jul 12 10:30:11 localhost dhcpd: DHCPDISCOVER from 08:00:27:97:c8:3c (windows07) via eth0
Jul 12 10:30:11 localhost dhcpd: DHCPOFFER on 198.51.100.20 to 08:00:27:97:c8:3c (windows07) via eth0
Jul 12 10:31:00 localhost dhcpd: DHCPDISCOVER from 08:00:27:97:c8:3c (windows07) via eth0
Jul 12 10:31:00 localhost dhcpd: DHCPOFFER on 198.51.100.20 to 08:00:27:97:c8:3c (windows07) via eth0
{code}
## Возможные причины:
### С биллинга недоступен адрес RELAY агента. В данном примере это 192.168.0.35
Проверить можно командой:
#* На промежуточном коммутаторе настроен dhcp-snooping;
#* Проблема в настройках клиентской станции.

h3. DHCP-relay

Отладка проходит так же, как в широковещательном домене. Нужно убедиться, что relay доступен по IP для биллинга.

h3. Возможные ошибки

h4. ignored (unknown subnet)

{code:title=лог /app/collector/var/log/messages}
Oct 7 07:02:04 Optimaset dhcpd: DHCPREQUEST for 10.90.163.133 from b0:be:76:6a:b3:55 via 10.90.163.129: ignored (unknown subnet).
{code}

Ошибка может возникать при выдаче IP-адреса абоненту, который подключен через dhcp-relay.

Требуется проверить, что в файле конфигурации DHCP */app/collector/etc/dhcp/dhcpd.conf* есть запись об этой подсети.
{code:title=Запрос для проверки}grep '10.90.163.128' /app/collector/etc/dhcp/dhcpd.conf{code}
Если записи нет в списке, а в *http://ip-биллинга:8081/settings/collector/dhcp_subnets/* запись существует, требуется изменить, например, dns и нажать кнопку "Сохранить" внизу страницы. После этого вновь убедиться, что конфигурационный файл dhcp сервера создан корректно, со всеми сетями.

h4. unknown network segment

{code:title=лог /app/collector/var/log/messages}
Jan 10 19:27:19 carbon dhcpd: DHCPDISCOVER from 34:0a:98:88:7a:d8 via 10.10.10.1: unknown network segment
{code}
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
{code}
### Если адрес RELAY агента доступен, значит проблема в сети дальше. Необходимо проследить путь пакета от биллинга до абонента по всем промежуточным хостам вплоть до абонента.

{note}
При настройке обратите внимание, чтоб пул адресов из которого вы отдаете адреса по dhcp не был зарезервирован для ручной раздачи.
{note}
Ошибка может возникать при выдаче IP-адреса абоненту, который подключен через dhcp-relay или запрос проходит несколько релеев.

Убедитесь, что для IP релея, с которого поступает запрос (в примере 10.10.10.1) заведена подсеть. Можно добавить подсеть только на IP релея, например "10.10.10.1/32", если адреса для абонентов принаджежат другой подсети.

h2. Отладка opt82

# Для исключения сетевых проблем проведите [отладку получения IP адреса|Отладка DHCP#Отладка получения IP адреса];
# Проверьте, что *отключена* опция [OPT 82. Создавать статические mac привязки вместо vlan+port|DHCP#Настройка Option 82];
# Настройте на коммутаторе релей и OPT82;
# В учётной записи абонента укажите MAC.
{note}
Не ставьте галочку opt82. Эту опцию поставим после того как отладим прием opt82 от коммутатора.
Галочку opt82 оставьте *пустой*. Поставим её после того, как отладим прием opt82 от коммутатора.
{note}
# Просмотрите лог dhcp сервера. В логе виден запрос на получение адреса и дальнейшая его обработка. DHCP сервер последовательно проходит по всем [типам коммутаторов|Добавление коммутаторов и их типов в биллинг] и разбирает DHCP указанными в них функциями. В конечном счёте адрес выдаётся по MAC адресу.