it-swarm.com.de

Warum sagt dhclient: "SIOCSIFADDR: Erlaubnis verweigert"?

Ich habe einen sehr seltsamen Fehler auf Ubuntu-Server (8.04) festgestellt, ich habe keine Ahnung, warum dhclient die Netzwerkeinstellungen nicht festlegen darf! Ich bin nicht derjenige, der den Server zuerst installiert hat, daher weiß ich nicht viel über das Setup. Der Server wird nur als Firewall/Gateway (benutzerdefiniertes iptables-Skript) verwendet. Er verfügt über drei Netzwerkkarten, eine für das Internet, eine für das LAN und eine für die DMZ. Jetzt hat der ISP die Einstellungen von statischer IP zu "statischer" IP geändert, die über DHCP zugewiesen wurden, und ich kann sie nicht wirklich verwenden.

Leider kann ich die IP nicht einfach statisch setzen, da der ISP meine Verbindung schließt, wenn die DHCP-Lease endet: o

Dies ist der Fehler, den ich bekomme: (und dann hängt es einfach da ..)

[email protected]:~# 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

im Moment habe ich es behoben, indem ich killall dhclient; dhclient eth2 stündlich ausgeführt und dann statische IP-Einstellungen für die Schnittstelle vorgenommen habe. Dies reicht aus, um die Verbindung am Leben zu erhalten! aber es ist ein ziemlich hässlicher Hack meiner Meinung nach ..

9
LassePoulsen

Basierend auf der Stapelablaufverfolgung unter http://silenzio.dk/pi/dhc.strace tritt der erste SIOCSIFADDR: Permission denied Fehler in Zeile 735 während der Ausführung des Prozesses 26092 auf: ifconfig eth2 inet 0 up . Jetzt kann nur rootifconfig etwas nachvollziehen, also lasst uns die Kette von fork()/exec() verfolgen und nach UID-Änderungen suchen. Es stellt sich heraus, dass:

  1. prozess 26092 ist ein Kind von 26090 (Zeile 689)
  2. prozess 26090 wird mit UID 101 und GID 102 ausgeführt (Zeilen 355 bis 358)
  3. prozess 26090 versucht, seine UID/GID auf 0 zurückzusetzen, schlägt jedoch fehl (Zeile 310)
  4. prozess 26090 ist ein Kind von 26089 (Zeile 286)
  5. prozess 26089 hat seine UID: GID auf 101: 102 geändert (Zeilen 282-283)

Die Fehler treten daher auf, weil der ausführende untergeordnete Prozess nicht über die erforderlichen Root-Berechtigungen verfügt. Warum passiert das? In der debian/changelog -Datei in den dhcp3-3.0.6.dfsg -Quellen heißt es:

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/.

Ich vermute, dass call-dhclient-script sein Set-UID-Bit verloren hat und daher nicht ordnungsgemäß mit Root-Rechten ausgeführt wird. (Gemäß der debian/dhcp3-client.postinst -Datei in den Quellen sollte sie im Besitz von root:dhcp und mode 4754 sein.)

5
Riccardo Murri

Was zeigt Ihre "dmesg" -Ausgabe, wenn Sie dhclient ausführen?

Wenn Sie Hardy ausführen, ist AppArmor Teil der Standardinstallation. Es ist möglich, dass das Dhclient-Profil durcheinander geraten ist. Überprüfen Sie "Sudo aa-Status", um zu sehen, was dort passiert.

Wie liest man außerdem die Datei/etc/network/interfaces? Vielleicht haben Sie widersprüchliche Adressen, Routen usw., mit denen dhclient nicht spielen möchte?

2
Kees Cook

Führen Sie Sudo dpkg --configure -a aus, um sicherzustellen, dass sich die Situation in https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/19740/ nicht wiederholt. comments/67

1
jneves

Dies ist eigentlich ein Fehler in Ubuntu 8.04. In einigen Anwendungsfällen MÜSSEN Sie nscd installiert haben (z. B. bei Verwendung von openvpn), oder dhclient funktioniert nicht. Dies ist in neueren Ubuntu-Versionen nicht der Fall.

1
mniess

Ich würde versuchen, nscd zu installieren, wenn dieses Paket fehlt, und wenn es damit nicht funktioniert, installieren Sie auch libnss-db.

Wir sind uns nicht sicher, ob dies Ihr Problem lösen wird. Dies sind jedoch die Dinge, die Ihre Ablaufverfolgung zu finden versucht und die fehlschlagen.

1
txwikinger