Różnice między wybraną wersją a wersją aktualną.
| — |
bio-sk:podstawowe-narzedzia [2026/10/12 00:47] (aktualna) jkonczak utworzono |
||
|---|---|---|---|
| Linia 1: | Linia 1: | ||
| + | ===== Poruszanie się w konsoli i czytanie pomocy ===== | ||
| + | |||
| + | ==== Powłoka systemowa – szybkie przypomnienie ==== | ||
| + | (Tekstowa) powłoka systemowa (shell), terminal, konsola.\\ | ||
| + | Programy np. ''xfce4-terminal'', ''konsole'' | ||
| + | |||
| + | Zmiana użytkownika – ''su'' \\ | ||
| + | <small> | ||
| + | Wykonania programu na prawach innego użytkownika – ''sudo //polecenie//'' \\ | ||
| + | Użycie ''sudo'' do uruchomienia shella z prawami roota: ''sudo -s'' (lub ''sudo -i'' lub ''sudo su'') | ||
| + | </small> | ||
| + | |||
| + | Historia w konsoli: strzałki góra/dół, ''history'', ctrl+r, ''fc'' | ||
| + | |||
| + | Obsługa polecenia ''less'' (wykonaj dla przykładu: ''convert -h | less'' albo ''man less''): | ||
| + | * przewianie: strzałki, page up / page down | ||
| + | * ''/'' – wyszukuje: | ||
| + | * ''n'' – następne wystąpienie | ||
| + | * ''N'' – poprzednie | ||
| + | * ''g'' – początek dokumentu; ''G'' – koniec | ||
| + | * ''q'' – wyjście | ||
| + | |||
| + | ==== Zapis poleceń ==== | ||
| + | |||
| + | Wzór polecenia (wyjaśnienie: składni od [[https://docs.microsoft.com/pl-pl/windows-server/administration/windows-commands/command-line-syntax-key|Microsoftu]]/[[https://github.com/cli/cli/blob/trunk/docs/command-line-syntax.md|githuba]], opcji od [[https://sourceware.org/glibc/manual/2.44/html_node/Argument-Syntax.html|projektu GNU]]):\\ | ||
| + | ''polecenie {jeden|z|wielu} <arg1> [-opcje <arg2>] --długa_opcja=<arg3> [<arg4>]'' | ||
| + | |||
| + | Przykład polecenia:\\ | ||
| + | ''polecenie jeden //42// [-opcje //foo//] --długa_opcja=//x//'' | ||
| + | |||
| + | Co trzeba wpisać w konsolę:\\ | ||
| + | ''polecenie jeden 44 -oje baz --długa_opcja=x'' | ||
| + | |||
| + | ==== Pomoc systemowa ==== | ||
| + | |||
| + | Pomoc wbudowana w polecenia zwykle jest wyświetlana po podaniu opcji ''-h'' (lub ''--help''), np: | ||
| + | * ''tracepath -h'' | ||
| + | * ''netstat -h'' | ||
| + | * ''ip a h'' | ||
| + | * ''ifconfig -h'' | ||
| + | |||
| + | Dłuższy opis zwykle jest w podręczniku systemowym – komenda ''man'' i towarzyszące, np: | ||
| + | * ''man tracepath'' | ||
| + | * ''man ip'' / ''man 7 ip'' / ''man 8 ip'' | ||
| + | * ''apropos …'' / ''man -k …'' – lista stron które w tytule mają podane słowo, np. ''apropos network'' | ||
| + | * ''whatis …'' / ''man -f …'' – tytuły stron pod podaną nazwą, np. ''whatis write'' | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Programy używane do konfiguracji i diagnostyki sieci w Linuksie ===== | ||
| + | |||
| + | <small> | ||
| + | **Uwaga:** informacje o narzędziach są podane dla wyjaśnienia dlaczego kilka | ||
| + | komend realizuje to samo zadanie i dla uporządkowania wiedzy. Treści z tej | ||
| + | sekcji (listy komend, nazwy paczek narzędzi, etc.) nie będą w żaden sposób | ||
| + | wymagane na wejściówkach/teście. | ||
| + | </small> | ||
| + | |||
| + | ==== Narzędzia do konfiguracji sieci ==== | ||
| + | |||
| + | W Linuksie funkcjonują dwa zestawy podstawowych narzędzi do konfiguracji sieci. | ||
| + | |||
| + | Pakiet narzędzi ''[[https://wiki.linuxfoundation.org/networking/net-tools|net-tools]]'' | ||
| + | powstał w 1983 roku, początkowo w systemie BSD. | ||
| + | Od tego czasu jest utrzymywany, jednak większość jego składników jest uznawana | ||
| + | za przestarzałe. Z tego pakietu na zajęciach pojawiają się komendy ''arp'', | ||
| + | ''hostname'', ''ifconfig'', ''netstat'' i ''route''. | ||
| + | |||
| + | Około roku 2000 stworzono pakiet | ||
| + | ''[[https://wiki.linuxfoundation.org/networking/iproute2|iproute2]]'', mający | ||
| + | zastąpić ''net-tools'' (i kilka innych, napisanych by udostępnić nowe możliwości | ||
| + | jądra systemu Linux). Z tego pakietu na zajęciach pojawiają się komendy ''ip'' | ||
| + | i ''ss''. | ||
| + | \\ | ||
| + | Na komendę ''ip'' składa się wiele "podkomend", np. ''ip link'', ''ip address'', | ||
| + | ''ip neighbour'' czy ''ip route'', a pomoc do tej komendy jest rozbita na wiele | ||
| + | stron podręcznika – ''man ip-link'', ''man ip-address'', itd. | ||
| + | |||
| + | ==== Narzędzia do diagostyki ==== | ||
| + | |||
| + | Używane na zajęciach narzędzia do sprawdzania czy i jak działa sieć to między innymi: | ||
| + | * narzędzia z paczki ''[[https://wiki.linuxfoundation.org/networking/iputils|iputils]]'' takie jak ''arping'', ''ping'', czy ''tracepath'' | ||
| + | * <html><a href="https://www.remlab.net/ndisc6/" class="urlextern" title="https://www.remlab.net/ndisc6/" rel="nofollow"><code>ndisc6</code> i <code>rdisc6</code> </a></html> | ||
| + | * ''[[https://traceroute.sourceforge.net/|traceroute]]'', ''[[https://www.bitwizard.nl/mtr/|mtr]]'' | ||
| + | * ''[[https://www.wireshark.org/|wireshark]]'', ''[[https://www.tcpdump.org/|tcpdump]]'' | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Interfejsy sieciowe, konfiguracja adresów, sprawdzanie łączności ===== | ||
| + | |||
| + | Karta sieciowa (//NIC – network interface card//) – fizyczne urządzenie do komunikacji sieciowej. \\ | ||
| + | Interfejs sieciowy (//network interface//) – logiczne urządzenie do komunikacji sieciowej. | ||
| + | |||
| + | Interfejsy można podzielić na fizyczne (reprezentują fizyczne urządzenia sieciowe) i wirtualne (reszta). | ||
| + | \\ | ||
| + | Przykładem interfejsu wirtualnego jest loopback – wirtualne urządzenie sieciowe łączące komputer z samym sobą. | ||
| + | |||
| + | ==== Wyświetlanie listy urządzeń i adresów ==== | ||
| + | |||
| + | | Lista aktywnych urządzeń | ''ifconfig'' | ''ip link show up'' | | ||
| + | | Lista wszystkich urządzeń | ''ifconfig -a'' | ''ip link [show]'' | | ||
| + | | Lista adresów sieciowych | ''ifconfig [-a]'' | ''ip address [show [up]]'' | | ||
| + | |||
| + | __//Zapamiętaj://__ komenda ''ip address'' konfiguruje adresy, ''ip link'' konfiguruje | ||
| + | urządzenia. | ||
| + | |||
| + | Nazwy podpoleceń i akcji polecenia ''ip'' można dowolnie skracać, ale jeśli | ||
| + | skróty nie są jednoznaczne, to narzędzie wybiera jedno rozwinięcie zamiast | ||
| + | wyświetlić komunikat o błędzie (sic!). \\ | ||
| + | Np. ''ip link show'' można zapisać jako ''ip l sh'', ale ''ip l s'' jest już | ||
| + | traktowane jako ''ip link set'' | ||
| + | |||
| + | Polecenie ''ip'' przyjmuje też opcje (podawane bezpośrednio po ''ip''), wśród | ||
| + | których warto znać opcję ''--brief'' (<small>i ''--json''</small>). | ||
| + | \\ | ||
| + | Porównaj: ''ip addr'' i ''ip --brief addr'' | ||
| + | |||
| + | ==== [ekstra] Tradycyjne nazwy urządzeń ==== | ||
| + | |||
| + | Tradycyjne nazwy urządzeń (zwykle zakończone kolejnym numerem, jak np. ''eth0'') to m. inn.: | ||
| + | * loopback (pętla zwrotna, połączenie do siebie samego) ''lo'' | ||
| + | * przewodowe karty sieciowe ''eth'' | ||
| + | * bezprzewodowe karty sieciowe ''wlan, ath, wifi, radio'' | ||
| + | * ''firewire'', infiniband ''ib'' | ||
| + | * urządzenia wirtualne: wirtualne karty sieciowe ''veth, dummy'', <html> | ||
| + | </html>mostki ''br'', urządzenia programowe ''tun, tap'', <html> | ||
| + | </html>tunele ''sit, tnl, ppp, vpn, gre'' | ||
| + | |||
| + | Około 2015 roku w systemie Linux zmieniono sposób nadawania nazw urządzeniom. \\ | ||
| + | Stąd dla fizycznych interfejsów można spotkać nazwy: ''eno1, enp2s0, wlp0s20f3, enx0050568a281e'' | ||
| + | |||
| + | Nazwy takie jak ''eth0'', ''wlan0'' są dalej powszechnie używane w tutorialach, | ||
| + | dokumentacjach i podręcznikach jako generyczna nazwa urządzenia danego rodzaju. | ||
| + | |||
| + | <small> | ||
| + | Wcześniej to, która karta sieciowa dostanie który numer (eth0, eth1) było trudne | ||
| + | do przewidzenia (ale zwykle stałe dla danej konfiguracji sprzętowej). \\ | ||
| + | Co gorsza, kolejność po dodaniu nowej karty sieciowej lub awarii jednej z kart | ||
| + | mogła ulec zmianie. \\ | ||
| + | Więcej szczegółów: | ||
| + | [[https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/|[1]]] | ||
| + | [[https://en.wikipedia.org/wiki/Consistent_Network_Device_Naming|[2]]] | ||
| + | </small> | ||
| + | |||
| + | ==== Sprawdzanie stanu i włączanie interfejsu ==== | ||
| + | |||
| + | | Włączenie interfejsu | ''ifconfig //eth0// up'' | ''ip link set dev //eth0// up'' | | ||
| + | | Wyłączenie interfejsu | ''ifconfig //eth0// down'' | ''ip link set dev //eth0// down'' | | ||
| + | |||
| + | Stan interfejsu można sprawdzić komendami wyświetlającymi listę urządzeń (patrz wyżej).\\ | ||
| + | Dla kart ethernetowych dodatkowe informacje można odczytać narzędziem ''ethtool'': | ||
| + | * ''ethtool <//ifname//>'' – wyświetla podstawowe informacje \\ | ||
| + | * ''ethtool --identify <//ifname//>'' – prosi kartę o to, by zamrugała diodami tak żeby można było ją odróżnić od innych((Twórca sterownika lub producent sprzętu określa jak to mruganie wygląda)) | ||
| + | | ||
| + | **Informacje o tym, czy połączenie na warstwie fizycznej zostało nawiązane można sprawdzić przez:**<html><div style="margin-top:-1.2em"></div></html> | ||
| + | ^ Polecenie ^ Wynik ^ oznacza, że karta jest… ^ | ||
| + | | Każde z: \\ ''ip link'' \\ ''ip -br link'' \\ ''ip address'' | //brak pozostałych// | … wyłączona | | ||
| + | | ::: | ''<…,**NO-CARRIER**,…,**UP**,…> state …'' | … włączona, ale nie widzi nikogo po drugiej stronie | | ||
| + | | ::: | ''<…,**UP**,…,**LOWER_UP**,…> state …'' | … włączona i wykryła inną kartę po drugiej stronie | | ||
| + | | ''ifconfig'' | //brak pozostałych// | … wyłączona | | ||
| + | | ::: | ''<…,**UP**,…>'' | … włączona, ale nie widzi nikogo po drugiej stronie | | ||
| + | | ::: | ''<…,**UP**,…,**RUNNING**,…>'' | … włączona i wykryła inną kartę po drugiej stronie | | ||
| + | | ''ethtool'' | ''Link detected: no'' | … wyłączona **lub** nie widzi nikogo po drugiej stronie | | ||
| + | | ::: | ''Link detected: yes'' | … włączona i wykryła inną kartę po drugiej stronie | | ||
| + | | lampka przy porcie | nie świeci | … wyłączona **lub** nie widzi nikogo po drugiej stronie | | ||
| + | | ::: | zapalona | … włączona i wykryła inną kartę po drugiej stronie | | ||
| + | |||
| + | __//Zauważ://__ komenda ''ip link'' / ''ip address'' pokazuje też pole | ||
| + | ''state'' z wartościami ''UP''/''DOWN'' i koloruje je na zielono/czerwono. | ||
| + | To pole pokazuje stan połączenia, a nie to czy interfejs jest włączony, i może | ||
| + | w ogóle nie pokazywać stanu (np. mieć wartość ''UNKNOWN'') albo pokazywać | ||
| + | jeszcze inne znane stany (np. ''DORMANT''). | ||
| + | |||
| + | ==== Ustawianie / dodawanie / usuwanie adresów IP ==== | ||
| + | |||
| + | === ip address === | ||
| + | | Dodanie nowego adresu do interfejsu | ''ip addr add //10.0.0.1/25// dev //eth0//'' \\ ''ip addr add //fd00::1/64// dev //eth0//''| | ||
| + | | Usunięcie adresu z interfejsu | ''ip addr del //10.0.0.1/25// dev //eth0//'' \\ ''ip addr del //fd00::1/64// dev //eth0//''| | ||
| + | | Wyczyszczenie adresów interfejsu (groźne) | ''ip addr flush dev //eth0//'' | | ||
| + | |||
| + | __//Uwaga://__ Każdy adres bez maski polecenie ''ip'' interpretuje jako adres | ||
| + | z maską /32 (IPv4) lub /128 (IPv6). Zawsze podawaj maskę manipulując adresami | ||
| + | poleceniem ''ip''. | ||
| + | |||
| + | === ifconfig === | ||
| + | | //Zmiana// bieżącego adresu IPv4 i/lub maski | ''ifconfig //eth0// [//10.0.0.1//] [netmask //255.255.255.128//]'' | | ||
| + | | Dodanie nowego adresu IPv4 do urządzenia \\ (tworząc alias urządzenia) | ''ifconfig //eth0:something// //10.0.0.1// …'' | | ||
| + | | 'Usunięcie' dodatkowego adresu IPv4 z urządzenia \\ (usunięcie aliasu) | ''ifconfig //eth0:something// down'' | | ||
| + | | 'Usunięcie' podstawowego adresu IPv4 z urządzenia | ''ifconfig //eth0// 0'' | | ||
| + | | Dodanie nowego adresu IPv6 | ''ifconfig //eth0// add //fd00::1/64//'' | | ||
| + | | Usunięcie adresu IPv6 | ''ifconfig //eth0// del //fd00::1/64//'' | | ||
| + | |||
| + | __//Zauważ://__ w poleceniu ''ifconfig'' adres IPv4 i adresy IPv6 konfiguruje się inaczej. \\ | ||
| + | ''ifconfig'' umie ustawić wiele adresów IPv6 na interfejsie, ale tylko jeden adres IPv4. \\ | ||
| + | ''ifconfig'' domyślnie dla IPv4 dobiera maskę pasującą do historycznej klasy adresu, a dla IPv6 /128. | ||
| + | |||
| + | <small> | ||
| + | Polecenie ''ifconfig'' pozwala na zmianę wielu ustawień naraz, dla przykładu | ||
| + | poniższe polecenie ustawi adres i włączy interfejs: \\ | ||
| + | ''ifconfig dummy0 192.168.0.1 netmask 255.255.255.0 up'' | ||
| + | </small> | ||
| + | |||
| + | ==== Sprawdzanie łączności IP ==== | ||
| + | * ''ping <//cel//>'' – sprawdza czas odpowiedzi od podanego adresu | ||
| + | * ''traceroute {-I|-T} <//cel//>'' – sprawdza trasę, czyli jakie routery IP są na drodze do podanego adresu \\ <small>Z uwagi na firewall Politechniki proszę używać opcji ''-I'' lub ''-T'', która go skutecznie omija</small> | ||
| + | * ''mtr <//cel//>'' – ponawia sprawdzanie trasy co sekundę ("połączenie" poleceń wyżej) | ||
| + | <small>Jako cel można podać adres IP (np. ''ping 150.254.30.29'') lub nazwę słowną (przykładowo: ''ping cs.put.poznan.pl'', ''ping lab-net-1'')</small> | ||
| + | |||
| + | Podane programy przyjmują też opcje ''-4'' i ''-6'' to użycia odpowiednio protokołu IPv4 i IPv6, np: | ||
| + | ''traceroute -4 -T //nic.cl//'' | ||
| + | |||
| + | <small> | ||
| + | Używając adresów IPv6 ze specjalnych bloków oznaczonych jako | ||
| + | [[https://en.wikipedia.org/wiki/Link-local_address|link-local]] | ||
| + | należy jeszcze dodać na jakim interfejsie znajduje się cel, używając składni | ||
| + | ''//adres//%//interfejs//'', np. ''ping fe80::d8a8:fbff:fe92:2ddf%eth0''. | ||
| + | </small> | ||
| + | |||
| + | ==== Przykładowe wyniki poleceń ==== | ||
| + | |||
| + | __//Uwaga://__ W przykładach na stronie zwykle podświetlony tekst ma opis jako | ||
| + | dymek (//tooltip/title//) widoczny po najechaniu i zatrzymaniu myszy na obszarze | ||
| + | podświetlonego tekstu. | ||
| + | |||
| + | ++++ Przykład ip --brief link: | {{section>bio-sk:podstawowe-narzedzia:przyklady#ip_--brief_link&inline&noheader}} ++++ | ||
| + | ++++ Przykład ip link: | {{section>bio-sk:podstawowe-narzedzia:przyklady#ip_link&inline&noheader}} ++++ | ||
| + | ++++ Przykład ip --brief address: | {{section>bio-sk:podstawowe-narzedzia:przyklady#ip_--brief_address&inline&noheader}} ++++ | ||
| + | ++++ Przykład ip address: | {{section>bio-sk:podstawowe-narzedzia:przyklady#ip_address&inline&noheader}} ++++ | ||
| + | ++++ Przykład ifconfig -a: | {{section>bio-sk:podstawowe-narzedzia:przyklady#ifconfig_-a&inline&noheader}} ++++ | ||
| + | ++++ Inny przykład ifconfig i ip address | | ||
| + | <html><pre> | ||
| + | <b>/ # ip a</b> | ||
| + | 10: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 | ||
| + | link/ether da:a8:fb:92:2d:df brd ff:ff:ff:ff:ff:ff link-netnsid 0 | ||
| + | inet <span title="Adres IPv4 na tym interfejsie" style="background-color:rgba(0,255,0,0.2)">192.168.5.2</span><span title="Maska sieci" style="background-color:rgba(128,0,128,0.2)">/30</span> <span title="Adres rozgłoszeniowy (nie adres komputera!)" style="background-color:rgba(0,0,255,0.1)">brd 192.168.5.3</span> scope link eth0 | ||
| + | valid_lft forever preferred_lft forever | ||
| + | inet <span title="Adres IPv4 na tym interfejsie" style="background-color:rgba(0,255,0,0.2)">172.19.67.0</span><span title="Maska sieci" style="background-color:rgba(128,0,128,0.2)">/19</span> <span title="Adres rozgłoszeniowy (nie adres komputera!)" style="background-color:rgba(0,0,255,0.1)">brd 172.19.95.255</span> scope global eth0:1 | ||
| + | valid_lft forever preferred_lft forever | ||
| + | inet <span title="Adres IPv4 na tym interfejsie" style="background-color:rgba(0,255,0,0.2)">10.42.0.238</span><span title="Maska sieci" style="background-color:rgba(128,0,128,0.2)">/24</span> scope global eth0 | ||
| + | valid_lft forever preferred_lft forever | ||
| + | inet6 <span title="Adres IPv6" style="background-color:rgba(255,255,0,0.2)">fe80::d8a8:fbff:fe92:2ddf</span>/<span title="Długość prefiksu" style="background-color:rgba(255,128,80,0.2)">64</span> scope link | ||
| + | valid_lft forever preferred_lft forever | ||
| + | |||
| + | <b>/ # ifconfig</b> | ||
| + | eth0 Link encap:Ethernet HWaddr DA:A8:FB:92:2D:DF | ||
| + | inet addr:<span title="Adres IPv4 na tym interfejsie" style="background-color:rgba(0,255,0,0.2)">192.168.5.2</span> Bcast:192.168.5.3 Mask:<span title="Maska sieci" style="background-color:rgba(128,0,128,0.2)">255.255.255.252</span> | ||
| + | inet6 addr: <span title="Adres IPv6" style="background-color:rgba(255,255,0,0.2)">fe80::d8a8:fbff:fe92:2ddf</span>/<span title="Długość prefiksu" style="background-color:rgba(255,128,80,0.2)">64</span> Scope:Link | ||
| + | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | ||
| + | RX packets:1326 errors:0 dropped:0 overruns:0 frame:0 | ||
| + | TX packets:1063 errors:0 dropped:0 overruns:0 carrier:0 | ||
| + | collisions:0 txqueuelen:1000 | ||
| + | RX bytes:2681637 (2.5 MiB) TX bytes:123670 (120.7 KiB) | ||
| + | |||
| + | eth0:1 Link encap:Ethernet HWaddr DA:A8:FB:92:2D:DF | ||
| + | inet addr:<span title="Adres IPv4 na tym interfejsie" style="background-color:rgba(0,255,0,0.2)">172.19.67.0</span> Bcast:172.19.95.255 Mask:<span title="Maska sieci" style="background-color:rgba(128,0,128,0.2)">255.255.224.0</span> | ||
| + | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 | ||
| + | </pre></html> | ||
| + | Uwaga: ifconfig w różnych dystrybucjach może mieć nieznacznie inny format wyjścia. | ||
| + | ++++ | ||
| + | |||
| + | ==== [Ekstra] Windows ==== | ||
| + | |||
| + | Do wyświetlenia listy interfejsów i adresów IP można użyć m. inn. komendy ''ipconfig'', | ||
| + | domyślnie pokazującej tylko aktywne interfejsy; ''ipconfig /all'' pokaże wszystkie | ||
| + | |||
| + | Adresy IP można ustawić z "okienek" [[https://support.microsoft.com/en-us/windows/experience/connectivity-networking/essential-network-settings-and-tasks-in-windows#change-tcpip-settings|https://support.microsoft.com/…#change-tcpip-settings]] \\ | ||
| + | Z linii poleceń należy użyć komendy ''netsh'', kontekstu ''netsh interface ip'' | ||
| + | [[https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/netsh|https://learn.microsoft.com/…/netsh]] \\ | ||
| + | Z PowerShella należy użyć cmdletów modułu NetTCPIP: | ||
| + | [[https://learn.microsoft.com/en-us/powershell/module/nettcpip/?view=windowsserver2025-ps|https://learn.microsoft.com/…/nettcpip/…]] | ||
| + | |||
| + | Windows dostarcza z systemem programy ''ping'' (przełączniki nie są zgodne; patrz ''ping /?'') i ''tracert''. | ||