Napotkałem bardzo dziwny błąd na serwerze Ubuntu (8.04), nie mam pojęcia, dlaczego dhclient nie może ustawiać ustawień sieciowych! Nie jestem tym, który zainstalował serwer, więc nie wiem dużo o konfiguracji. Serwer służy tylko jako firewall / gateway (niestandardowy skrypt iptables), ma trzy nici do Internetu, jeden do LAN i jeden do DMZ. Teraz ISP zmienił ustawienia ze statycznego adresu IP na „statyczny” adres IP przypisany przez dhcp i naprawdę nie mogę go użyć.
Niestety nie mogę ustawić statycznie adresu IP, ponieważ dostawca Internetu zamyka moje połączenie po zakończeniu dzierżawy protokołu dhcp: o
To jest błąd, który otrzymuję: (a następnie po prostu się tam zawiesza ..)
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
na razie naprawiłem to, uruchamiając killall dhclient; dhclient eth2
co godzinę, a następnie ustawiając statyczne ustawienia IP interfejsu, to wystarczy, aby połączenie pozostało aktywne! ale moim zdaniem jest to dość brzydki hack ...
strace -o /tmp/dhc$$ dhclient -d eth2
powinien dostarczyć cennych informacji o niepowodzeniach połączeń. Tak, znam je wszystkie, ale zobaczenie argumentów może pomóc. Podejrzewam pewne dziwactwa ze sterownikiem eth2, być może moduł nie jest zsynchronizowany z jądrem.-1
opcję i poczekaj, aż zakończy działanie.-f
włączoną opcją: silenzio.dk/pi/dhc.straceOdpowiedzi:
Na podstawie śladu stosu w http://silenzio.dk/pi/dhc.strace pierwszy
SIOCSIFADDR: Permission denied
błąd występuje na linii 735, podczas realizacji procesu 26092:ifconfig eth2 inet 0 up
. Terazroot
można tylkoifconfig
coś poprawić, więc prześledźmy łańcuchfork()
/exec()
i poszukaj zmian UID. Okazało się, że:Błędy występują, ponieważ wykonujący proces potomny nie ma niezbędnych uprawnień roota. Dlaczego to się dzieje?
debian/changelog
Plik wdhcp3-3.0.6.dfsg
źródłach mówi:Domyślam się, że
call-dhclient-script
stracił swój bit UID i dlatego nie działa z uprawnieniami roota, jak powinien. (Zgodnie zdebian/dhcp3-client.postinst
plikiem w źródłach, powinien on być własnościąroot:dhcp
i mode4754
)źródło
chmod u+s /lib/dhcp3-client/call-dhclient-script
wykonał lewę!Co pokazuje twój wynik „dmesg” po uruchomieniu dhclient?
Jeśli korzystasz z Hardy, AppArmor jest częścią domyślnej instalacji. Możliwe, że profil dhclient zwariował. Zaznacz „sudo aa-status”, aby zobaczyć, co się tam dzieje.
Ponadto w jaki sposób czyta się plik / etc / network / interfaces? Być może masz sprzeczne adresy, trasy itp., Z którymi dhclient nie chce się bawić?
źródło
Spróbowałbym zainstalować nscd, jeśli brakuje tego pakietu, a jeśli to nie działa, zainstaluj także libnss-db.
Nie jestem pewien, czy to rozwiąże twój problem, ale są to rzeczy, które próbuje znaleźć twój ślad i nie udaje się.
źródło
Uruchom,
sudo dpkg --configure -a
aby upewnić się, że nie jest to powtórzenie sytuacji na https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/19740/comments/67źródło
dpkg --configure -a
nic nie zrobił (bez pakietów, które wymagałyby konfiguracji)To jest właściwie błąd w Ubuntu 8.04. W kilku przypadkach POTRZEBUJESZ mieć zainstalowanego nscd (np. Podczas korzystania z openvpn), inaczej dhclient nie będzie działał. Nie dzieje się tak w nowszych wersjach Ubuntu.
źródło