Я столкнулся с очень странной ошибкой на ubuntu-server (8.04), я понятия не имею, почему dhclient не разрешено устанавливать настройки сети! Я не тот, кто установил сервер в первую очередь, поэтому я не знаю много о настройке. Сервер используется только в качестве брандмауэра / шлюза (пользовательский скрипт iptables), у него есть три никеля, один для Интернета, один для локальной сети и один для DMZ. Теперь провайдер изменил настройки со статического ip на «статический», назначенный через dhcp, и я не могу его использовать.
К сожалению, я не могу просто установить IP-адрес статически, так как провайдер закрывает мое соединение, когда заканчивается аренда dhcp: o
Это ошибка, которую я получаю: (а потом просто висит там ..)
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 для интерфейса, этого достаточно, чтобы поддерживать соединение! но это довольно уродливый хак на мой взгляд ..
strace -o /tmp/dhc$$ dhclient -d eth2
должен дать ценную информацию о том, что звонки не удается. Да, я знаю их все, но, видя аргументы, может помочь. Я подозреваю некоторую причину в драйвере eth2, возможно, модуль не синхронизирован с ядром.-1
опцию и подождите, пока он не завершится сам по себе.-f
опцией: silenzio.dk/pi/dhc.straceОтветы:
На основе трассировки стека на 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
источниках говорится:Я предполагаю, что
call-dhclient-script
он потерял свой бит set-UID и, следовательно, не выполняется с привилегиями root, как должно. (Согласноdebian/dhcp3-client.postinst
файлу в источниках, он должен принадлежатьroot:dhcp
и режиму4754
)источник
chmod u+s /lib/dhcp3-client/call-dhclient-script
сделал трюк!Что показывает ваш вывод "dmesg" при запуске dhclient?
Если вы используете Hardy, AppArmor является частью установки по умолчанию. Возможно, что профиль dhclient стал бесполезным. Проверьте «sudo aa-status», чтобы увидеть, что там происходит.
Кроме того, как читает ваш файл / etc / network / interfaces? Возможно, у вас есть конфликтующие адреса, маршруты и т. Д., С которыми dhclient не хочет играть?
источник
Я хотел бы попробовать установить nscd, если этот пакет отсутствует, и если он не работает с этим, установите также libnss-db.
Не уверен, что это решит вашу проблему, однако, это то, что ваша трассировка пытается найти, и она терпит неудачу.
источник
Пожалуйста, запустите,
sudo dpkg --configure -a
чтобы убедиться, что это не повторение ситуации в https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/19740/comments/67источник
dpkg --configure -a
вообще ничего не делал (нет пакетов,На самом деле это ошибка в Ubuntu 8.04. В некоторых случаях вам НУЖНО установить nscd (например, при использовании openvpn), иначе dhclient не будет работать. Этого не происходит в новых версиях Ubuntu.
источник