web-dev-qa-db-fra.com

Pourquoi le client dit-il: "SIOCSIFADDR: autorisation refusée"?

J'ai rencontré une erreur très étrange sur ubuntu-server (8.04), je ne sais pas pourquoi dhclient n'est pas autorisé à définir les paramètres réseau! Je ne suis pas celui qui a installé le serveur en premier lieu, donc je ne connais pas grand chose à propos de l'installation. Le serveur n’est utilisé que comme pare-feu/passerelle (script iptables personnalisé). Il possède trois ports: un pour Internet, un pour le réseau local et un pour la DMZ. Maintenant, les fournisseurs de services Internet ont changé les paramètres d'IP statique en IP "statique" attribuée via DHCP, et je ne peux pas vraiment l'utiliser.

Malheureusement, je ne peux pas simplement définir l'adresse IP de manière statique car le fournisseur de services Internet ferme ma connexion lorsque le bail DHCP prend fin: o

C’est l’erreur que j’obtiens: (et puis c’est juste accroché là ..)

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

pour l'instant, je l'ai corrigé en exécutant killall dhclient; dhclient eth2 toutes les heures, puis en définissant des paramètres IP statiques pour l'interface, cela suffit pour maintenir la connexion en direct! mais c'est un hack assez moche à mon avis ..

9
LassePoulsen

Basé sur la trace de pile à http://silenzio.dk/pi/dhc.strace la première erreur SIOCSIFADDR: Permission denied se produit à la ligne 735, lors de l'exécution du processus 26092: ifconfig eth2 inet 0 up . Désormais, seul root peut ifconfig quelque chose de plus, nous allons donc suivre la chaîne de fork()/exec() et rechercher les modifications apportées à l'UID. Il se trouve que:

  1. process 26092 est un enfant de 26090 (ligne 689)
  2. le processus 26090 s'exécute avec les UID 101 et GID 102 (lignes 355 à 358)
  3. le processus 26090 essaie de remettre son UID/GID à 0 mais échoue (ligne 310)
  4. process 26090 est un enfant de 26089 (ligne 286)
  5. le processus 26089 a remplacé son UID: GID par 101: 102 (lignes 282 à 283).

Donc, les erreurs se produisent parce que le processus enfant en cours d'exécution ne dispose pas des privilèges root nécessaires. Pourquoi cela arrive-t-il? Le fichier debian/changelog dans les sources dhcp3-3.0.6.dfsg indique:

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

Je suppose que call-dhclient-script a perdu son bit set-UID et ne s'exécute donc pas avec les privilèges root comme il se doit. (Selon le fichier debian/dhcp3-client.postinst dans les sources, il devrait appartenir à root:dhcp et au mode 4754.)

5
Riccardo Murri

Que montre votre sortie "dmesg" lorsque vous exécutez dhclient?

Si vous utilisez Hardy, AppArmor fait partie de l'installation par défaut. Il est possible que le profil client ait été bouleversé. Vérifiez "Sudo aa-status" pour voir ce qui s'y passe.

De plus, comment votre fichier/etc/network/interfaces est-il lu? Vous avez peut-être des adresses, itinéraires, etc. conflictuels avec lesquels le client ne veut pas jouer?

2
Kees Cook

Veuillez exécuter Sudo dpkg --configure -a simplement pour vous assurer que la situation ne se répète pas dans https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/19740/comments/67 =

1
jneves

C'est en fait un bug dans Ubuntu 8.04. Pour plusieurs cas d'utilisation, vous devez BESOIN d'installer nscd (par exemple, en utilisant openvpn) ou dhclient ne fonctionnera pas. Cela n'arrive pas dans les nouvelles versions d'Ubuntu.

1
mniess

J'essaierais d'installer nscd si ce paquet est manquant, et s'il ne fonctionne pas avec ça, installez aussi libnss-db.

Vous ne savez pas si cela résoudra votre problème, cependant, ce sont les choses que votre trace tente de trouver et qui échouent.

1
txwikinger