Jak znaleźć dostępne interfejsy sieciowe?


88

Dotyczy to Linuksa, ale jeśli ktoś wie o ogólnej metodzie * nix, byłoby to dobre.

Wczoraj uruchomiłem system z podłączonym kablem Ethernet. „NetworkManager” nie jest zainstalowany, więc po uruchomieniu poszedłem poszukać nazwy interfejsu Ethernet, ifconfigaby ręcznie uruchomić klienta DHCP, ale nie pokazał nic innego niż lo.

Karta sieciowa została wymieniona za pośrednictwem lspcii załadowano odpowiedni sterownik jądra. System zwykle korzysta z Wi-Fi i pamiętam nazwę tego interfejsu wlan0. Kiedy próbowałem ifconfig wlan0 up, wlan0pojawił się. Ale jedyne nazwy interfejsów ethernetowych, które pamiętałem, to eth[N]i em[N]żadne z nich nie działało.

Dokument ten odnosi się do „przewidywalnych nazw interfejsów”, ale nie wyjaśnia dobrze, czym mogą być w prostych słowach. Odnosi się do fragmentu kodu źródłowego, który sugeruje, że w tym przypadku nazwa może zostać wydedukowana z szyny PCI i numerów gniazd, co wydaje się niepotrzebnie skomplikowanym problemem.

Inne poszukiwania doprowadziły mnie do wniosku, że można to ustalić systemdw połączeniu z udev, ale jest tam prawie 100 plików /usr/lib/udev/rules.di spędzanie godziny na ustaleniu, gdzie (a jeśli ) jest systemowy plik konfiguracyjny, również wydaje się śmieszne.

Byłoby również miło wiedzieć, że są one dostępne, a nie tylko, jak mogą być nazwane, jeśli są, więc mogę wykluczyć problemy ze sprzętem itp. Czy nie ma prostego sposobu na znalezienie nazw dostępnych interfejsów sieciowych na Linuksie?


W pytaniu stwierdzasz, że użyłeś, ip linkale następnie akceptujesz odpowiedź, która sugeruje, ip link showco robi dokładnie to samo. Dlaczego?
Pavel Šimerda

@ PavelŠimerda Masz rację. Mógłbym faktycznie skorzystać ip route- napisałem to pytanie następnego dnia po rozwiązaniu problemu (patrz moja odpowiedź); Nie mam zwyczaju używania ipi nie doceniam nadmiernie spartańskich stron podręcznika, więc prawdopodobnie porzuciłem to po jednej próbie i zacząłem przeglądać /sys, ponieważ wiedziałem, że kmod został załadowany itp. I było to prostsze Dla mnie. Całkowicie usunę to z pytania.
złotowłosa

Strony podręcznika dla iproute2 są obecnie całkiem dobre, myślę, że używasz starszej wersji pakietu.
Pavel Šimerda

Odpowiedzi:


93

Najprostszą metodą, jaką znam na liście wszystkich twoich interfejsów, jest

ifconfig -a

EDYTOWAĆ

Jeśli korzystasz z systemu, w którym stało się to przestarzałe, możesz użyć

ip link show

3
Gdybym tylko spojrzał na stronę podręcznika! Ciekawe, czy ipma równoległe, ponieważ podobno ifconfig jest „przestarzały” na korzyść tego (IMO) bardziej tępego i mniej przyjaznego dla użytkownika polecenia.
złotowłosa

2
Pierwsza rzecz w moim man ifconfig: „UWAGA Ten program jest przestarzały! Do wymiany sprawdź ip ...” To może być specyficzne dla systemu Linux. Mam nadzieję, że muszą to zachować, aby zachować zgodność z czymś wstecznym.
złotowłosa

4
ifconfig jest przestarzałe, TMK, więc powinniśmy próbować pokazywać przykłady za pomocą ip. Zobacz artykuł Wikipedii ifconfig: en.wikipedia.org/wiki/Ifconfig .
slm

3
@slm Chociaż pytanie dotyczy (było) Linuksa, przykład użycia obu wydaje się dobry, ponieważ użytkownicy BSD mogą mieć zwyczaj patrzenia na strony „linux” - w rzeczywistości usunę linux z tytułu i edytuję nieco (pierwotnie było to samo-odpowiedź i nie sądziłem, że istnieje przenośna metoda).
złotowłosa

5
ifconfig jest przestarzałe? daj spokój. To polecenie istnieje od około 30 lat.
Michael Martinez,

72

Jądro wyświetla je według nazwy /sys, zarówno osobno w (np.) Drzewie urządzeń PCI - chociaż znalezienie ich tam, jeśli nie wiesz, od czego mają zacząć, nie jest proste - i razem poprzez dowiązania symboliczne /sys/class/net. Na przykład:

> ls /sys/class/net
em1 lo wlp6so

Inny przykład:

> ls /sys/class/net
lo p6s1 wlan0

Jeśli nie masz pewności, który z nich, możesz po prostu postawić je wszystkie:

ifconfig [name] up 

Lub:

ip link set [name] up

A następnie spójrz na (dość jasne) wskazówki wymienione przez ifconfig(bez argumentów). Systemowy kod źródłowy powiązany z dokumentem Freedesktop.org odnosi się również do:

Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan

Chociaż w jednym z powyższych przypadków ( p6s1) nie ma przedrostka.


Prefiks, który otrzymuję dla Ethernetu to eth. Wierzę, że enjest do bezprzewodowej sieci LAN.
Kaushal Modi

4
@kaushalmodi ethto jądro Linuksa; systemd implementuje za pomocą udev przewidywalne nazwy interfejsów Freedesktop.org - jądra nie są przewidywalne w tym samym sensie, co jest przyczyną całego zamieszania. Cytat powyżej jest wyraźnie wycięty i wklejony stąd . Jest w tym coś więcej, ponieważ nie mam żadnych systemowych maszyn korzystających enz Ethernetu; najbliższe jest to em, że inni są zupełnie inni. Możesz przeczytać link Freedesk.org w pytaniu, aby uzyskać dodatkowe wyjaśnienia.
goldilocks

4
[Później] Jakiś czas w zeszłym roku Fedora lub systemd to naprawił? Mój PCI Ethernet jest teraz eno1.
goldilocks


4

ifconfig= Solaris
ipconfig= Windows
ip= Linux

Wiem, ale z pewnością jestem otwarty na uzupełnienia i poprawki.


2
Co? ifconfig to także Linux.
fpmurphy 27.04.16

4
@ fpmurphy1 Przeczytaj pierwszy akapit (po streszczeniu) w man ifconfigsystemie Linux.
goldilocks 27.04.16
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.