Polecenie „ip addr” pokazuje „UP”, nawet jeśli nie ma adresu powiązanego z tym interfejsem

16

Chciałbym zrozumieć, co oznacza podniesiony interfejs sieciowy? Ponieważ ip addrlub ifconfigpolecenie wyświetla interfejs w górę, nawet jeśli nie jest z nim powiązany żaden adres IP.

na przykład na RHEL7:

[root@IDCDVAM887 ~]# ifconfig ens256
ens256: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:50:56:9e:19:5b  txqueuelen 1000  (Ethernet)
        RX packets 229406  bytes 59265584 (56.5 MiB)
        RX errors 0  dropped 229454  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(lub)

[root@IDCDVAM887 ~]# ip addr show ens256
5: ens256: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:50:56:9e:19:5b brd ff:ff:ff:ff:ff:ff

Jaki jest prawdziwy sens wyświetlania jako UP, gdy interfejs w ogóle nie ma adresu IP? Wierzę, że kiedy nie ma IP, nie może być na to komunikacji? Więc po co z tego korzystać?

Srikanth Ganesan
źródło
1
Ramki Ethernet mogą zrobić coś więcej niż tylko pakiety IP.
Casey

Odpowiedzi:

17

Jest LOWER_UPto stan łącza Ethernet (lub innego protokołu warstwy łącza). Jest zdefiniowany jako Driver signals L1 up, co w zasadzie oznacza, że ​​kabel jest zamontowany i może zobaczyć inne urządzenie na drugim końcu kabla.

Te UPśrodki, że została włączona. To może być kontrolowane przez ciebie (lub skrypt) za pomocą polecenia ip link set <device> upof ifconfig <device> up.

Istnieją inne protokoły, takie jak IPX, które wykorzystują Ethernet, ale nie będą miały adresu IP, ponieważ nie są częścią stosu protokołu internetowego. Jest więc całkowicie akceptowalne, że link ma, UPale nie ma adresu IP.

garethTheRed
źródło
DHCP jest w rzeczywistości zbudowany na emisji UDP, która wymaga warstwy IP (w rzeczywistości może być routowana). Innym przykładem historycznie używanej alternatywy dla IP był NetBIOS (przed przeniesieniem do NetBIOS przez IPX / SPX, a następnie jako NetBIOS przez TCP / IP)
pqnet
[root @ IDCDVAM887 ~] # ip addr show eno33557248 3: eno33557248: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link / ether 00: 50: 56: 9e: 68: 86 brd ff: ff : ff: ff: ff: ff inet 10.54.2.7/32 zakres globalny eno33557248: 1 valid_lft na zawsze preferowany_lft na zawsze W powyższym formacie istnieje interfejs wirtualny „eno33557248: 1” z pewnym adresem IP. Dlaczego nie pokazał się jako osobno? Czy wystarczy wyświetlić tylko oryginalny interfejs jako UP?
Srikanth Ganesan
@pqnet - Próbowałem wyjaśnić, że część „brak adresu IP, brak komunikacji” w pytaniu PO nie jest prawdziwa. Może to nie był najlepszy przykład! Usunę go, ponieważ spowoduje tylko zamieszanie.
garethTheRed
Ta część, teraz zrozumiałem, dziękuję wam obojgu .. !!!
Srikanth Ganesan
polecenie ip addr w RHEL7 dla interfejsu, który skonfigurował wiele wirtualnych interfejsów lub aliasów, powodując wiele nieporozumień, jak sprawdzić, czy to działa, czy nie
Srikanth Ganesan
7

UPStan jest administracyjny stan interfejsu, czyli czy interfejs została włączona. Możesz włączyć dowolny interfejs, używając np

ip l s eth0 up

Jeśli kabel jest podłączony i ustanowione jest łącze, interfejs uzyska również stan operacyjnyRUNNING .

Wiele kart będzie blokować generowanie wychodzących nośnych, jeśli stan administracyjny nie jest UP, a interfejsem, który nie jest, też nie UPmoże być RUNNING, więc jeśli ustawię

ip l s eth0 down

Spodziewałbym się, że mój interfejs lokalny straci jedno UPi drugie RUNNING, a odpowiadający mu interfejs po drugiej stronie również nie będzie RUNNING(ale nadal UP, więc jeśli ponownie włączę moją stronę, dostanę link).

To tylko połączenie Ethernet. Na górze łącza można powiązać różne protokoły, jednym z nich jest IPv4. Domyślnie IPv4 jest powiązany ze wszystkimi interfejsami obsługującymi rodzinę protokołów.

Gdy protokół jest związany, mogę wysyłać i odbierać pakiety z dowolnym adresem przypisanym do interfejsu. Jeśli nie zostanie przypisany żaden adres, oznacza to po prostu, że nie ma prawidłowego adresu, który mógłby zostać użyty dla pakietów wychodzących (więc wysyłanie pakietu nie powiedzie się), ani żadnego adresu emisji pojedynczej, który przychodzący pakiet może być adresowany, aby system rozpoznał go jako lokalny (więc można odbierać tylko pakiety broadcast / multicast).

Nie dotyczy to w najmniejszym stopniu warstwy łącza, ponieważ ustanowi tylko łącze.

Niektóre programy, takie jak klient DHCP, mają specjalne uprawnienia do wysyłania dowolnie sformatowanych pakietów, wypełniania fantastycznego adresu źródłowego lub 0.0.0.0odbierania przybywających pakietów bez względu na to, czy są przeznaczone dla komputera lokalnego. Jest to używane podczas automatycznej konfiguracji adresu IP, gdy żądanie DHCP jest wysyłane przy użyciu adresu źródłowego 0.0.0.0, a odpowiedź z serwera jest adresowana na adres rozgłoszeniowy 255.255.255.255.

Dlatego istnieje ważny przypadek użycia, w którym pakiety IP są wymieniane nawet bez adresu związanego z interfejsem.

Oprócz IPv4 istnieją również IPv6, IPX, AppleTalk itp., Które mogą dzielić tę samą warstwę fizyczną. Po ustanowieniu łącza dowolny z tych protokołów wyższego poziomu może użyć własnej sekwencji aktywacji, aby przejść do stanu operacyjnego.

Simon Richter
źródło
>> interfejs, który nie jest w GÓRZE, nie może również DZIAŁAĆ <<. Myślę, że może to nie dotyczyć komputerów Solaris x86, w których interfejs pokazuje działanie, nawet gdy status nie jest „UP”. Na przykład 1. Zainstaluj nowy interfejs wirtualny. root @ IDCDVAM890: ~ # ifconfig net0: 2 pion 2. Sprawdź status interfejsu. RUNNING, ale nie przypisano adresu IP. root @ IDCDVAM890: ~ # ifconfig net0: 2 net0: 2: flags = 1000842 <BROADCAST, RUNNING , MULTICAST, IPv4> mtu 1500 index 2 inet 0.0.0.0 netmask 0
Srikanth Ganesan
@ SrikanthGanesan, nie potrzebujesz adresu IP, aby interfejs był w stanie UP lub RUNNING, w rzeczywistości interfejs musi być UP i RUNNING, aby DHCP działał. Wygląda na to, że Solaris dziedziczy stan RUNNING interfejsów wirtualnych od rodzica, ale zachowuje osobny stan UP. Jest to nieco nieregularne, interesujące może być sprawdzenie, czy wysłany przez nich agent SNMP naprawia to w widoku zewnętrznym.
Simon Richter,
3

interfejs może być „włączony” nawet bez żadnego adresu. Status „up” odnosi się do warstwy łącza danych (znanej również jako warstwa 2), to znaczy „up” oznacza, że ​​możesz wysyłać i odbierać pakiety ethernetowe. Własność intelektualna jest na tym czymś zbudowana.

Przykładem konfiguracji, w której interfejs działa, ale nie ma adresu IP (i nie należy go przypisywać), jest gdy interfejs jest mostem slave.

pqnet
źródło
0

magicznie, jeśli podasz -4opcję lub -oneline, to naprawdę pokaże interfejs „działający”, jak sobie wyobrażałeś.

Aby ułatwić czytanie, użyłem -briefopcji, ale nie ma to znaczenia dla wniosku.

zobacz wynik upopcji, nadal pokazuje DOWNurządzenie.

ubuntu@ubuntu:~$ ip --brief address show up
lo               UNKNOWN        127.0.0.1/8 ::1/128
eno1             DOWN
enp130s0f0       UP             100.79.223.150/26 fe80::a9e:1ff:fed9:2864/64

zobacz wynik -4opcji, wszystkie z adresami, bez DOWNurządzeń.

ubuntu@ubuntu:~$ ip -4 -brief address show
lo               UNKNOWN        127.0.0.1/8
enp130s0f0       UP             100.79.223.150/26

zobacz wynik -onlineopcji, wszystkie z adresami, bez DOWNurządzeń, ale podziel adresy na IPv4 i IPv6.

ubuntu@ubuntu:~$ ip -oneline address show
1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
1: lo    inet6 ::1/128 scope host \       valid_lft forever preferred_lft forever
4: enp130s0f0    inet 100.79.223.150/26 brd 100.79.223.191 scope global enp130s0f0\       valid_lft forever preferred_lft forever
4: enp130s0f0    inet6 fe80::a9e:1ff:fed9:2864/64 scope link \       valid_lft forever preferred_lft forever
osexp2003
źródło