← Back to course

Sieć z Terminala

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ę:

Misja

Twoja misja jest prosta:

Użyć terminala, aby odpowiedzieć na pytania:

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ć:

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:

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:

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:

  1. Co testuje ping?
  2. Co pokazuje curl -I?
  3. Która komenda pokazuje adresy IP?
  4. Która komenda pokazuje domyślną trasę?
  5. 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:

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.