(Tekstowa) powłoka systemowa (shell), terminal, konsola.
Programy np. xfce4-terminal
, konsole
Zmiana użytkownika – su
Wykonania programu na prawach innego użytkownika – sudo
Użycie sudo
do uruchomienia shella z prawami roota: sudo -s
(lub sudo -i
lub sudo su
)
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
):
/
wyszukujen
– następne wystąpienieN
– poprzednieg
– początek dokumentu; G
– koniecq
– wyjście
Wzór polecenia ([1]):
polecenie {jeden|z|wielu} <argument1> [-opcja1 <argument2>] --długa_opcja=<argument3> [opcja2]
Przykład polecenia:
polecenie jeden 42 [-opcja1 foo] --długa_opcja=x
Co trzeba wpisać w konsolę:
polecenie jeden 44 -oja1 baz --długa_opcja=x
Pomoc wbudowana w polecenia:
tracepath -h
netstat -h
ip a h
ifconfig -h
Podręcznik systemowy – komenda man
i towarzyszące, np:
man tracepath
man ip
apropos
– lista stron które w tytule mają podane słowo, np. apropos network
whatis
– tytuły stron pod podaną nazwą, np. whatis write
Adresacja IP jest omawiana na wykładzie. Poniższe materiały mają przedstawić potrzebne do laboratoriów elementy adresacji na wypadek gdyby laboratoria były przed wykładem.
Adres IPv4 to 32 bitowa liczba.
Adres IPv4 zapisuje się dzieląc go na 4 ośmiobitowe bloki oddzielone kropką,
zapisując każdy z nich jako liczba dziesiętna (ang.
dotted-decimal notation).
Przykładowy adres IPv4: 150.254.5.114
Adres IPv6 to 128 bitowa liczba.
Adres IPv6 zapisuje się dzieląc go na 8 szesnastobitowych bloki oddzielone
dwukropkiem, zapisując każdy z nich jako liczbę szesnastkową.
W każdej grupie wiodące zera są pomijane, a najdłuższy ciąg bloków o wartości
zero jest zapisywany jako podwójnym dwukropek.
Przykładowy adres IPv6: 2620:0:2830:200::b:8
Każdy adres IP należy do jakiejś sieci (w IPv6 nazywanej zwykle prefiksem).
Lokalny administrator ustala do jakiej sieci należy konkrety adres IP wybierając
maskę sieci (dla IPv4) lub długość prefiksu (dla IPv6).
Znając jedynie adres nie da się powiedzieć jaką maskę sieci/długość prefiksu
ustawił administrator.
Maska oddziela część wspólną dla wszystkich adresów z danej sieci od części
która określa komputer wewnątrz sieci.
W IPv4 maska była tradycyjnie zapisywana identycznie jak adres sieci i składała
się w zapisie binarnym z ciągu jedynek po którym następował ciąg zer.
Zwykle maskę / długość prefiksu zapisuje się jako /n
, gdzie n to
długość maski/prefiksu.
Przykładowy zapis maski dla IPv4: /24 (lub odpowiadające mu 255.255.255.0)
Przykładowy zapis długości prefiksu dla IPv6: /64
W IPv4 pierwszy adres w sieci to adres sieci i nie może zostać ustawiony żadnemu
urządzeniu. Ostatni adres w sieci to adres rozgłoszeniowy tej sieci i też
może być nadany żadnemu urządzeniu.
W IPv6 pierwszy adres prefiksu zaleca się nadać routerowi.
Cała pula (tzn. cały zakres, zbiór wszystkich) adresów IP jest podzielona m. inn. na adresy publiczne i prywatne.
Publiczne adresy IP są (hierarchicznie) przydzielane w uporządkowany sposób organizacjom, usługodawcom internetowym i użytkownikom końcowym. Za pośrednictwem internetu możliwa jest komunikacja między dowolnymi dwoma adresami publicznymi.
Komunikacja między adresami prywatnymi możliwa jest tylko w sieciach lokalnych, więc o podziale i użyciu adresów prywatnych decyduje lokalny administrator.
Adresy sieci prywatnych IPv4 to 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.
Dla IPv6 odpowiednikiem adresów prywatnych są adresy site-local (fc00::/7), z
których używa się adresów z zakresu fd00::/8 (i z tych adresów tworzy się
sieci z długością prefiksu /64).
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.
Pakiet narzędzi net-tools
powstał w 1983 roku, początkowo w systemie BSD.
Od tego czasu jest utrzymywany, jednak od przeszło 10 lat jest uznawany za
przestarzały i nie jest rozwijany dalej.
W skład wchodzą:
arp dnsdomainname domainname hostname
ifconfig ipmaddr iptunnel mii-tool nameif
netstat nisdomainname plipconfig rarp route
slattach ypdomainname
Około roku 2000 stworzono pakiet iproute2
, mający zastąpić net-tools
(i inne, powstałe by udostępnić użytkownikom nowe możliwości jądra systemu Linux).
Pakiet iproute2
zawiera następujące polecenia:
arpd ctstat genl ifcfg ifstat ip lnstat
nstat routef routel rtacct rtmon rtpr rtstat ss tc
(Narzędzia: omawiane | ważne albo popularne | mocno
przestarzałe, mało znane albo zbędne
)
man ifconfig ip-link ip-address
iputils
[1] - narzędzia
arping clockdiff ipg ping ping6 rarpd
rdisc tftpd tracepath tracepath6 traceroute6
traceroute
, mtr
Karta sieciowa (NIC – network interface card) – fizyczne urządzenie do komunikacji sieciowej.
Interfejs sieciowy (network interface) – logiczne urządzenie do komunikacji sieciowej.
Interface'y można podzielić na fizyczne (reprezentują fizyczne urządzenia sieciowe) i wirtualne (reszta).
Lista aktywnych urządzeń | ifconfig | ip link show up |
Lista wszystkich urządzeń | ifconfig -a | ip link [show] |
Lista adresów | ifconfig [-a] | ip address [show [up]] |
Wszystkie argumenty polecenia ip
można dowolnie skracać, ale jeśli skróty kolidują, 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
(i --json
).
Porównaj: ip link
i ip --brief link
Tradycyjne nazwy urządzeń:
lo
eth
wlan, ath, wifi, radio
firewire
, infiniband ib
veth, dummy
,
mostki br
, urządzenia programowe tun, tap
,
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, sls1, wwp2s0, wlx78e7d1ea46da
Wcześniej to, która karta sieciowa dostanie który numer (eth0, eth1) było trudne
do przewidzenia (ale 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:
[1]
[2]
ping <cel>
traceroute {-I|-T} <cel>
-I
lub -T
, która go skutecznie omijamtr <cel>
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
)
Podane programy przyjmują też opcje -4
i -6
to użycia odpowiednio protokołu IPv4 i IPv6, np:
traceroute -4 -T nic.cl
Włączenie interfejsu | ifconfig eth0 up | ip link set dev eth0 up |
Wyłączenie interfejsu | ifconfig eth0 down | ip link set dev eth0 down |
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)
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 klasy adresu, a dla IPv6 /128.
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
/ # ip a 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 192.168.5.2/30 brd 192.168.5.3 scope link eth0 valid_lft forever preferred_lft forever inet 172.19.67.0/19 brd 172.19.95.255 scope global eth0:1 valid_lft forever preferred_lft forever inet 10.42.0.238/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::d8a8:fbff:fe92:2ddf/64 scope link valid_lft forever preferred_lft forever / # ifconfig eth0 Link encap:Ethernet HWaddr DA:A8:FB:92:2D:DF inet addr:192.168.5.2 Bcast:192.168.5.3 Mask:255.255.255.252 inet6 addr: fe80::d8a8:fbff:fe92:2ddf/64 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:172.19.67.0 Bcast:172.19.95.255 Mask:255.255.224.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1Uwaga: ifconfig w różnych dystrybucjach może mieć nieznacznie inny format wyjścia.
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/change-tcp-ip-settings-bd0a07af-15f5-cd6a-363f-ca2b6f391ace
Z linii poleceń należy użyć komendy netsh
, kontekstu netsh interface ip
https://learn.microsoft.com/…
Z PowerShella należy użyć cmdletów modułu NetTCPIP:
https://learn.microsoft.com/en-us/powershell/module/nettcpip/?view=windowsserver2022-ps
Windows dostarcza z systemem programy ping
(przełączniki nie są zgodne; patrz ping /?
) i tracert
.