web-dev-qa-db-ja.com

dhclientが起動時に機能しない

ここに問題があります:

root@home:~# ping 8.8.8.8
connect: Network is unreachable

root@home:~# dhclient eth0
RTNETLINK answers: File exists

root@home:~# ping 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=51 time=16.8 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=51 time=16.6 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 16.654/16.737/16.820/0.083 ms
root@home:~#

Dhclientを手動で起動した後にのみネットワークが機能します。 NetworkManagerがありません(削除しました)。 /etc/network/interfacesの関連する行は次のとおりです:

auto eth0
iface eth0 inet dhcp

そしてここに起動ログがあります:

root@home:~# cat /var/log/syslog | grep dhclient
May 28 21:39:44 home kernel: [    7.237076] type=1400 audit(1369762781.497:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=405 comm="apparmor_parser"
May 28 21:39:44 home kernel: [    7.238298] type=1400 audit(1369762781.497:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=405 comm="apparmor_parser"
May 28 21:39:45 home dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 (xid=0x79607e29)
May 28 21:39:45 home dhclient: DHCPREQUEST of 192.168.0.103 on eth0 to 255.255.255.255 port 67 (xid=0x79607e29)
May 28 21:39:45 home dhclient: DHCPOFFER of 192.168.0.103 from 192.168.0.1
May 28 21:39:45 home dhclient: DHCPACK of 192.168.0.103 from 192.168.0.1
May 28 21:39:45 home dhclient: bound to 192.168.0.103 -- renewal in 234779 seconds.
May 28 21:39:45 home kernel: [   11.695666] type=1400 audit(1369762785.953:10): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=1154 comm="apparmor_parser"
May 28 21:40:11 home dhclient: DHCPREQUEST of 192.168.0.103 on eth0 to 255.255.255.255 port 67 (xid=0x2aa61c47)
May 28 21:40:11 home dhclient: DHCPACK of 192.168.0.103 from 192.168.0.1
May 28 21:40:11 home dhclient: bound to 192.168.0.103 -- renewal in 243414 seconds.

そのような問題を引き起こす可能性のあるアイデアはありますか?

pdate:ブート時にデフォルトゲートウェイが追加されないことがわかりましたが、networkingサービスを再起動するか、dhclientを手動で実行すると追加されます。しかし、私はそのような行動を引き起こすものをまだ見つけていませんでした。

4
Poma

私の場合、CentOS 6/Fedoraでは、これは/ etc/sysconfig/network-scripts/ifcfg-eth0と/etc/udev/rules.d/70-persistent-net.rulesの間の不整合に関連していました。

両方のファイルで、eth0インターフェイスに関連付けられたMACが宣言されています。 VMクローンでは、新しいMACが割り当てられましたが、ここには反映されていません(管理者がそれを実行する必要があったはずです)。

起動すると、dmesgで、実際のeth0がeth1に名前変更され(ifcfg-eth0と競合して入力されます)、70-persistent-net.rulesの下に自動的に作成され、検出されたMACをeth1に関連付けます。

dhclientが起動しなかった(または起動した場合は中止された)-その結果、システムがDHCPサーバーからIPを取得できませんでした。

驚くほど十分に、dhclientを手動で実行すると、偽のeth1のIPが強制的に取得され、その後、ネットワークは正常に機能します。

MACとeth *の名前が一致するように上記のファイルを手動で編集して問題を修正しました-dhclientが起動時に起動し、IPを単独で取得します。

1
David Ramirez

編集:

一般的に言えば、 オプション0 を介してDHCPサーバーからデフォルトゲートウェイを取得する必要があります。最善のアプローチは、クライアントにこの情報を正しく提供するようにDHCPサーバーを構成することです。何らかの理由でそれができない場合は、gatewayディレクティブを使用して/etc/network/interfacesファイルに手動で指定できると思います( manpage を参照)。私はこれを行ったことはありませんが、静的に構成されていないインターフェースで機能するはずです。

そうでない場合は、initスクリプトを使用して手動で追加できます。

Dhclientを使用してDHCPリースを正しく受け取っているようです。 NetworkManagerが完全に削除されなかったか、別のネットワーク自動構成ユーティリティが起動し(おそらくデスクトップ環境に関連付けられている)、ネットワーク設定を再構成しようとしていると思います。

まず、ネットワーク初期化スクリプトを実行して、/etc/network/interfacesが正しく構成されていることを確認します。

Sudo /etc/init.d/networking restart

またはifupifdownを使用するだけ:

Sudo ifdown eth0 && ifup eth0


次に、 Network Manager の残留トレースがないことを確認します。

Sudo apt-get purge network-manager
1
user62491