Příprava experimentálního prostředí

Základní nástroje v Linuxu

tcpdump

Nejdůležitější nástroj je ale tcpdump. Tím se můžeme podívat na jednotlivé IP datagramy s ICMP echo requesty, které nám program ping generuje. V první řadě spustíme ping na pozadí. Na to se hodí program screen (pokud není nainstalován, stačí apt install screen, doporučujeme man screen) man screen. Screen upozadíme stiskem trojhmatu Ctrl-A D (tedy Ctrl-A stiskněte najednou, pak klávesy uvolněte a stiskněte D).

root@osboxes:/home/osboxes# screen
root@osboxes:/home/osboxes# ping 10.0.3.9
PING 10.0.3.9 (10.0.3.9) 56(84) bytes of data.
64 bytes from 10.0.3.9: icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from 10.0.3.9: icmp_seq=2 ttl=64 time=0.083 ms
64 bytes from 10.0.3.9: icmp_seq=3 ttl=64 time=0.079 ms

Ctrl-A D

[detached from 67423.pts-0.osboxes]
root@osboxes:/home/osboxes#

Nyní tedy ping běží na pozadí a do běžícího sezení screen se lze vrátit příkazem screen -r.

Můžeme tedy spustit tcpdump a podívat se na provoz mezi kontejnerem a hlavním userspacem. Jeho běh ukončíme opět po pár zachycených vzorcích stiskem Ctrl-C:

root@osboxes:/home/osboxes# tcpdump -n -i lxcbr0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lxcbr0, link-type EN10MB (Ethernet), capture size 262144 bytes
17:05:44.788820 IP 10.0.3.1 > 10.0.3.9: ICMP echo request, id 3, seq 19, length 64
17:05:44.788855 IP 10.0.3.9 > 10.0.3.1: ICMP echo reply, id 3, seq 19, length 64
17:05:45.813091 IP 10.0.3.1 > 10.0.3.9: ICMP echo request, id 3, seq 20, length 64
17:05:45.813183 IP 10.0.3.9 > 10.0.3.1: ICMP echo reply, id 3, seq 20, length 64
17:05:46.836810 IP 10.0.3.1 > 10.0.3.9: ICMP echo request, id 3, seq 21, length 64
17:05:46.836838 IP 10.0.3.9 > 10.0.3.1: ICMP echo reply, id 3, seq 21, length 64
17:05:47.860831 IP 10.0.3.1 > 10.0.3.9: ICMP echo request, id 3, seq 22, length 64
17:05:47.860900 IP 10.0.3.9 > 10.0.3.1: ICMP echo reply, id 3, seq 22, length 64
17:05:48.884832 IP 10.0.3.1 > 10.0.3.9: ICMP echo request, id 3, seq 23, length 64
17:05:48.884866 IP 10.0.3.9 > 10.0.3.1: ICMP echo reply, id 3, seq 23, length 64

Ctrl-C

10 packets captured
10 packets received by filter
0 packets dropped by kernel

A nyní můžeme vstoupit do screen -r, stiskem Ctrl-C ukončit běžící ping a celé sezení pak uzavřít stiskem Ctrl-D. Tím screen skončí a vrátíme se do terminálu hlavního (hostitelského) userspacu.

root@osboxes:/home/osboxes# screen -r
64 bytes from 10.0.3.9: icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from 10.0.3.9: icmp_seq=2 ttl=64 time=0.083 ms
64 bytes from 10.0.3.9: icmp_seq=3 ttl=64 time=0.079 ms
...

Ctrl-C

root@osboxes:/home/osboxes#

Ctrl-D
[screen is terminating]
root@osboxes:/home/osboxes#

Mimochodem: Uvnitř v čistě nainstalovaném kontejneru program tcpdump není. Lze jej ale snadno doinstalovat:

root@osboxes:/home/osboxes# lxc-attach c1

root@c1:/# apt install tcpdump

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpcap0.8
Suggested packages:
  apparmor
The following NEW packages will be installed:
  libpcap0.8 tcpdump
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 539 kB of archives.
After this operation, 1,470 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://deb.debian.org/debian buster/main amd64 libpcap0.8 amd64 1.8.1-6 [139 kB]
Get:2 http://deb.debian.org/debian buster/main amd64 tcpdump amd64 4.9.3-1~deb10u2 [400 kB]
Fetched 539 kB in 0s (1,696 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libpcap0.8:amd64.
(Reading database ... 11046 files and directories currently installed.)
Preparing to unpack .../libpcap0.8_1.8.1-6_amd64.deb ...
Unpacking libpcap0.8:amd64 (1.8.1-6) ...
Selecting previously unselected package tcpdump.
Preparing to unpack .../tcpdump_4.9.3-1~deb10u2_amd64.deb ...
Unpacking tcpdump (4.9.3-1~deb10u2) ...
Setting up libpcap0.8:amd64 (1.8.1-6) ...
Setting up tcpdump (4.9.3-1~deb10u2) ...
Processing triggers for libc-bin (2.28-10) ...

root@c1:/#

K jednotlivým nástrojům se budeme ještě vracet podrobněji. Nyni jsme ale připraveni na teoretickou následující část, v níž si ale můžeme na experimentálním labu snadno tuto teorii ověřit.