Практика tcpdump

Приключилось мне сегодня впервые задействовать утилиту tcpdump. Освоил азы работы с этой программкой, а также на практике пощупал структуры Ethernet-фреймов, а также IP и CARP пакетов.

Хочу сказать, что утилита tcpdump и сама по себе способна выдавать некоторые сведения о сетевых пакетах, в том числе и о протоколе CARP, к примеру в такой форме:

# tcpdump -env -c1 -v -i em1 proto carp
tcpdump: listening on em1, link-type EN10MB (Ethernet), capture size 96 bytes
17:38:42.373244 00:00:5e:00:01:74 > 01:00:5e:48:2c:59, ethertype IPv4 (0x0800), length 70:
(tos 0x10, ttl 255, id 9851, offset 0, flags [DF], proto VRRP (112), length 56)
    83.246.222.22 > 224.0.0.18: VRRPv2, Advertisement, vrid 116, prio 240, authtype none,
intvl 1s, length 36, addrs(7): 42.157.168.200,246.209.52.106,174.160.114.135,
223.166.101.125,126.225.201.162,16.217.148.103,149.149.240.151

Однако хотелось мне поближе пощупать, как она работает, и как вообще получаются эти значения.

Итак, я запустил чудесную утилиту tcpdump и вот что мне она выдала:

# tcpdump -w - -c1 -i em1 proto carp | hd
00000000  d4 c3 b2 a1 02 00 04 00  00 00 00 00 00 00 00 00  |................|
00000010  60 00 00 00 01 00 00 00  a4 dc 8a 4d 6b 7c 01 00  |................|
00000020  46 00 00 00 46 00 00 00  01 00 5e 48 2c 59 00 00  |................|
00000030  5e 00 01 75 08 00 45 10  00 38 0a 5f 40 00 ff 70  |................|
00000040  11 b1 53 f6 de 16 e0 00  00 12 21 75 f0 07 00 01  |................|
00000050  7b bf dc 7f 68 a2 11 a9  78 cb e4 76 75 f4 73 2b  |................|
00000060  3d a8 3a ff e3 e9 85 0a  da 9d 4a 83 ce d7        |..............|
0000006e  

Чтобы показать HEX-дамп входных данных, начиная со смещения, к примеру 40, нужно воспользоваться ключиком -s:

# tcpdump -w - -c1 -i em1 proto carp | hd -s 40

Потратив несколько часов на гугление и собирание инфы по крупицам, я пришел к следующей таблице. В ней явно можно видеть уровни модели OSI, и их вложенность – Ethernet-кадр (канальный уровень), в нем IP-пакет (сетевой), в нем CARP-пакет (сложно сказать, какой уровень, но инкапсулируется в IP).
Более подробную информацию по каждому типу заголовка можно узнать, щелкнув по соответствующей ссылке в таблице.

Байты Описание Значение в данном случае
ЗАГОЛОВОК TCPDUMP (смещение 0)
d4 c3 b2 a1 magic number утилиты tcpdump, определяет очередность байт little-endian
02 00 major version number 2
04 00 minor version number 4
00 00 00 00 unused time zone offset не используется
00 00 00 00 unused time stamp accuracy не используется
60 00 00 00 max length of the saved data in packets (capture length), задается параметром tcpdump -s значение по умолчанию 96 байт (0x60h)
01 00 00 00 link-layer type of packets 1 – Ethernet
ЗАГОЛОВОК ПАКЕТА TCPDUMP (смещение 24)
a4 dc 8a 4d date packet arrived (unixtime) Thu, 24 Mar 2011 05:54:44 GMT
6b 7c 01 00 microseconds packet arrived 97387 мкс
46 00 00 00 number of bytes of data in that file 70 байт – последует после этого заголовка
46 00 00 00 total number of bytes, должно быть больше или равно предыдущего значения 70 байт
ЗАГОЛОВОК ETHERNET FRAME (смещение 40)
01 00 5e 48 2c 59 destination mac 01:00:5E:48:2C:59
00 00 5e 00 01 75 source mac 00:00:5E:00:01:75
08 00 EtherType, тип инкапсулируемого протокола 0x08h – IP
ЗАГОЛОВОК IP (смещение 54)
45 номер версии; длина заголовка IPv4 и длина 5
10 Type of Service, ToS 10
00 38 общая длина IP-пакета 0x38h = 56 байт
0a 5f идентификатор пакета IP 24330
40 00 флаги протокола ip
ff 70 TTL, номер протокола TTL 255, proto 122 = vrrp/carp
11 b1 контрольная сумма ip-пакета 0x11B1h
53 f6 de 16 source ip 83.246.222.22
e0 00 00 12 destination ip 224.0.0.18
ЗАГОЛОВОК CARP-ПАКЕТА (смещение 74)
21 версия протокола, тип пакета версия 2
1 – Advertisement
75 f0 vrid (или vhid); priority (или advskew) vhid=117; advskew=240
07 количество IP-адресов, содержащихся в данном adv 7 ip-адресов
00 AuthType 0=No Authentication
01 advbase, интервал синхронизации 1 секунда
7b bf dc 7f Откуда взялись эти IP-адреса, для меня до сих пор остается загадкой.
68 a2 11 a9
78 cb e4 76
75 f4 73 2b
3d a8 3a ff
e3 e9 85 0a
da 9d 4a 83
ЗАВЕРШЕНИЕ CARP-ПАКЕТА, ПРОДОЛЖЕНИЕ ETHERNET-КАДРА
ce d7 Ethernet CRC 0xCED7h

Похожие статьи

Leave a Reply

Your email address will not be published. Required fields are marked *