Korzystanie z adresu ip zamiast raportów ifconfig “ RTNETLINK odpowiada: Plik istnieje ” w Debianie

Mam system Debian działający jako router bezprzewodowy z eth0 i wlan0. Teraz ręcznie dodałem dodatkową sieć na eth1 z ifconfig:

 alix:~# ifconfig eth1 192.168.0.2 netmask 255.255.255.0 alix:~# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 alix:~# ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_req=1 ttl=64 time=0.537 ms 64 bytes from 192.168.0.254: icmp_req=2 ttl=64 time=0.199 ms 64 bytes from 192.168.0.254: icmp_req=3 ttl=64 time=0.188 ms ^C --- 192.168.0.254 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2005ms rtt min/avg/max/mdev = 0.188/0.308/0.537/0.161 ms 

Jak widzisz, wszystko działa dobrze.

Teraz chciałbym, aby konfiguracja była trwała. Dlatego dodałem następującą sekcję do /etc/network/interfaces:

 alix:~# sed -n "/iface eth1/,/^$/p" /etc/network/interfaces iface eth1 inet static address 192.168.0.2 netmask 255.255.255.0 

Ale kiedy próbuję uruchomić sieć, otrzymuję następujący błąd:

 alix:~# ifconfig eth1 down alix:~# ifup -v eth1 Configuring interface eth1=eth1 (inet) run-parts --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/hostapd ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1 RTNETLINK answers: File exists Failed to bring up eth1. 

Po ręcznym uruchomieniu polecenia ip pojawia się ten sam błąd:

 alix:~# ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1 RTNETLINK answers: File exists 

Co jest nie tak z poleceniem? I jak mam powiedzieć Debianowi, żeby zrobił właściwą rzecz?

Odpowiedź

Rozumiem, że wcześniej musiałem opróżnić urządzenie wywołanie tego:

# ip addr flush dev eth1 

Usuwanie ręcznie ustawionych informacji o konfiguracji interfejsu, takich jak ta, wspomniano w Podręcznik serwera Ubuntu .

Komentarze

  • Nadal otrzymuję (nieco inny) błąd RTNETLINK answers: No such process Failed to bring up eth1 ALE mój Eth1 jest teraz poprawnie przypisany ORAZ jest W GÓRĘ / W GÓRĘ.
  • tak, ten sam problem tutaj: RTNETLINK answers: No such process Failed to bring up eth1
  • Nawet jeśli Twoje odpowiedzi rozwiązują problem. Byłoby wspaniale, gdybyś mógł powiedzieć, co tak naprawdę robi. Co to jest ten plik RTNETLINK, który istnieje?
  • @ceving: czy możesz wyjaśnić, co to jest RTNETLINK answers file? Poza tym po opróżnieniu moja karta sieciowa nie pobiera automatycznie nowego adresu IP, jak poprosić dhcp o nowy adres IP?
  • Jedynym zastrzeżeniem jest to, że powoduje to wyczyszczenie wszystkich zakresów, co nie zawsze jest tym, czego chcesz. (Przekonałem się o tym na własnej skórze)

Odpowiedź

Używając ip addr flush będzie działał, ale usunie również wszystkie adresy ustawione w tym interfejsie – być może łącznie z tym, którego używasz, jeśli zalogowałeś się na zdalnym komputerze. Może to zablokować dostęp do urządzenia.

RNETLINK answers: File exists ma miejsce, gdy „próbujesz add regułę, która koliduje z istniejącą regułą. Wydaje mi się, że OP napotkał to, ponieważ ustawił już adres za pomocą ifconfig. Ten błąd można zwykle rozwiązać, konwertując polecenie add na podobną strukturę change lub replace polecenie.

Znacznie bezpieczniej jest użyć zamiast tego ip addr change lub ip addr replace.

Komentarze

  • To nie jest opcja dla kogoś, kto używa tylko ifup i ifdown , ponieważ polecenie jest wbudowane w te skrypty.
  • @alerone używając " sudo ip addr change " będzie wyślij mi to wyjście. " Za mało informacji: wymagany jest argument " dev ". " Potrzebujemy więcej informacji, aby wykorzystać Twój pomysł. Byłoby miło.

Odpowiedź

Miałem podobny problem, że zanim odtworzyłem scenę 10 000 pieniędzy, wyglądała dokładnie tak, a próbowałem dd brakujące rzeczy do / e / n / id / etho

Ale studiując stronę podręcznika dla interfejsów, zauważyłem, że WSZYSTKIE zestawienie przykładów zawierało tylko 2 wiersze rzeczywistych danych, adres ipv4 / 24 i linię bramy określającą adres mojego routera. Więc zmniejszyłem swój plik eth0 do tego, zrestartowałem i działałem idealnie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *