Вот в чем проблема:
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