Narzędzia użytkownika

Narzędzia witryny


bio-sk:podstawowe-narzedzia

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

— 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: &​lt;​BROADCAST,​MULTICAST,​UP,​LOWER_UP&​gt;​ 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''​.
  
bio-sk/podstawowe-narzedzia.txt · ostatnio zmienione: 2026/10/12 00:47 przez jkonczak