Por que o dhclient está dizendo: “SIOCSIFADDR: Permission denied”?

9

Eu encontrei um erro muito estranho no ubuntu-server (8.04), não tenho idéia porque o dhclient não tem permissão para definir as configurações de rede! Eu não sou aquele que instalou o servidor em primeiro lugar, então eu não sei muito sobre a configuração. O servidor é usado apenas como um firewall / gateway (script personalizado do iptables), ele tem três para a internet, um para a LAN e outro para a DMZ. Agora o ISP mudou as configurações do ip estático para ip "estático" atribuído através do dhcp, e eu não posso realmente usá-lo.

Infelizmente, não posso simplesmente definir o IP estaticamente, pois o ISP fecha minha conexão quando a concessão do dhcp termina: o

Este é o erro que recebo: (e depois fica pendurado 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

por enquanto eu consertei correndo killall dhclient; dhclient eth2 a cada hora e depois definindo configurações de IP estático para a interface, isso é suficiente para manter a conexão ao vivo! mas é um hack muito feio na minha opinião ..

    
por LassePoulsen 04.10.2010 / 21:55

5 respostas

5

Com base no rastreamento de pilha em link , o primeiro O erro SIOCSIFADDR: Permission denied ocorre na linha 735, durante execução do processo 26092: ifconfig eth2 inet 0 up . Agora apenas root pode ifconfig alguma coisa, então vamos traçar a cadeia de fork() / exec() e procure por alterações de UID. Acontece que:

  1. o processo 26092 é um filho de 26090 (linha 689)
  2. o processo 26090 é executado com o UID 101 e o GID 102 (linhas 355--358)
  3. o processo 26090 tenta definir seu UID / GID de volta para 0, mas falha (linha 310)
  4. o processo 26090 é filho de 26089 (linha 286)
  5. o processo 26089 mudou seu UID: GID para 101: 102 (linhas 282--283)

Assim, os erros ocorrem porque o processo filho em execução não tem os privilégios de root necessários. Por que isso acontece? o O arquivo debian/changelog no dhcp3-3.0.6.dfsg sources diz:

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

Meu palpite é que call-dhclient-script perdeu seu bit set-UID e portanto, não está executando com privilégios de root como deveria. (De acordo com o arquivo debian/dhcp3-client.postinst nas fontes, deve ser de propriedade de root:dhcp e modo 4754 )

    
por Riccardo Murri 11.10.2010 / 23:10
2

O que sua saída "dmesg" mostra quando você executa o dhclient?

Se você estiver executando o Hardy, o AppArmor faz parte da instalação padrão. É possível que o perfil do dhclient tenha ficado descontrolado. Marque "sudo aa-status" para ver o que está acontecendo lá.

Além disso, como seu arquivo / etc / network / interfaces é lido? Talvez você tenha endereços conflitantes, rotas, etc. com os quais o dhclient não quer brincar?

    
por Kees Cook 11.10.2010 / 19:44
1

Eu tentaria instalar o nscd se esse pacote estiver faltando, e se não funcionar com isso, instale também o libnss-db.

Não tenho certeza se isso resolverá seu problema, no entanto, essas são as coisas que seu rastreio está tentando encontrar e ele falha.

    
por txwikinger 08.10.2010 / 18:40
1

Por favor, execute sudo dpkg --configure -a apenas para garantir que não seja uma repetição da situação em link

    
por jneves 10.10.2010 / 05:16
1

Este é realmente um bug no Ubuntu 8.04. Para vários casos de uso, você precisa ter o nscd instalado (por exemplo, ao usar o openvpn) ou o dhclient não funcionará. Isso não acontece em versões mais recentes do Ubuntu.

    
por mniess 11.10.2010 / 21:08