Serwer nie odpowiada, a w terminalu widzisz kilka interfejsów i kilka adresów. Polecenie ip a pokaże adresy przypisane do interfejsów Linuksa, choć nie zawsze ten, którego szukasz. Adres widoczny na serwerze może być prywatny, a jego obecność sama w sobie nie potwierdza, że działa trasa do sieci.

Adres interfejsu to dopiero początek diagnozy
ip ato skrócona forma polecenia wyświetlającego adresy interfejsów.lojest interfejsem lokalnym; adres127.0.0.1nie jest adresem dostępnym z innego komputera.scope globalopisuje zasięg adresu w konfiguracji systemu, ale nie dowodzi, że jest on publicznym adresem internetowym.ip route getpomaga sprawdzić, którędy system wyśle pakiet do wskazanego celu.
ip a pokazuje adresy przypisane do interfejsów
Gdy wpisujesz ip a, prosisz Linuksa o wyświetlenie informacji o adresach sieciowych. To skrót od ip address; możesz też użyć pełnej postaci ip address show. Polecenie odczytuje konfigurację interfejsów, więc zobaczysz zarówno połączenia fizyczne, jak i wirtualne.
Wynik jest pogrupowany według interfejsów, czyli systemowych reprezentacji połączeń sieciowych. Nazwa lo oznacza pętlę zwrotną, a nazwy takie jak ens3 czy wlp2s0 mogą wskazywać odpowiednio kartę sieciową serwera lub Wi-Fi. W środowisku kontenerowym pojawią się też interfejsy wirtualne, na przykład docker0 albo veth....
To, że interfejs jest widoczny, nie oznacza jeszcze, że połączenie działa. Najpierw sprawdź jego stan, a potem odczytaj przypisane adresy.
Adres 127.0.0.1 nie prowadzi do serwera
Wynik potrafi zmylić, gdy pod lo widzisz 127.0.0.1/8 lub ::1/128. Są to adresy pętli zwrotnej: służą do komunikacji z tym samym systemem. Jeśli aplikacja nasłuchuje wyłącznie na 127.0.0.1, inne urządzenie nie połączy się z nią przez adres karty sieciowej.
Przy pozostałych interfejsach zwróć uwagę na wiersze zaczynające się od inet dla IPv4 i inet6 dla IPv6. Przykładowy zapis 192.168.1.24/24 zawiera adres oraz długość prefiksu, która określa część sieciową. Uważam, że przy pierwszym odczycie lepiej szukać właśnie adresu przy właściwym interfejsie, zamiast uznać pierwszy wyświetlony adres za ten, którego potrzebuje aplikacja.
Znaczniki takie jak UP i LOWER_UP opisują stan interfejsu i łącza, a dynamic może wskazywać adres przydzielony dynamicznie. Z kolei scope link przy adresie IPv6 zaczynającym się od fe80:: oznacza adres przeznaczony do komunikacji w obrębie lokalnego łącza. Nie zastępuje on adresu używanego do połączeń poza tym segmentem sieci.
Adres z scope global nie musi być publiczny
Tu często zaczyna się pomyłka: słowo global w wyniku nie gwarantuje, że adres jest osiągalny z internetu. Oznacza zakres adresu w konfiguracji sieciowej, a dostępność z zewnątrz zależy również od tras, zapory, routingu operatora i ewentualnego NAT, czyli translacji adresów.
Przykład: interfejs serwera może mieć adres 10.0.2.15/24 ze znacznikiem scope global, choć ruch do internetu przechodzi przez router, który udostępnia na zewnątrz inny adres. W takiej sytuacji ip a poprawnie pokazuje adres serwera, ale nie odpowiada na pytanie, jaki adres zobaczy zewnętrzny klient. Do tego trzeba sprawdzić także trasę i konfigurację sieci poza samym hostem.
Dokumentacja ip-address(8) w pakiecie iproute2 opisuje polecenie jako narzędzie do wyświetlania i zarządzania adresami przypisanymi do urządzeń. Sam wynik nie stanowi testu dostępności usługi ani potwierdzenia publicznego routingu.
Gdy serwer nie łączy się z siecią, sprawdź interfejs i trasę
Zamiast od razu zmieniać konfigurację, zawęź problem dwoma odczytami. Najpierw wyświetl aktywne interfejsy w krótszej postaci, a potem sprawdź, jak system chce dotrzeć do konkretnego adresu.
ip -br a
ip route
ip route get 1.1.1.1W pierwszym wierszu komenda ip -br a pokazuje interfejsy i przypisane do nich adresy w formie skróconej. ip route wyświetla tablicę tras, a ip route get 1.1.1.1 wskazuje trasę, interfejs i adres źródłowy wybrane przez system dla tego celu. Według dokumentacji ip-route(8) polecenie get wykonuje wyszukanie trasy dla wskazanego adresu.
| Sytuacja | Możliwa przyczyna | Co sprawdzić |
|---|---|---|
Interfejs ma stan DOWN |
Interfejs jest wyłączony albo nieaktywne jest połączenie | ip link show oraz konfigurację systemu zarządzającego siecią |
Przy interfejsie brak wiersza inet |
Brak adresu IPv4, problem z DHCP lub konfiguracją statyczną | ip -4 a i ustawienia DHCP lub NetworkManagera |
Adres istnieje, ale ip route nie pokazuje trasy domyślnej |
System może nie mieć skonfigurowanej drogi do sieci poza lokalnym segmentem | Trasę domyślną i konfigurację bramy |
ip route get wskazuje nieoczekiwany interfejs lub adres źródłowy |
Ruch może wychodzić inną kartą, niż zakłada aplikacja | Reguły routingu, tablice tras i konfigurację VPN |
Adres należy do docker0 lub interfejsu veth... |
To może być sieć kontenera, a nie interfejs używany przez hosta do połączeń zewnętrznych | Adres hosta, trasę oraz konfigurację sieci kontenera |
W typowym przypadku serwer pokazuje kilka kart, a aplikacja odpowiada tylko lokalnie. Jeśli jej port nasłuchuje na 127.0.0.1, zmiana adresu interfejsu nie wystarczy: trzeba sprawdzić adres nasłuchu procesu, zaporę i routing. Nie zmieniaj stanu interfejsu przez SSH bez planu awaryjnego, bo odłączenie karty obsługującej sesję może przerwać dostęp do maszyny.
Krótka komenda jest dobra do diagnozy, nie do ślepej zmiany
Do szybkiego odczytu zacznij od ip -br a; gdy potrzebujesz szczegółów, użyj ip a, a przy problemie z wyjściem do sieci dodaj odczyt tras. Taki podział oszczędza czas, bo odróżnia brak adresu od braku drogi do celu, czyli dwóch problemów, które łatwo pomylić.
Wynik polecenia opisuje bieżący stan jądra systemu. Sama obecność adresu nie dowodzi, że aplikacja go używa, że usługa nasłuchuje na właściwym interfejsie ani że ustawienie przetrwa restart. Gdy terminal pokazuje kilka adresów, zacznij od nazwy interfejsu i trasy, a dopiero potem zmieniaj konfigurację.
