Linux се доставя оборудван с множество мрежови помощни програми, от които да избирате. tcpdump е един такъв мощен мрежов инструмент, който може да улавя и анализира мрежовия трафик, ако трябва да отстраните мрежови грешки на Linux.

Нека да се запознаем практически с командата tcpdump и да проучим как да я използваме за улавяне на мрежов трафик.

Инсталиране на tcpdump в Linux

tcpdump обикновено идва предварително инсталиран с всички основни Linux дистрибуции и алтернативи, базирани на сигурността. Така че трябва да можете да го използвате веднага, като въведете tcpdump с sudo префикс.

В случай, че не можете да изпълните командата tcpdump и сте заседнали на "tcpdump: командата не е открита" грешка, нека научим как да инсталираме tcpdump на вашата Linux машина.

За да инсталирате tcpdump, стартирайте терминала и изпълнете командата, съответстваща на дистрибуцията на Linux, която използвате в момента:

На производни на Debian/Ubuntu изпълнете:

sudo apt-получавам инсталирайте tcpdump

На Аркови системи, стартирайте:

instagram viewer
sudo pacman -S tcpdump

За да инсталирате помощната програма tcpdump на Fedora, CentOS и RHEL, изпълнете следната команда:

sudo dnf Инсталирай tcpdump

Имайте предвид, че ако бъдете помолени да инсталирате libcap, напишете в да или Y тъй като това е основна зависимост, без която tcpdump ще откаже да стартира. Това трябва да инсталира помощната програма tcpdump и да разреши грешката „командата не е намерена“.

Сега, след като tcpdump е инсталиран на вашата система, нека проучим различните опции и функционалности, които предлага.

Улавяне на мрежовия трафик с tcpdump

tcpdump предлага много флагове за промяна на неговото изпълнение, но може да се изпълнява и като самостоятелна команда. Въпреки това, стартирането на tcpdump без никакви флагове или аргументи би пренебрегнало пълния му потенциал. Винаги е по-добре да използвате няколко флага, за да промените изпълнението и изхода, ако е необходимо.

Въведете тази команда, за да наблюдавате мрежовите предавания с tcpdump:

sudo tcpdump

Сега tcpdump ще започне автоматично да улавя мрежови пакети, докато сигнал за прекъсване се изпраща с Ctrl + Z за прекъсване на процеса ръчно. За да ограничите общия брой уловени пакети, използвайте -° С флаг и въведете желания лимит от пакети до него:

sudo tcpdump -c 5

Ако не можете да осмислите изхода точно сега, трябва да го направите запознайте се с изходния формат tcpdump първи.

Проверете наличните мрежови интерфейси с tcpdump

По подразбиране tcpdump улавя трафик от всеки от наличните мрежови интерфейси. Ако използвате множество активни мрежови интерфейси, може да искате да дефинирате мрежовия интерфейс, от който tcpdump да улавя пакети. За да стартирате tcpdump на конкретен интерфейс, ще трябва първо да научите за името на интерфейса.

Ето как да изброите всички налични мрежови интерфейси с tcpdump:

sudo tcpdump -D

Или можете да добавите --list-интерфейси флаг към командата:

sudo tcpdump --списък-интерфейси

Върнатият изход съдържа списък на всички активни мрежови интерфейси, които tcpdump може да слуша. За да конфигурирате tcpdump за улавяне на предавания от определен мрежов интерфейс, въведете тази команда:

sudo tcpdump -i интерфейс_id

Или можете да добавите --интерфейс флаг към командата:

sudo tcpdump --интерфейсинтерфейс_id

Сега, след като заснехме няколко пакета, нека ги проучим внимателно и да научим как можете да настроите изхода, за да бъде по-четлив.

Проучване на tcpdump филтри

tcpdump е в състояние да улови огромно количество трафик в едно изпълнение. Такова претоварване с информация може да ви извади от релси, когато проучвате или отстранявате проблеми с конкретен хост или мрежов протокол.

Тук влизат в действие филтрите tcpdump. Можете да добавите командата tcpdump с определени флагове, за да филтрирате мрежовия трафик и да уловите конкретни пакети. След това можете да съхранявате тези пакети и по-късно да ги анализирате, за да стигнете до корена на проблемите, свързани с мрежата. Нека научим как да използваме филтри в tcpdump.

Филтрирайте пакети въз основа на използвания мрежов протокол

За да филтрирате пакети, предавани чрез конкретен протокол, въведете името на протокола с командата tcpdump и тя ще улови само пакети, пътуващи през дефинирания мрежов протокол.

Например, за да заснемете пакети, базирани на ICMP, трябва просто да прикачите icmp в края на командата tcpdump. Процесът е същият, ако искате да улавяте само UDP или TCP пакети.

sudo tcpdump -c 5 icmp

Тази команда ще върне изход само ако има обмен на данни през ICMP протокола.

Филтриране на пакети въз основа на хоста

Можете да конфигурирате tcpdump да улавя пакети, свързани с един хост с домакин параметър. Това е особено полезно, когато всички системи на вашата мрежа работят с изключение на една. Този филтър ви позволява да извършвате целенасочено разследване и ускорява цялостния работен процес за отстраняване на неизправности, тъй като не се разсейвате от ненужни данни.

За да заснемете пакети, свързани с конкретен хост, дефинирайте мрежовия адрес на хоста с домакин параметър:

sudotcpdump-° С 5 домакин 192.168.2.1

Подобно на филтъра за мрежови протоколи, тази команда ще върне изход само ако текущото предаване е свързано с дефинирания хост.

Филтриране на пакети въз основа на активния порт

tcpdump е оборудван с параметър, който ви позволява да филтрирате мрежовия трафик и да улавяте само пакети, които се предават към или от определен порт.

За да уловите пакети, идващи от определен порт, добавете порт флаг към командата tcpdump и дефинирайте номера на порта до него. Например, за да уловите всеки входящ или изходящ HTTP трафик, дефинирайте порт 80:

sudo tcpdump -c 5 порт 80

tcpdump ще слуша на порт 80, чакайки HTTP предавания. След като открие HTTP пакети в мрежата, той ще ги улови.

Комбинирайте филтрите заедно за разширено сортиране

Предишните раздели обсъждаха как можете да филтрирате трафик въз основа на порт, протокол или хост, но какво ще стане, ако искахте да уловите трафик от един порт на определен хост, използвайки определена мрежа протокол? Е, имате късмет, защото това е възможно, приписвайки възможността да използвате логически оператори с командата tcpdump.

За да заснемете пакети от отделен хост, използвайки порт 443, използвайте тази команда:

sudotcpdump-° С 5 домакин 192.168.2.1ипорт 443

Проверете съдържанието на заснетите пакети

По подразбиране tcpdump показва заглавките на пакета в изхода. Въпреки че в повечето случаи е повече от достатъчно, понякога може да искате или трябва да погледнете по-дълбоко в заснетите данни. Можете да подадете определени параметри с командата tcpdump, за да проверите съдържанието на заснетия пакет.

Ето как да видите съдържанието на пакетите:

sudo tcpdump -c 5 -x

Тази команда връща шестнадесетичната версия на съдържанието в заловен пакет. Ако искате да видите ASCII формата на данните, можете да подадете параметър с:

sudo tcpdump -A

Запазете изхода на tcpdump във файл

Като почти всеки друг инструмент на командния ред на Linux, можете да съхранявате изхода, произведен от tcpdump, във файл, към който да се обърнете по-късно.

Това може да стане чрез добавяне на -w флаг към командата. При изпълнение tcpdump ще съхрани заснетите данни в a .pcap файл, който по-късно може да бъде анализиран с tcpdump или други инструменти за наблюдение на мрежата като Wireshark.

Въведете тази команда, за да съхраните изхода на вашата команда tcpdump във файл:

sudotcpdump-wулавяне.pcap

За да прочетете а .pcap файл, можете да използвате tcpdump с параметър:

sudotcpdumpулавяне.pcap

Linux се доставя с множество мрежови инструменти, които могат да разрешат всеки мрежов проблем, стига да е от страна на софтуера. Знанието как да използвате някои от най-добрите мрежови инструменти в Linux определено ще ви бъде от полза, независимо дали сте системен администратор, управляващ мрежи за прехраната си, или просто ежедневен потребител на Linux.

Тъй като действителният списък с налични мрежови команди може да бъде твърде голям за разбиране, ето списък с някои от най-важните мрежови инструменти на Linux, които трябва да знаете.