Назад | Перейти на главную страницу

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.

Есть идеи, что может вызвать такую ​​проблему?

Обновить: Я обнаружил, что шлюз по умолчанию не добавляется при загрузке, но он добавляется при перезапуске networking service или запустить dhclient вручную. Но я еще не нашел, что вызывает такое поведение.

В моем случае в CentOS 6 / Fedora это было связано с несоответствием между / etc / sysconfig / network-scripts / ifcfg-eth0 и /etc/udev/rules.d/70-persistent-net.rules.

В обоих файлах объявлен MAC, связанный с интерфейсом eth0. При клонировании виртуальной машины новый MAC был назначен, но не отражен здесь (это должен был сделать администратор).

При загрузке вы можете увидеть в dmesg, что реальный eth0 переименован в eth1 (вступает в конфликт с ifcfg-eth0), затем автоматически создается новая запись в 70-persistent-net.rules, связывающая найденный MAC с eth1.

dhclient не запустился (или, если он был запущен, был прерван) - в результате система не получила IP-адрес от DHCP-сервера.

Примечательно, что запуск dhclient вручную принудительно вызывает получение IP-адреса для поддельного eth1, и после этого сеть работает нормально ... до следующей перезагрузки.

Ручное редактирование файлов, процитированных выше, так, чтобы имена MAC и eth * совпадали, устранило проблему - теперь dhclient запускается при загрузке и получает IP сам.

РЕДАКТИРОВАТЬ:

Вообще говоря, вы должны получить свой шлюз по умолчанию со своего DHCP-сервера через Вариант 003. Лучшим подходом было бы настроить ваш DHCP-сервер так, чтобы он правильно предоставлял эту информацию клиентам. Если вы не можете сделать это по какой-либо причине, я считаю, что вы можете вручную указать это в своем /etc/network/interfaces файл с помощью gateway директива (см. справочная страница). Я никогда не делал этого, но считаю, что это должно работать для интерфейсов, которые не настроены статически.

Если это не так, вы можете добавить его вручную с помощью сценария инициализации.

Похоже, вы правильно получаете аренду DHCP с помощью dhclient. Я подозреваю, что NetworkManager был удален не полностью или у вас есть другая утилита автоконфигурации сети, которая запускается (возможно, привязана к среде вашего рабочего стола) и пытается изменить настройки вашей сети.

Сначала подтвердите, что ваш /etc/network/interfaces настроен правильно, запустив сценарий сетевой инициализации:

sudo /etc/init.d/networking restart

или просто используя ifup и ifdown:

sudo ifdown eth0 && ifup eth0


Затем убедитесь, что у вас нет оставшихся следов Сетевой менеджер:

sudo apt-get purge network-manager