# SIECI Warsztaty 1-3
###### tags: `Sieci`
### [-> Ćwiczenia 1-3 <-](https://hackmd.io/@lorakis/sieci2k21c1-3)
### [-> Warsztaty 4-6 <-](https://hackmd.io/@lorakis/sieci2k21w4-6)
### [-> Warsztaty 7-9 <-](https://hackmd.io/@lorakis/sieci2k21w7-9)
# Warsztaty 1
link: **[LISTA1](https://canvas.ii.uni.wroc.pl/courses/10/files/1475/download?wrap=1)**
## Tutorial #1

`V0$> ip addr`
`V0$> dhclient -v enp0s3`

Ile rządań HTTP? - 2
Do jakich serwerów są one skierowane?
http://example.org/favicon.ico
http://example.org/

`V0$> host -t a example.org`
> example.org has address 93.184.216.34
`ip.addr == 93.184.216.34`




source zamieniło się z destination - logiczne


Polecenie nc to skrót od netcat. Służy do wypisywania tak jak polecenie cat, jednak jest rozszerzone o komunikacje TCP/IP
`GET / HTTP/1.1`
`V0$> nc -q 3 example.org 80 < HTTPHeaderLive.txt`

nic sie nie stanie, będzie dokładnie tak samo, zmieni się tylko długość GET'a

`V0$> telnet example.org 80`
`GET / HTTP/1.1`
`Host: example.org`

`V0$> netstat -l46n`
`V0$> netstat -l46`
`nano /etc/services`
`V0#> systemctl start ssh`
Polecenie netstat z argumentem -l46n pokazuje nam aktualnie uruchomione połączenia internetowe. Brak n powoduje, że adresy są "rozszyfrowane" i podane są nazwy które są zapisane w pliku /etc/services. Uruchomienie ssh powoduje dodane ssh do netstat

`V0$> telnet localhost 7`
## WYZWANIA
* Utwórz dodatkową maszynę wirtualną Virbian2. Podłącz karty sieciowe Adapter1 maszyn Virbian1 i Virbian2 do wirtualnej sieci local1 i następnie uruchom obie maszyny.
**ez**
* Aktywuj karty sieciowe w obu urządzeniach poleceniem ip i sprawdź stan warstwy fizycznej kart poleceniem ethtool.
`sudo ip link set up dev enp0s3`
`ethtool enp0s3`
* Karcie sieciowej maszyny Virbian1 przypisz adres IP równy 192.168.100.1, zaś karcie maszyny Virbian2 adres 192.168.100.2. Pamiętaj o masce podsieci /24.
V1:`sudo ip addr add 192.168.100.1/24 dev enp0s3`
V2:`sudo ip addr add 192.168.100.2/24 dev enp0s3`
* Poleceniem ping sprawdź, czy jedna maszyna jest osiągalna z drugiej. Jaki jest RTT? Obejrzyj przesyłane pakiety Wiresharkiem. Wskaż w pakiecie miejsce w którym przechowywany jest źródłowy i docelowy adres IP.
V1:`ping (-c N) 192.168.100.2`
V2:`ping 192.168.100.1`
W Wireshark źródłowy oraz docelowy adres IP jest w 3 linijce która zaczyna się od "Intenet Protocol Version", na samym dole

* Wykorzystaj program iperf3, żeby zbadać przepustowość połączenia między maszynami.
V1:`iperf3 -s`
V2:`iperf3 -c 192.168.100.1`
* Z maszyny Virbian1 połącz się z serwerem echa maszyny Virbian2. Zaobserwuj przesyłane pakiety w Wiresharkach uruchomionych jednocześnie na obu maszynach.
V1:`telnet 192.168.100.2 7`
* Zdekonfiguruj karty sieciowe obu maszyn i wyłącz wirtualne maszyny.
Vi: `ip addr flush dev enp0s3`
Vi: `ip link set down dev enp0s3`
# Warsztaty 2
## Tutorial #1

`V1$> sudo ip link set enp0s3 name enp-rem`
`V1$> sudo ip link set enp0s8 name enp-loc`
`V2$> sudo ip link set enp0s3 name enp-rem`
`V2$> sudo ip link set enp0s8 name enp-loc`

`Vi$> sudo ip link set up dev enp-rem`
`V1$> sudo ip addr add 172.16.0.1/16 dev enp-rem`
`V2$> sudo ip addr add 172.16.0.2/16 dev enp-rem`

`V1$> ip route`
`V1$> route -n`

`V1$> ping -c 5 172.16.0.2`
`V2$> ping -c 5 172.16.0.1`

`V1$> ping -c 5 127.0.0.1`
`V2$> ping -c 5 127.0.0.1`
`V1$> ip route list table local`
scope host - wewnątrz maszyny
scope link - w internecie

`V1$> ping -c 5 127.0.0.1`
`V1$> ping -c 5 172.16.0.1`
`V1$> ping -c 5 172.16.0.2` - na końcu pyta się o wzajemne adresy MAC
`V1$> ping -b 172.16.255.255` - dlaczego zaczyna się od reply?
`V1$> ping -c 5 172.16.0.5`
`V1$> ping -c 5 10.10.10.10`
## Tutorial #2


`V3$> sudo ip link set enp0s3 name enp-loc`
`V4$> sudo ip link set enp0s3 name enp-loc`
`Vi$> sudo sysctl net.ipv4.ip_forward`

`Vi$> sudo ip link set up dev enp-loc`
`V1$> sudo ip addr add 192.168.11.1/24 dev enp-loc`
`V3$> sudo ip addr add 192.168.11.2/24 dev enp-loc`
`V2$> sudo ip addr add 192.168.12.1/24 dev enp-loc`
`V4$> sudo ip addr add 192.168.12.2/24 dev enp-loc`

`V1$> ping -c 5 192.168.11.2`
`V1$> ping -c 5 172.16.0.2`
`V2$> ping -c 5 192.168.12.2`
`V2$> ping -c 5 172.16.0.1`
`V3$> ping -c 5 192.168.11.1`
`V4$> ping -c 5 192.168.12.1`

`V1$> ping -c 5 192.168.12.1`
`V2$> ping -c 5 192.168.11.1`

`V1$> sudo ip route add 192.168.12.0/24 via 172.16.0.2`
`V2$> sudo ip route add 192.168.11.0/24 via 172.16.0.1`
`V1/2$> ip route`

`V1$> ping -c 5 192.168.12.2`
`V2$> ping -c 5 192.168.11.2`
Pakiety docierają z V1 do V4, ale nie wracają, bo V4 nie wie, że do V1 trzeba dostać się przez V2.

`V4$> sudo ip route add default via 192.168.12.1`
`V3$> sudo ip route add default via 192.168.11.1`

`Vi$> ip route`
`V1$> ping -c 5 192.168.12.2`
`V2$> ping -c 5 192.168.11.2`
`V3$> ping -c 5 192.168.12.2` } krańcowe
`V4$> ping -c 5 192.168.11.2` } przypadki

`V3$> traceroute 192.168.12.2`
`V4$> traceroute 192.168.11.2`

`Vi$> ip addr flush`
`Vi$> ip link set down`
## Wyzwania

* Utwórz maszyny wirtualne:

* Uruchom maszyny i nazwij ich interfejsy tak jak na rysunku powyżej.
`V0$> sudo ip link set enp0s3 name enp-ext`
`V0$> sudo ip link set enp0s8 name enp-loc0`
`V1$> sudo ip link set enp0s3 name enp-loc0`
`V1$> sudo ip link set enp0s8 name enp-loc1`
`V2$> sudo ip link set enp0s3 name enp-loc1`
Uzyskaj konfigurację sieciową dla interfejsu **enp-ext** maszyny *Virbian0* poleceniem:
`V0$> sudo dhclient -v enp-ext`
* Przypisz obu interfejsom **enp-loc0** i obu interfejsom **enp-loc1** adresy IP z sieci $192.168.0.0/24$ i $192.168.1.0/24$ jak na rysunku. Sprawdź osiągalność interfejsów bezpośrednio połączonych maszyn poleceniem **ping**.
`V0/1$> sudo ip link set up dev enp-loc0`
`V1/2$> sudo ip link set up dev enp-loc1`
Sprawdzić czy `ip_forward = 1` na wszystkich maszynach
`Vi$> sudo sysctl net.ipv4.ip_forward`
Jeśli nie:
`Vi$> sudo sysctl net.ipv4.ip_forward=1`
Przypisywanie IP:
`V0$> sudo ip addr add 192.168.0.1/24 dev enp-loc0`
`V1$> sudo ip addr add 192.168.0.2/24 dev enp-loc0`
`V1$> sudo ip addr add 192.168.1.1/24 dev enp-loc1`
`V2$> sudo ip addr add 192.168.1.2/24 dev enp-loc1`
:::danger
Jeśli coś nie pójdzie:
`sudo ip addr flush enp-loc0`
:::
`V0$> ping -c 5 192.168.0.2`
`V1$> ping -c 5 192.168.0.1`
`V1$> ping -c 5 192.168.1.2`
`V2$> ping -c 5 192.168.1.1`
* Skonfiguruj routing:
* na maszynie *Virbian0* określ, że do sieci $192.168.1.0/24$ można dostać się wysyłając pakiety do $192.168.0.2$;
`V0$> sudo ip route add 192.168.1.0/24 via 192.168.0.2`
* na maszynie *Virbian1* ustaw bramę domyślną równą $192.168.0.1$.
`V1$> sudo ip route add default via 192.168.0.1`
* na maszynie *Virbian2* ustaw bramę domyślną równą $192.168.1.1$;
`V2$> sudo ip route add default via 192.168.1.1`
* Z każdej maszyny wirtualnej powinny być teraz osiągalne wszystkie interfejsy **enp-loc$i$**. Sprawdź to poleceniem **ping**.
`V0$> ping -c 5 192.168.1.2` - V0 -> V2
`V2$> ping -c 5 192.168.0.1` - V2 -> V0
Wyświetl trasę z maszyny *Virbian2* do maszyny *Virbian0* poleceniem traceroute.
`V0$> traceroute 192.168.1.2`
`V2$> traceroute 192.168.0.1`
* Z maszyny *Virbian0* pingnij adres $8.8.8.8$; zaobserwuj, że otrzymywana jest odpowiedź.
`V0$> ping -c 2 8.8.8.8`
Pingnij ten sam adres z maszyny *Virbian2*.
`V2$> ping -c 2 8.8.8.8`
Czy zapytanie dochodzi do maszyny *Virbian0*?
> **TAK**
Czy otrzymywana jest odpowiedź? Dlaczego?
> **NIE** Dlatego, że $10.0.2.2$ (karta sieciowa) nie wie komu przekazać odpowiedź. Pyta się gdzie jest $192.168.1.2$ i nie dostaje odpowiedzi.

Zastanów się, kogo należałoby powiadomić o konfiguracji naszej sieci, żeby odpowiedź z komputera $8.8.8.8$ wracała do maszyny *Virbian2*.
> Karta sieciowa ($10.0.2.2$) powinna znać routing, żeby wiedzieć jak dość do V2.
## Pracownia pro tipy
czesto wiele osob nie robi pliku makefile - jest opisane ze ma sie kompilowac za pokmoca polecenia make, ma byc tez make clean
sprawdzic poprawnosc danych na wejsciu
# Warsztaty 3

* Stworzyć Virbian
`Vi$> sudo ip link set enp0s3 name enp-remi`
`Vi$> sudo ip link set enp0s8 name enp-remi`
Przedefiniowanie: `VE$> sudo ip link set enp-rem1 name enp-rem2`
* * aktywacja: `Vi$> sudo ip link set up dev enp-remi`
* przypisanie ip:
`V1$> sudo ip addr add 192.168.1.1/24 dev enp-rem1`
`V2$> sudo ip addr add 192.168.1.2/24 dev enp-rem1`
`V2$> sudo ip addr add 192.168.2.2/24 dev enp-rem2`
`V3$> sudo ip addr add 192.168.2.3/24 dev enp-rem2`
`V3$> sudo ip addr add 192.168.3.3/24 dev enp-rem3`
`V4$> sudo ip addr add 192.168.3.4/24 dev enp-rem3`
* `V1$> sudo ip route add default via 192.168.1.2`
`V1$> ping -c 5 192.168.1.2`
`V1$> ping -c 5 192.168.2.2`
`V4$> sudo ip route add default via 192.168.3.3`
* `V2$> ping -c 5 192.168.2.3`
* `V1$> ping -c 5 192.168.2.3`
* `V1$> ping -c 5 192.168.3.3`
`From 192.168.1.2 icmp_seq=1 Destination Net Unreachable`
## Tutorial 1

`V2$> sudo touch /etc/quagga/ripd.conf`
`V2$> sudo touch /etc/quagga/zebra.conf`
`V2$> sudo touch /etc/quagga/vtysh.conf`
`V2$> sudo systemctl start ripd`
`V2$> systemctl status ripd`

`V2$> sudo vtysh`

`virbian# configure terminal`
`virbian(config)# end`

`virbian# show interface`
`virbian# show ip route`
`virbian# end`
`V2$> ip route`
`V2$> ip addr`

`V2$> sudo vtysh`
`virbian# configure terminal`
`virbian(config)# router rip`
`virbian(config-router)# version 2`
`virbian(config-router)# network 192.168.1.0/24`
`virbian(config-router)# network 192.168.2.0/24`
::: danger
usuwanie: `virbian(config-router)# no network adres_sieci`
:::
`virbian# end`

`virbian# show running-config`

`V3$> sudo touch /etc/quagga/ripd.conf & sudo touch /etc/quagga/zebra.conf & sudo touch /etc/quagga/vtysh.conf & sudo systemctl start ripd`
`V3$> systemctl status ripd`
`V3$> sudo vtysh`
`virbian# configure terminal`
`virbian(config)# router rip`
`virbian(config-router)# version 2`
`virbian(config-router)# network 192.168.2.0/24`
`virbian(config-router)# network 192.168.3.0/24`
`virbian# end`
`virbian# show running-config`

`V2/3$> virbian# show ip rip`
`V2/3$> virbian# show ip route`
Trasa z V1 do V4 oraz z V4 do V1 ma długość 3. Między V1-V3 oraz V2-V4 długość to 2. Między resztą połączeń (V1-V2, V2-V3, V3-V4) odległość to 1.


`V2/3$> virbian# q`
`V2/3$> ip route`

Ping:
V1-V2: `V1$> ping -c 1 192.168.1.2` GIT
V1-V3: `V1$> ping -c 1 192.168.2.3` GIT
V1-V4: `V1$> ping -c 1 192.168.3.4` GIT
V2-V1: `V2$> ping -c 1 192.168.1.1` GIT
V2-V3: `V2$> ping -c 1 192.168.2.3` GIT
V2-V4: `V2$> ping -c 1 192.168.3.4` GIT
V3-V1: `V3$> ping -c 1 192.168.1.1` GIT
V3-V2: `V3$> ping -c 1 192.168.2.2` GIT
V3-V4: `V3$> ping -c 1 192.168.3.4` GIT
V4-V1: `V4$> ping -c 1 192.168.1.1` GIT
V4-V2: `V4$> ping -c 1 192.168.2.2` GIT
V4-V3: `V4$> ping -c 1 192.168.3.3` GIT
Traceroute:
V1-V2: `V1$> traceroute 192.168.1.2`
V1-V3: `V1$> traceroute 192.168.2.3`
V1-V4: `V1$> traceroute 192.168.3.4`
V2-V1: `V2$> traceroute 192.168.1.1`
V2-V3: `V2$> traceroute 192.168.2.3`
V2-V4: `V2$> traceroute 192.168.3.4`
V3-V1: `V3$> traceroute 192.168.1.1`
V3-V2: `V3$> traceroute 192.168.2.2`
V3-V4: `V3$> traceroute 192.168.3.4`
V4-V1: `V4$> traceroute 192.168.1.1`
V4-V2: `V4$> traceroute 192.168.2.2`
V4-V3: `V4$> traceroute 192.168.3.3`
## Tutorial 2

`V1/4$> sudo ip link set up dev enp-rem4`
`V1$> sudo ip addr add 192.168.4.1/24 dev enp-rem4`
`V4$> sudo ip addr add 192.168.4.4/24 dev enp-rem4`

`V1/4$> sudo ip route del default`
`V1/4$> ip route`

`V1$> sudo touch /etc/quagga/ripd.conf & sudo touch /etc/quagga/zebra.conf & sudo touch /etc/quagga/vtysh.conf & sudo systemctl start ripd`
`V1$> systemctl status ripd`
`V1$> sudo vtysh`
`virbian# configure terminal`
`virbian(config)# router rip`
`virbian(config-router)# version 2`
`virbian(config-router)# network 192.168.1.0/24`
`virbian(config-router)# network 192.168.4.0/24`
`virbian# end`
`virbian# show running-config`

`V1-V3$> sudo vtysh`
`virbian# show ip rip`
`V1-V3$> ip route`

`V4$> sudo touch /etc/quagga/ripd.conf & sudo touch /etc/quagga/zebra.conf & sudo touch /etc/quagga/vtysh.conf & sudo systemctl start ripd`
`V4$> systemctl status ripd`
`V4$> sudo vtysh`
`virbian# configure terminal`
`virbian(config)# router rip`
`virbian(config-router)# version 2`
`virbian(config-router)# network 192.168.3.0/24`
`virbian(config-router)# network 192.168.4.0/24`
`virbian# end`
`virbian# show running-config`

`V1-V4$> sudo vtysh`
`virbian# show ip rip`
V1-V4: `V1$> ping -c 1 192.168.3.4`
V1-V4: `V1$> traceroute 192.168.3.4`
V4-V1: `V4$> ping -c 1 192.168.1.1`
V4-V1: `V4$> traceroute 192.168.1.1`

`V2$> sudo ip link set down dev enp-rem2`
`Vi$> sudo vtysh`
`Vi$> virbian# show ip rip`

`V2$> sudo ip link set up dev enp-rem2`

## Wyzwanie

* Skonfiguruj 5 maszyn wirtualnych *Virbian1* –*Virbian5*, tak aby korzystały z sieci $local0–local4$, tak jak zaznaczono na rysunku powyżej. Interfejsy maszyn podłączonych do sieci locali nazwij enp-loc$i$.
`V1$> sudo ip link set enp0s3 name enp-loc0`
`V2$> sudo ip link set enp0s3 name enp-loc0 & sudo ip link set enp0s8 name enp-loc1 & sudo ip link set enp0s9 name enp-loc2`
`V3$> sudo ip link set enp0s3 name enp-loc1 & sudo ip link set enp0s8 name enp-loc3`
`V4$> sudo ip link set enp0s3 name enp-loc2 & sudo ip link set enp0s8 name enp-loc3 & sudo ip link set enp0s9 name enp-loc4`
`V5$> sudo ip link set enp0s3 name enp-loc4`
* Niech sieci locali odpowiada zakres adresów $192.168.i.0/24$. Przypisz dwóm interfejsom podłączonym do sieci locali wybrane adresy IP z sieci $192.168.i.0/24$.
* Dla maszyny *Virbian1* ustaw trasę domyślną przechodzącą przez maszynę *Virbian2*, zaś dla maszyny *Virbian5* trasę domyślną przechodzącą przez maszynę *Virbian4*.
`Vi$> sudo ip link set up dev enp-loci`
`V1$> sudo ip link set up dev enp-loc0`
`V2$> sudo ip link set up dev enp-loc0 & sudo ip link set up dev enp-loc1 & sudo ip link set up dev enp-loc2`
`V3$> sudo ip link set up dev enp-loc1 & sudo ip link set up dev enp-loc3`
`V4$> sudo ip link set up dev enp-loc2 & sudo ip link set up dev enp-loc3 & sudo ip link set up dev enp-loc4`
`V5$> sudo ip link set up dev enp-loc4`
`V1$> sudo ip addr add 192.168.0.1/24 dev enp-loc0`
`V2$> sudo ip addr add 192.168.0.2/24 dev enp-loc0 & sudo ip addr add 192.168.1.2/24 dev enp-loc1 & sudo ip addr add 192.168.2.2/24 dev enp-loc2`
`V3$> sudo ip addr add 192.168.1.3/24 dev enp-loc1 & sudo ip addr add 192.168.3.3/24 dev enp-loc3`
`V4$> sudo ip addr add 192.168.2.4/24 dev enp-loc2 & sudo ip addr add 192.168.3.4/24 dev enp-loc3 & sudo ip addr add 192.168.4.4/24 dev enp-loc4`
`V5$> sudo ip addr add 192.168.4.5/24 dev enp-loc4`
`V1$> sudo ip route add default via 192.168.0.2`
`V5$> sudo ip route add default via 192.168.4.4`
* Na maszynach *Virbian2*, *Virbian3* i *Virbian4* włącz protokół RIP (w wersji 2) dla wszystkich sieci podłączonych bezpośrednio do tych maszyn. Wyświetl zbudowane w ten sposób tablice routingu.
* Sprawdź wzajemną osiągalność maszyn *Virbian1*, *Virbian3* i *Virbian5* poleceniem ping. Wyświetl trasy między tymi maszynami poleceniem **traceroute**. W razie potrzeby zidentyfikuj problem za pomocą Wiresharka.
`V2$> sudo touch /etc/quagga/ripd.conf & sudo touch /etc/quagga/zebra.conf & sudo touch /etc/quagga/vtysh.conf & sudo systemctl start ripd`
`V2$> systemctl status ripd`
`V2$> sudo vtysh`
`virbian# configure terminal`
`virbian(config)# router rip`
`virbian(config-router)# version 2`
`virbian(config-router)# network 192.168.0.0/24`
`virbian(config-router)# network 192.168.1.0/24`
`virbian(config-router)# network 192.168.2.0/24`
`virbian# end`
`virbian# show running-config`
`V3$> sudo touch /etc/quagga/ripd.conf & sudo touch /etc/quagga/zebra.conf & sudo touch /etc/quagga/vtysh.conf & sudo systemctl start ripd`
`V3$> systemctl status ripd`
`V3$> sudo vtysh`
`virbian# configure terminal`
`virbian(config)# router rip`
`virbian(config-router)# version 2`
`virbian(config-router)# network 192.168.1.0/24`
`virbian(config-router)# network 192.168.3.0/24`
`virbian# end`
`virbian# show running-config`
`V4$> sudo touch /etc/quagga/ripd.conf & sudo touch /etc/quagga/zebra.conf & sudo touch /etc/quagga/vtysh.conf & sudo systemctl start ripd`
`V4$> systemctl status ripd`
`V4$> sudo vtysh`
`virbian# configure terminal`
`virbian(config)# router rip`
`virbian(config-router)# version 2`
`virbian(config-router)# network 192.168.2.0/24`
`virbian(config-router)# network 192.168.3.0/24`
`virbian(config-router)# network 192.168.4.0/24`
`virbian# end`
`virbian# show running-config`
`V3$> traceroute 192.168.0.1`
`V3$> traceroute 192.168.4.5`