Linux間に関連する違いがある場合:私はDebian 8.1(デフォルトの最小インストールAMD64)に興味があります。
ISCのDHCPクライアントは通常、ほとんどのLinuxディストリビューションでdhclient
と呼ばれます。 man dhclient
から:
クライアントは通常、起動シーケンス中に出力を印刷しません。 -vコマンドライン引数を指定してアドレスを取得するまで、起動シーケンスイベントを表示する詳細なメッセージを送信するように設定できます。どちらの場合も、クライアントはsyslog(3)機能を使用してメッセージを記録します。
システムログを読み取る方法は2つあります。 systemdを使用するほとんどのシステムではjournalctl
を使用する必要がありますが、cat /var/log/syslog
は従来のinitシステムをまだ採用しているシステムで有効です。
したがって、システムがsystemdのログ機能を使用している場合は、journalctl | grep -Ei 'dhcp'
を使用してDHCPクライアントログを取得できます。それ以外の場合は、cat /var/log/syslog | grep -Ei 'dhcp'
と入力します。
DHCPクライアントのログは通常次のようになります。
Jul 20 14:17:39 trueclient1 NetworkManager[2622]: <info> (wlan1): canceled DHCP transaction, DHCP client pid 3325
Jul 20 14:17:42 trueclient1 NetworkManager[2622]: <info> 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]: <info> (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]: <info> (wlan1): DHCPv4 state changed preinit -> reboot
多くのLinuxプラットフォームでdhclientをデバッグするためのハッキーな(しかし効果的な)方法は、/ sbin/dhclient-scriptでbash tracingを有効にすることです。
dhclientは、私がチェックしたほとんどのOSバリアント(RedHat、Debianなど)でそのスクリプトを実行します。
そのスクリプトのShebang(1行目)に-x
を追加するだけで、コンソールへの各行のトレースが有効になります。例:
#!/bin/bash -x
次に、例えば、実行することができます
dhclient -r #release lease
dhclient #re-acquire lease
また、dhclient-scriptだけでなく、/ etc/dhcp *に含まれているすべての.d
スクリプトからも多くの出力が表示されるはずです。
トレース出力を使用すると、何が起こっているのか、コードがどのような決定を行っているのかを把握できます(出力を見るときにスクリプト自体を参照します)。
通常、この出力から受け取ったスクリプト(IP、GATEWAYなどのパラメーター)の入力を推定できますが、そうでない場合は、出口の直前のスクリプトに次のようなものを一時的に追加できます。
env | logger -t dhclient-debugging
次に、dhclientを実行した後にログを確認します(/ var/log/messagesまたは/ var/log/syslog)