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.