- Как посмотреть, что делает DHCP-клиент?
- 3 ответа 3
- ISC-DHCPd + Syslog ( Простейшая настройка журналирования DHCP-сервера в Linux. )
- Заметки и комментарии к публикации:
- How to see what DHCP client does?
- 3 Answers 3
- Where are DHCP logs Linux?
- How do I monitor DHCP logs?
- Where is the syslog conf file?
- What is DHCP server logging?
- What can I do with DHCP server logs?
- What are the parameters of a DHCP server?
Как посмотреть, что делает DHCP-клиент?
В случае, если есть существенные различия между Linux: я заинтересован в Debian 8.1 (минимальная установка по умолчанию amd64).
3 ответа 3
DHCP-клиент ISC обычно называется dhclient в большинстве дистрибутивов Linux. От man dhclient :
Клиент обычно не выводит выходные данные во время своей последовательности запуска. Это может быть сделано для генерации подробных сообщений, отображающих события последовательности запуска, пока он не получит адрес, предоставив аргумент командной строки -v. В любом случае клиент регистрирует сообщения, используя средство syslog(3).
Есть два возможных способа прочитать системный журнал. В большинстве систем, которые используют systemd, вы должны использовать journalctl , тогда как cat /var/log/syslog подходит для систем, в которых все еще используется традиционная система инициализации.
Поэтому, если ваша система использует средства ведения журнала systemd, вы можете использовать journalctl | grep -Ei ‘dhcp’ для получения логов DHCP-клиента. В противном случае введите cat /var/log/syslog | grep -Ei ‘dhcp’ .
Вот как обычно выглядит мой журнал DHCP-клиента:
Jul 20 14:17:39 trueclient1 NetworkManager[2622]: (wlan1): canceled DHCP transaction, DHCP client pid 3325 Jul 20 14:17:42 trueclient1 NetworkManager[2622]: Activation (wlan1) Beginning DHCPv4 transaction (timeout in 45 seconds) Jul 20 14:17:42 trueclient1 dhclient: Internet Systems Consortium DHCP Client 4.2.2 Jul 20 14:17:42 trueclient1 dhclient: For info, please visit https://www.isc.org/software/dhcp/ Jul 20 14:17:42 trueclient1 NetworkManager[2622]: (wlan1): DHCPv4 state changed nbi -> preinit Jul 20 14:17:42 trueclient1 dhclient: DHCPREQUEST on wlan1 to 255.255.255.255 port 67 Jul 20 14:17:42 trueclient1 dhclient: DHCPACK from 10.8.8.1 Jul 20 14:17:42 trueclient1 NetworkManager[2622]: (wlan1): DHCPv4 state changed preinit -> reboot
ISC-DHCPd + Syslog ( Простейшая настройка журналирования DHCP-сервера в Linux. )
OS: Linux Debian 6/7/8/9.
Application: ISC-DHCPd, Syslog и Logrotate.
Задача: наладить сбор сообщений о событиях обслуживания сервером клиентских DHCP-запросов в отдельном журнальном файле.
Используемый в Linux и BSD сервер автоматизации выдачи сетевых настроек «ISC DHCPd» (далее DHCPd) старенький и местами странно отсталый. Американский «Internet Systems Consortium» выпустил его первую стабильную версию в конце 1997 года, прошли десятилетия, в 2017 году мы уже пользуемся четвёртой версий, а средств управления без перезапуска этим сервисом нет, как отсутствует и поддержка возможности направить сообщения о событиях в произвольный файл. За двадцать лет важнейший и привычный всем функционал так и не добавили — но альтернативы нет, и мы продолжаем жить с тем, что неудобно, но работает.
По умолчанию весь поток сообщений о взаимодействии с клиентами DHCPd отправляет в подсистему журналирования «syslog» несущей операционной системы. Казалось бы, пусть себе шлёт их, куда захочет. В общем, пусть бы оно и так, но для сети в пару десятков тысяч пользователей поток сообщений льётся так обильно, что полностью забивает собой всё остальное — можно считать, что об остальных системных событиях вы уже не узнаете.
Определение параметров журналирования в DHCPd.
Единственное, что можно сделать в конфигурационном файле, так это указать «метку», по которой в дальнейшем можно будет вылавливать интересующие нас сообщения в общей массе:
.
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
.
Не обязательно использовать метку «local7», но она фигурирует в примере от разработчиков, и не конфликтует с метками других распространённых сервисов — так что проще оставить «по умолчанию».
Как я упоминал выше, применение параметров без полного перезапуска DHCPd не поддерживается, так что особо важно предварительно проверить, не допущено ли ошибок в конфигурации такового:
На данный момент три приложения системы журналирования в Linux актуальны и используются: «Syslog», «RSyslog» и «Syslog-NG» — рассмотрим способы обработки сообщений DHCPd в каждой из них.
Сбор событий DHCPd в отдельном файле посредством «Syslog».
Старая и простая подсистема, в которой всё с интересующей нас меткой просто отправляется в файл, после чего обработка пакета данных завершается:
Сбор событий DHCPd в отдельном файле посредством «RSyslog».
В этой, пришедшем на замену «Syslog»-у, подсистеме журналирования, по умолчанию обработка пакета данных продолжается даже после совпадения с критерием фильтрации — явно останавливаем процесс операндом «& ~»:
Сбор событий DHCPd в отдельном файле посредством «Syslog-NG».
В наиболее современном «Syslog-NG» управление потоками гибче, но существенно сложнее — приходится не только вылавливать нужное, но и отсекать это же там, где оно помешает:
.
# Указываем целевой файл журнала
destination d_dhcpd { file(«/var/log/dhcpd.log»); };
# Описываем критерии фильтрации (можно по «метке», но эффективнее по наименованию испускающего событие приложению)
// filter f_dhcpd { facility(local7); };
filter f_dhcpd { program(‘^dhcpd$’); };
# Добавляем в некоторые имеющиеся фильтры указания исключать из них уже захваченное фильтром «f_dhcpd»:
filter f_debug { . and not filter(f_dhcpd); };
filter f_error { . and not filter(f_dhcpd); };
filter f_messages { . and not filter(f_dhcpd); };
filter f_syslog { . and not filter(f_dhcpd); };
# Формируем цепочку обработчиков, которая обслуживает поток сообщений DHCPd
log { source(s_src); filter(f_dhcpd); destination(d_dhcpd); };
.
Настройка ротации файлов журнала.
Конечно же, если поддержка вывода журнала событий в DHCPd отсутствует, то усечения и ротация такового тоже не предусмотрена. Исправим это:
/var/log/dhcpd.log {
weekly
rotate 7
size 100M
missingok
notifempty
compress
delaycompress
copytruncate
su root root
}
Проверяем корректность настройки ротации:
Усечение и ротация файлов журнала событий DHCPd практически необходима — в сети с десятком тысяч пользователей таковой разрастается до сотни мегабайт за один день. Неоднократно видел серверы, где DHCPd насыпал два гигабайта в журнал и рост файла прекращался из-за ограничений файловой системы.
Поблагодарить автора ( сделайте свой денежный вклад в хорошее настроение )
Заметки и комментарии к публикации:
Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )
How to see what DHCP client does?
In case there are relevant differences between Linuxes: I am interested in Debian 8.1 (default minimal installation amd64).
You’ll need to be more specific than «the dhcp client on Linux». There are plenty of different dhcp clients for Linux and they all log different ways. There’s probably a default one for Debian 8.1 though I can’t remember what it is.
Internet Systems Consortium DHCP Client 4.3.1 Copyright 2004-2014 Internet Systems Consortium. All rights reserved. For info, please visit isc.org/software/dhcp
3 Answers 3
ISC’s DHCP client is usually called dhclient in most Linux distributions. From man dhclient :
The client normally prints no output during its startup sequence. It can be made to emit verbose messages displaying the startup sequence events until it has acquired an address by supplying the -v command line argument. In either case, the client logs messages using the syslog(3) facility.
There are two possible ways to read your system log. On most systems that use systemd, you have to use journalctl , whereas cat /var/log/syslog is valid for systems that still employ a traditional init system.
Therefore, if your system is using systemd’s logging facility, you can use journalctl | grep -Ei ‘dhcp’ to get DHCP client logs. Otherwise, enter cat /var/log/syslog | grep -Ei ‘dhcp’ .
Here is what my DHCP client log typically looks like:
Jul 20 14:17:39 trueclient1 NetworkManager[2622]: (wlan1): canceled DHCP transaction, DHCP client pid 3325 Jul 20 14:17:42 trueclient1 NetworkManager[2622]: Activation (wlan1) Beginning DHCPv4 transaction (timeout in 45 seconds) Jul 20 14:17:42 trueclient1 dhclient: Internet Systems Consortium DHCP Client 4.2.2 Jul 20 14:17:42 trueclient1 dhclient: For info, please visit https://www.isc.org/software/dhcp/ Jul 20 14:17:42 trueclient1 NetworkManager[2622]: (wlan1): DHCPv4 state changed nbi -> preinit Jul 20 14:17:42 trueclient1 dhclient: DHCPREQUEST on wlan1 to 255.255.255.255 port 67 Jul 20 14:17:42 trueclient1 dhclient: DHCPACK from 10.8.8.1 Jul 20 14:17:42 trueclient1 NetworkManager[2622]: (wlan1): DHCPv4 state changed preinit -> reboot
Where are DHCP logs Linux?
See Collecting and Parsing Syslog for general information about collecting Syslog logs. By default, DHCPd logs to the daemon Syslog facility. If desired, the DHCPd log-facility configuration statement can be used in /etc/dhcp/dhcpd. conf to write logs to a different facility.
How do I find DHCP logs in Ubuntu?
Therefore, if your system is using systemd’s logging facility, you can use journalctl | grep -Ei ‘dhcp’ to get DHCP client logs. Otherwise, enter cat /var/log/syslog | grep -Ei ‘dhcp’ . A hacky (but effective) way to debug dhclient on many Linux platforms is to enable bash tracing in /sbin/dhclient-script.
How do I monitor DHCP logs?
- Start the DHCP administration tool (go to Start, Programs, Administrative Tools, and click DHCP).
- Right-click the DHCP server, and select Properties from the context menu.
- Select the General tab.
- Select the “Enable DHCP audit logging” check box.
- Click OK.
What is Dhcpdiscover?
The DHCPDISCOVER message contains an identifier unique to the client (typically the MAC address). The message might also contain other requests, such as requested options (for example, subnet mask, domain name server, domain name, or static route). The message is sent out as a broadcast.
Where is the syslog conf file?
/etc/syslog
The /etc/syslog. conf file is the configuration file for the syslogd daemon. It consists of lines with two fields: Selector field.
How do I find my DHCP?
To display DHCP configuration information:
- Open a command prompt.
- Use ipconfig /all to display all IP configuration information.
- Observe whether you have any network adapters that are DHCP Enabled. If so, identify your DHCP Server, when it shows Lease Obtained, and when it shows Lease Expires.
What is DHCP server logging?
The DHCP server logging system provides information on successful or failed lease grants, depletion of the server’s IP pool, or requests for messages and their corresponding acknowledgements. Analyzing DHCP server log files is thus an ideal audit mechanism.
What are the 4 types of DHCP packets?
The complete DHCP exchange involves four types of packets: Discover, for your computer to locate the DHCP server; Offer, for the server to offer an IP address; Request, for your computer to ask for an offered address; and Ack, for the server to grant the address lease.
What can I do with DHCP server logs?
How to test a DHCP server in Linux?
What are the parameters of a DHCP server?
Where can I find the DHCP server file?