Dhclient neden “SIOCSIFADDR: İzin reddedildi” diyor?


9

Ubuntu sunucusunda (8.04) çok garip bir hatayla karşılaştım, neden dhclient'in ağ ayarlarını yapmasına izin verilmediğine dair hiçbir fikrim yok! İlk etapta sunucuyu yükleyen ben değilim, bu yüzden kurulum hakkında fazla bir şey bilmiyorum. Sunucu sadece bir güvenlik duvarı / ağ geçidi (özel iptables betiği) olarak kullanılır, biri internet için, biri LAN için ve diğeri DMZ için üç nic var. Şimdi ISS, dhcp aracılığıyla atanan "statik" ip yerine statik ip ayarlarını değiştirdi ve bunu gerçekten kullanamıyorum.

Ne yazık ki dhcp kiralama sona erdiğinde ISS bağlantımı kapattığından IP'yi statik olarak ayarlayamıyorum: o

Bu ben olsun hata: (ve sonra sadece orada ası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

Şimdilik killall dhclient; dhclient eth2her saat çalıştırarak ve arayüz için statik IP ayarlarını ayarlayarak sabitledim , bu bağlantıyı canlı tutmak için yeterlidir! ama bence oldukça çirkin bir hack ..


1
strace -o /tmp/dhc$$ dhclient -d eth2hangi çağrıların başarısız olduğu hakkında değerli bilgiler vermelidir. Evet, hepsini biliyorum, ama argümanları görmek yardımcı olabilir. Ben eth2 sürücüsü ile bazı gariplik şüpheli, belki modül çekirdek ile senkronize değil.
msw


btw: nic, via_rhine çekirdek modülünü kullanan bir "VT6102 [Rhine-II]" dir.
LassePoulsen

Strace iyi tarafa geçmeden hemen önce kesildi. Ctrl-c -1tuşuna basmadan önce biraz daha çalışmasına izin verin, ya da seçeneği ekleyin ve kendiliğinden çıkmasını bekleyin.
Karl Bielefeldt

1
i apparmor veya selinux kullanmıyorum .. İşte -fseçeneği açık bir strace : silenzio.dk/pi/dhc.strace
LassePoulsen

Yanıtlar:


5

De yığın izleme göre http://silenzio.dk/pi/dhc.strace birinci SIOCSIFADDR: Permission deniedhata işlemi 26.092 yürütülürken, hat 735 meydana gelir: ifconfig eth2 inet 0 up. Şimdi sadece bir şey rootolabilir ifconfig, bu yüzden fork()/ zincirini izleyelim exec()ve UID değişikliklerini arayalım. Şekline dönüştü:

  1. süreç 26092 26090'ın bir çocuğu (satır 689)
  2. işlem 26090 UID 101 ve GID 102 ile çalışır (satır 355-358)
  3. 26090 işlemi UID / GID değerini 0 olarak ayarlamaya çalışır, ancak başarısız olur (satır 310)
  4. 26090 süreci 26089 çocuğudur (satır 286)
  5. 26089 işlemi UID: GID değerini 101: 102 olarak değiştirdi (satır 282-283)

Bu nedenle, yürütme alt işleminin gerekli kök ayrıcalıklarına sahip olmaması nedeniyle hatalar oluşur. Bu neden oluyor? Kaynaklardaki debian/changelogdosya dhcp3-3.0.6.dfsgdiyor ki:

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

Benim tahminim call-dhclient-scriptset-UID bitini kaybetmiş olması ve böylece olması gerektiği gibi kök ayrıcalıklarıyla çalışmadığı. ( debian/dhcp3-client.postinstKaynaklardaki dosyaya göre , sahibi root:dhcpve modu olmalıdır 4754)


Böyle karmaşık bir hata ve böyle basit bir çözüm! chmod u+s /lib/dhcp3-client/call-dhclient-scripthile yaptı!
LassePoulsen

2

Dhclient'i çalıştırdığınızda "dmesg" çıkışınız ne gösteriyor?

Hardy çalıştırıyorsanız, AppArmor varsayılan yüklemenin bir parçasıdır. Dhclient profilinin samanlaşmış olması mümkündür. Orada neler olduğunu görmek için "sudo aa-status" bölümüne bakın.

Ayrıca / etc / network / interfaces dosyanız nasıl okunur? Belki de dhclient'in oynamak istemediği çakışan adresler, rotalar vb. Var mı?


Makineye yüklü bir uygulama zırhı yok. Ve NIC, / etc / network / interfaces dosyasında statik IP ile kurulur. Bu, dhclient'in çağrıldığında üzerine yazması için sorun olmamalıdır. Ancak, / etc / network / interfaces dosyasında dhcp olarak ayarladığımda hiçbir fark yaratmadığı için önemli değil. Eğer i arayüzü sadece "yapılandırılmamış" olmaya devam ediyor.
LassePoulsen

Mümkünse, "sudo aa-status" ve "cat / etc / network / interfaces" pastebinslerine bağlantı gönderin
Kees Cook

1

Bu paket eksikse nscd'yi yüklemeyi denerim ve bu işe yaramazsa, libnss-db'yi de yüklerim.

Bunun sorununuzu çözüp çözemeyeceğinden emin değilsiniz, ancak bunlar izinizin bulmaya çalıştığı ve başarısız olduğu şeyler.


nscd ve libnss-db'nin yüklenmesi yardımcı olmaz.
LassePoulsen


1

Bu aslında Ubuntu 8.04'te bir hata. Birkaç kullanım durumunda nscd kurulu (örn. Openvpn kullanırken) veya dhclient çalışmaz. Yeni Ubuntu sürümlerinde bu gerçekleşmez.


Bu bir fark yaratmaz! O dhclient için hiçbir fark ağ maskesi vb ip adresi belirlemez nscd yapar yükleme
LassePoulsen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.