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 ..
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:
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
.)
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?
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 =
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.
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.