Sieć z Terminala

Witaj ponownie.
W poprzedniej lekcji nauczyłeś się obserwować procesy i monitorować system.
Teraz wychodzimy poza twój komputer.
Do sieci.
Bo twoja maszyna nie żyje sama. Rozmawia z routerami, serwerami, stronami, API, repozytoriami pakietów i czasem z drukarką, która odmawia współpracy, bo drukarki to w zasadzie przeklęte meble.
Czego Się Nauczysz
W tej lekcji nauczysz się:
- testować dostępność hosta za pomocą
ping; - sprawdzać strony i API za pomocą
curl; - sprawdzać adresy IP za pomocą
ip; - sprawdzać domyślną bramę;
- sprawdzać porty nasłuchujące za pomocą
ss; - rozumieć podstawy DNS;
- diagnozować proste problemy sieciowe.
Misja
Twoja misja jest prosta:
Użyć terminala, aby odpowiedzieć na pytania:
- Czy jestem połączony?
- Czy mogę wejść na stronę?
- Jaki mam adres IP?
- Które porty są otwarte?
- Problem jest w komputerze, routerze czy internet ma teatralny moment?
Test Połączenia za Pomocą ping
Komenda ping sprawdza, czy host jest osiągalny.
Spróbuj:
ping -c 4 example.com
Opcja -c 4 oznacza “wyślij 4 pakiety”.
Możesz zobaczyć:
64 bytes from example.com: icmp_seq=1 ttl=56 time=22.4 ms
64 bytes from example.com: icmp_seq=2 ttl=56 time=21.9 ms
64 bytes from example.com: icmp_seq=3 ttl=56 time=22.1 ms
64 bytes from example.com: icmp_seq=4 ttl=56 time=22.0 ms
To znaczy, że komputer może połączyć się z example.com.
Jeśli się nie uda, może to oznaczać:
- jesteś offline;
- DNS nie działa;
- host blokuje ping;
- sieć ma gorszy dzień.
ping nie jest idealny, ale to dobry pierwszy test.
Jak pytanie: “Halo, internecie, żyjesz?”
Ping do Adresu IP
Spróbuj pingować publiczny adres IP:
ping -c 4 1.1.1.1
Jeśli to działa, ale to nie:
ping -c 4 example.com
to internet może działać, ale DNS może być zepsuty.
DNS zamienia nazwy takie jak example.com na adresy IP.
Bez DNS internet staje się miastem, w którym budynki mają tylko współrzędne i żadnych nazw.
Bardzo techniczne.
Bardzo irytujące.
Pobranie Strony przez curl
curl pozwala robić żądania webowe z terminala.
Spróbuj:
curl https://example.com
Zobaczysz HTML strony.
Może wyglądać chaotycznie.
To normalne.
HTML to materiał, z którego zrobione są strony. Czasem piękny w przeglądarce, straszny w terminalu.
Tylko Nagłówki
Aby pokazać tylko nagłówki HTTP, użyj:
curl -I https://example.com
Możesz zobaczyć:
HTTP/2 200
content-type: text/html
server: ...
Kod statusu jest ważny.
Popularne przykłady:
200 = OK
301 = przeniesiono na stałe
403 = zabronione
404 = nie znaleziono
500 = błąd serwera
Jeśli pracujesz ze stronami albo API, curl staje się małą maszyną prawdy.
Przeglądarka może ukrywać rzeczy.
curl nie dba o uczucia.
Sprawdzenie Adresów IP
Aby zobaczyć interfejsy sieciowe i adresy IP, użyj:
ip addr
Możesz zobaczyć interfejsy takie jak:
lo
wlan0
eth0
enp3s0
Częste znaczenia:
loto interfejs loopback;wlan0często oznacza Wi-Fi;eth0alboenp...często oznacza Ethernet.
Szukaj czegoś takiego:
inet 192.168.1.35/24
To twój lokalny adres IP.
Lokalny IP działa w sieci domowej lub biurowej.
Zwykle nie jest twoim publicznym IP w internecie.
Sprawdzenie Domyślnej Trasy
Aby zobaczyć, którędy domyślnie idzie ruch, użyj:
ip route
Możesz zobaczyć:
default via 192.168.1.1 dev wlan0
To znaczy, że komputer wysyła ruch internetowy przez 192.168.1.1.
To zwykle router.
Router to małe pudełko, które udaje proste, ale potajemnie kontroluje całe twoje cyfrowe życie.
Otwarte Porty z ss
Komenda ss pokazuje sockety i połączenia sieciowe.
Aby zobaczyć porty TCP i UDP w trybie nasłuchiwania:
ss -tuln
Możesz zobaczyć:
Netid State Local Address:Port
tcp LISTEN 0.0.0.0:3000
tcp LISTEN 127.0.0.1:5432
To pokazuje, które usługi nasłuchują.
Przykłady:
3000może być serwerem developerskim Next.js;5432często oznacza PostgreSQL;8080często oznacza lokalny serwer webowy;22zwykle oznacza SSH.
To bardzo przydatne, gdy aplikacja mówi:
“Server is running.”
a przeglądarka mówi:
“Nie.”
Ktoś kłamie.
ss pomaga prowadzić śledztwo.
Sprawdzenie Lokalnego Serwera
Jeśli aplikacja działa na porcie 3000, spróbuj:
curl http://localhost:3000
Albo sprawdź port:
ss -tuln | grep 3000
Jeśli widzisz wynik, coś nasłuchuje na porcie 3000.
Jeśli nic nie widzisz, serwer prawdopodobnie nie działa.
Terminal przemówił.
Chłodno, ale jasno.
Podstawowy Test DNS
Aby sprawdzić, czy domena się rozwiązuje, możesz użyć:
getent hosts example.com
Możesz zobaczyć:
93.184.216.34 example.com
To oznacza, że system potrafi rozwiązać domenę.
Jeśli to nie działa, problemem może być DNS.
Problemy DNS są wyjątkowe: internet może działać, ale nazwy nie.
To jak mieć telefon, ale zapomnieć imiona wszystkich osób.
Częste Błędy
Myślenie, że ping udowadnia wszystko
Niektóre serwery blokują ping.
Więc jeśli to nie działa:
ping -c 4 example.com
nie zawsze znaczy, że strona nie działa.
Spróbuj też:
curl -I https://example.com
Testuj na kilka sposobów.
Sieć to nie jedne drzwi.
To budynek z za dużą liczbą korytarzy.
Mylenie IP lokalnego i publicznego
Twój lokalny IP może wyglądać tak:
192.168.1.35
Publiczny IP widzi internet z zewnątrz.
To nie to samo.
Router zwykle stoi pomiędzy.
Jak ochroniarz w klubie, tylko z migającymi lampkami.
Zapominanie, że porty mają znaczenie
Serwer może działać, ale na innym porcie.
Na przykład:
http://localhost:3000
http://localhost:8080
http://localhost:5173
To różne adresy, bo porty są różne.
Numery portów mają znaczenie.
Przeglądarka nie czyta w myślach.
Praktyka
Spróbuj:
ping -c 4 example.com
ping -c 4 1.1.1.1
curl -I https://example.com
ip addr
ip route
ss -tuln
getent hosts example.com
Odpowiedz:
- Co testuje
ping? - Co pokazuje
curl -I? - Która komenda pokazuje adresy IP?
- Która komenda pokazuje domyślną trasę?
- Która komenda pokazuje porty nasłuchujące?
Mini Wyzwanie
Uruchom lokalny serwer developerski, jeśli go masz.
Na przykład w projekcie Next.js:
npm run dev
Potem w drugim terminalu:
ss -tuln | grep 3000
curl http://localhost:3000
Jeśli aplikacja używa innego portu, zamień 3000 na właściwy.
Gratulacje.
Sprawdzasz lokalny serwer jak poważna osoba.
Niebezpieczny postęp.
Podsumowanie
Dzisiaj nauczyłeś się, że:
pingtestuje osiągalność;curlrobi żądania webowe;curl -Ipokazuje nagłówki HTTP;ip addrpokazuje adresy IP;ip routepokazuje informacje routingu;ss -tulnpokazuje porty nasłuchujące;getent hostsmoże sprawdzić DNS;- lokalny IP i publiczny IP to różne rzeczy;
- porty są częścią adresu.
Sieć z terminala to potężna umiejętność.
Pomaga zrozumieć, czy problem jest w kodzie, serwerze, routerze, DNS czy tajemniczym bagnie zwanym “internet”.
Następna Lekcja
W następnej lekcji poznamy archiwa i kompresję.
Spakujemy pliki, rozpakujemy je i wreszcie zrozumiemy, czym są te .tar.gz.
Spoiler: to nie makaron.