Я столкнулся с очень странной ошибкой на ubuntu-server (8.04), я понятия не имею, почему dhclient не разрешено устанавливать настройки сети! Я не тот, кто устанавливал сервер в первую очередь, поэтому я не очень разбираюсь в настройке. Сервер используется только в качестве брандмауэра / шлюза (пользовательский сценарий iptables), у него есть три никеля, один для Интернета, один для локальной сети и один для DMZ. Теперь провайдер изменил настройки со статического ip на «статический», назначенный через dhcp, и я не могу его использовать.
К сожалению, я не могу просто установить IP-адрес статически, так как интернет-провайдер закрывает мое соединение, когда заканчивается аренда dhcp: o
Это ошибка, которую я получаю: (а затем она просто там зависает ..) [ 114]
root@fw:~# dhclient eth2
Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFFLAGS: Permission denied
Listening on LPF/eth2/00:50:52:c1:a1:32
Sending on LPF/eth2/00:50:52:c1:a1:32
Sending on Socket/fallback
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 8
DHCPOFFER of 2.10.56.19 from 93.87.36.42
DHCPREQUEST of 2.10.56.19 on eth2 to 255.255.255.255 port 67
DHCPACK of 2.10.56.19 from 93.87.36.42
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFNETMASK: Permission denied
SIOCSIFBRDADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCADDRT: Operation not permitted
на данный момент я исправил это, выполняя killall dhclient; dhclient eth2
каждый час и затем устанавливая статические настройки IP для интерфейса, этого достаточно, чтобы поддерживать соединение живым! но это довольно уродливый хак на мой взгляд ..
Я бы попробовал установить nscd, если этот пакет отсутствует, и если он не работает с этим, установить также libnss-db
Не уверен, что это решит вашу проблему, однако, это то, что ваш след пытается найти, и он не может.
На основе трассировки стека в http://silenzio.dk/pi/dhc.strace первая ошибка SIOCSIFADDR: Permission denied
возникает в строке 735 во время выполнения процесса 26092: ifconfig eth2 inet 0 up
. Теперь только root
может ifconfig
что-то поднять, поэтому давайте проследим цепочку fork()
/ exec()
и посмотрим на изменения UID. Оказывается, что:
Итак, ошибки происходят, потому что выполняющийся дочерний процесс не имеет необходимых корневых привилегий. Почему это происходит? Файл debian/changelog
в источниках dhcp3-3.0.6.dfsg
гласит:
dhcp3 (3.0.1-2ubuntu4) breezy; urgency=low
Derooted the DHCP client:
* Added debian/patches/deroot-client.patch:
- client/dhclient.c: After initialization, dro privileges to dhcp:dhcp and
only keep CAP_NET_RAW and CAP_NET_BIND_SERVICE.
- Add a setuid wrapper call-dhclient-script to call
/etc/dhcp3/dhclient-script as root.
- Install call-dhclient-script into /lib/dhcp3-client/.
Я предполагаю, что call-dhclient-script
потерял свой бит set-UID и, следовательно, не выполняется с привилегиями root, как должно. (Согласно файлу debian/dhcp3-client.postinst
в источниках, он должен принадлежать root:dhcp
и mode 4754
)
Выполненный sudo dpkg --configure -a
только для проверки это не повторение ситуации в https://bugs.launchpad.net/ubuntu / + source/dhcp3 / + bug/19740/comments/67
На самом деле это ошибка в Ubuntu 8.04. В некоторых случаях вам НУЖНО установить nscd (например, при использовании openvpn), иначе dhclient не будет работать. Этого не происходит в новых версиях Ubuntu.
Что показывает вывод dmesg при запуске dhclient?
Если вы работаете с Hardy, AppArmor является частью установки по умолчанию. Возможно, что профиль dhclient стал бесполезным. Проверьте «sudo aa-status», чтобы увидеть, что там происходит.
Кроме того, как читает ваш файл / etc / network / interfaces? Возможно, у вас есть конфликтующие адреса, маршруты и т. Д., С которыми dhclient не хочет играть?