Почему клиент говорит: "SIOCSIFADDR: разрешение отклонено"?

Я столкнулся с очень странной ошибкой на 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 для интерфейса, этого достаточно, чтобы поддерживать соединение живым! но это довольно уродливый хак на мой взгляд ..

9
задан 8 October 2010 в 20:34

5 ответов

Я бы попробовал установить nscd, если этот пакет отсутствует, и если он не работает с этим, установить также libnss-db

Не уверен, что это решит вашу проблему, однако, это то, что ваш след пытается найти, и он не может.

0
ответ дан 8 October 2010 в 20:34

На основе трассировки стека в http://silenzio.dk/pi/dhc.strace первая ошибка SIOCSIFADDR: Permission denied возникает в строке 735 во время выполнения процесса 26092: ifconfig eth2 inet 0 up. Теперь только root может ifconfig что-то поднять, поэтому давайте проследим цепочку fork() / exec() и посмотрим на изменения UID. Оказывается, что:

  1. процесс 26092 является дочерним по отношению к 26090 (строка 689)
  2. процесс 26090 выполняется с UID 101 и GID 102 (строки 355--358)
  3. Процесс 26090 пытается установить свой UID / GID обратно на 0, но завершается неудачно (строка 310)
  4. Процесс 26090 является потомком 26089 (строка 286)
  5. Процесс 26089 переключил свой UID : GID к 101: 102 (строки 282-283)

Итак, ошибки происходят, потому что выполняющийся дочерний процесс не имеет необходимых корневых привилегий. Почему это происходит? Файл 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)

0
ответ дан 8 October 2010 в 20:34

Выполненный sudo dpkg --configure -a только для проверки это не повторение ситуации в https://bugs.launchpad.net/ubuntu / + source/dhcp3 / + bug/19740/comments/67

1
ответ дан 8 October 2010 в 20:34

На самом деле это ошибка в Ubuntu 8.04. В некоторых случаях вам НУЖНО установить nscd (например, при использовании openvpn), иначе dhclient не будет работать. Этого не происходит в новых версиях Ubuntu.

0
ответ дан 8 October 2010 в 20:34

Что показывает вывод dmesg при запуске dhclient?

Если вы работаете с Hardy, AppArmor является частью установки по умолчанию. Возможно, что профиль dhclient стал бесполезным. Проверьте «sudo aa-status», чтобы увидеть, что там происходит.

Кроме того, как читает ваш файл / etc / network / interfaces? Возможно, у вас есть конфликтующие адреса, маршруты и т. Д., С которыми dhclient не хочет играть?

0
ответ дан 8 October 2010 в 20:34

Другие вопросы по тегам:

Похожие вопросы: