Журнал ip пакетов linux

Sysadminium

Консольная утилита tcpdump предназначена для исследования сетевого трафика на linux серверах. Как работать с tcpdump на Linux? Рассмотрим в этой статье.

Установка и начало использования

Установить эту утилиту в debian или ubuntu можно так:

Использовать данное приложение может только администратор. Поэтому для работы используем sudo или работаем под пользователем root.

Первым делом можем посмотреть список доступных интерфейсов используя опцию -D:

$ sudo tcpdump -D 1.ens18 [Up, Running] 2.any (Pseudo-device that captures on all interfaces) [Up, Running] 3.lo [Up, Running, Loopback] 4.docker0 [Up] 5.nflog (Linux netfilter log (NFLOG) interface) 6.nfqueue (Linux netfilter queue (NFQUEUE) interface) 7.usbmon1 (USB bus number 1)

Рассмотрим эти интерфейсы:

  • ens18 — обычный сетевой интерфейс;
  • lo — локальный сетевой интерфейс;
  • any — псевдоинтерфейс обозначающий все интерфейсы;
  • docker0 — у меня установлен в системе docker и этот интерфейс относится к нему;
  • nflog, nfqueue, usbmon1 — не относятся к сети, и в этой статье рассматриваться не будут.

Захват пакетов и вывод информации

Чтобы посмотреть все проходящие пакеты через выбранный интерфейс можно воспользоваться опцией -i . Но так как пакетов будет много, дополнительно укажем опцию -c , чтобы захватить только определённое количество пакетов:

$ sudo tcpdump -i ens18 -c 10 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens18, link-type EN10MB (Ethernet), capture size 262144 bytes 17:34:28.863132 IP 172.30.95.116.ssh > 172.30.81.7.57376: Flags [P.], seq 1492170785:1492170901, ack 2057276671, win 501, length 116 17:34:28.863171 IP 172.30.95.116.ssh > 172.30.81.7.57376: Flags [P.], seq 116:152, ack 1, win 501, length 36 17:34:28.863206 IP 172.30.95.116.ssh > 172.30.81.7.57376: Flags [P.], seq 152:268, ack 1, win 501, length 116 17:34:28.863233 IP 172.30.95.116.ssh > 172.30.81.7.57376: Flags [P.], seq 268:304, ack 1, win 501, length 36 17:34:28.863294 IP 172.30.81.7.57376 > 172.30.95.116.ssh: Flags [.], ack 152, win 49179, length 0 17:34:28.863306 IP 172.30.81.7.57376 > 172.30.95.116.ssh: Flags [.], ack 268, win 49179, length 0 17:34:28.865617 IP 172.30.95.116.ssh > 172.30.81.7.57376: Flags [P.], seq 520:668, ack 1, win 501, length 148 17:34:28.865696 IP 172.30.81.7.57376 > 172.30.95.116.ssh: Flags [.], ack 668, win 49183, length 0 17:34:28.865792 IP 172.30.95.116.ssh > 172.30.81.7.57376: Flags [P.], seq 888:1036, ack 1, win 501, length 148 17:34:28.865888 IP 172.30.95.116.ssh > 172.30.81.7.57376: Flags [P.], seq 1072:1204, ack 1, win 501, length 132 10 packets captured 42 packets received by filter 28 packets dropped by kernel

Теперь рассмотрим полученную информацию, которая состоит из заголовков каждого пакета выводимые построчно. Строка состоит из следующих полей:

  • время;
  • протокол;
  • ip источника и его порт;
  • ip назначения и его порт;
  • флаги;
  • seq — номер первого байта сегмента. Данные, передающиеся по TCP делятся на сегменты, а в заголовке указывается порядковый номер первого байта в этом сегменте;
  • ack — номер подтверждения, если присутствует. Получатель после приёма сегмента или нескольких сегментов посылает номер подтверждения;
  • win — размер окна приема. Получатель указывает размер окна, больше которого отправитель не может отправить сегмент;
  • options — опции, если присутствуют;
  • length — длина полезной нагрузки данных.
Читайте также:  Meterpreter payload for linux

Эта утилита может показывать не только заголовки, но и содержимое пакетов, но об этом позже.

Фильтры

Чтобы не захватывать все пакеты, нужно использовать фильтры. Например можно захватить пакеты только от определённого ip адреса, номера порта или протокола. Вот список самых распространённых фильтров:

Например захватим 10 пакетов связанных с www.incentivespro.com.

$ sudo tcpdump -i ens18 -c 10 host yandex.ru

Совмещение различных фильтров

Фильтры можно совмещать, например захватим только icmp пакеты связанные с ip адресом 172.30.81.7:

$ sudo tcpdump -i ens18 -c 5 host 172.30.81.7 and icmp

Совмещать фильтры можно следующими операторами:

  • and — для захвата пакета должны сработать оба фильтра;
  • or — для захвата пакета должен сработать любой из фильтров;
  • not — исключить из захвата эти пакеты.

В примере выше мы использовали — and.

Опции отвечающие за формат и количество выводимой информации

Теперь разберёмся с наиболее используемыми опциями, которые отвечают за формат вывода:

  • -i — прослушивать конкретный интерфейс;
  • -n — отображать ip адреса вместо имен;
  • -nn — отображать ip адреса и номера портов вместо имени и названия протоколов;
  • -q — минимальное количество информации о пакете;
  • -t — не отображать метку времени в каждой строке;
  • -tttt — задает вывод временных меток в такой форме: 2021-03-03 16:07:29.578942;
  • -X — показывать содержимое пакета в шестнадцатеричной кодировке и в ASCII;
  • -XX — то же, что и -X, но также показывает ethernet заголовки;
  • -v, -vv, -vvv — увеличить количество получаемой информации;
  • -c — получить определённое число пакетов и завершить работу.

Примеры команд

Смотрим все пакеты на всех интерфейсах или на каком-то одном:

# tcpdump -i any # tcpdump -i eth0

Ловим пакеты у которых адрес:

  • источника или назначения равен 192.168.0.100;
  • источника равен 192.168.0.100;
  • назначения равен 192.168.0.100;
  • источника или назначения входит в подсеть 192.168.0.0/24
# tcpdump host 192.168.0.100 # tcpdump src 192.168.0.100 # tcpdump dst 192.168.0.100 # tcpdump net 192.168.0.0/24

Ловим пакеты у которых порт:

  • источника или назначения равен 8000;
  • источника равен 8000;
  • назначения равен 8000;
  • входит в диапазон портов 8000-9000;
# tcpdump port 8000 # tcpdump src port 8080 # tcpdump dst port 8080 # tcpdump portrange 8000-9000

Ловим пакеты определенного протокола:

# tcpdump icmp # tcpdump ip # tcpdump ip6 # tcpdump tcp # tcpdump udp

Ловим tcp пакеты у которых порт входит в группу портов:

tcpdump tcp and portrange 0-1000

Тоже самое, но смотрим содержимое пакетов:

# tcpdump -X tcp and portrange 0-1000

Пишем результат в файл и считываем из файла:

# tcpdump port 8000 -w capture_file # tcpdump -r capture_file

Итог

Опции, фильтры и комбинации фильтров утилиты tcpdump позволяют исследовать работу сети. Это может пригодиться при поиске проблемы, при анализе безопасности сети, а также если вы изучаете какой-нибудь протокол и хотите на практике понаблюдать за его работой.

Утилита tcpdump для анализа сети

Консольная утилита tcpdump предназначена для исследования сетевого трафика на linux серверах. Как работать с tcpdump на Linux? Рассмотрим в этой статье

Источник

🐧 Как показать сброшенные пакеты для сетевого интерфейса на Linux

Мануал

Как отобразить отброшенные пакеты для каждого интерфейса в операционных системах Linux из командной строки?

Как определить, почему сервер Linux отбрасывает пакеты?

Мы можем использовать команду ip, команду netstat или команду ethtool для отображения статистики отброшенных пакетов для каждого сетевого интерфейса на Linux.

Давайте посмотрим, как использовать обе команды для вывода списка отброшенных пакетов для каждого интерфейса.

Отображение отброшенных пакетов для каждого интерфейса в Linux с помощью netstat

Команда netstat уже устарела.

Заменами команды netstat являются команды ss и ip.

Однако netstat все еще доступен в старых дистрибутивах Linux.

Поэтому я начну с netstat, но, если возможно, воспользуюсь инструментами ip / ss.

netstat -i
netstat —interfaces

Чтобы отобразить сводную статистику для каждого протокола, запустите:

netstat -s
netstat —statistics

Ip: Forwarding: 1 101759568 total packets received 70289211 forwarded 0 incoming packets discarded 31287093 incoming packets delivered 136164545 requests sent out 22 outgoing packets dropped 220 reassemblies required 110 packets reassembled ok 2364 fragments received ok 3345 fragments failed 4728 fragments created Icmp: 295517 ICMP messages received 6 input ICMP message failed ICMP input histogram: destination unreachable: 145 timeout in transit: 187 echo requests: 289750 echo replies: 5435 298725 ICMP messages sent 0 ICMP messages failed ICMP output histogram: destination unreachable: 3408 echo requests: 5567 echo replies: 289750 IcmpMsg: InType0: 5435 InType3: 145 InType8: 289750 InType11: 187 OutType0: 289750 OutType3: 3408 OutType8: 5567 Tcp: 19006 active connection openings 14619 passive connection openings 2268 failed connection attempts 393 connection resets received 1 connections established 2215735 segments received 2511500 segments sent out 6067 segments retransmitted 182 bad segments received 13173 resets sent Udp: 28543977 packets received 63 packets to unknown port received 287687 packet receive errors 22106848 packets sent 287687 receive buffer errors 0 send buffer errors UdpLite: TcpExt: 10 invalid SYN cookies received 2264 resets received for embryonic SYN_RECV sockets 42 packets pruned from receive queue because of socket buffer overrun 14095 TCP sockets finished time wait in fast timer 21 packetes rejected in established connections because of timestamp 16908 delayed acks sent 13 delayed acks further delayed because of locked socket Quick ack mode was activated 4346 times 756194 packet headers predicted 441344 acknowledgments not containing data payload received 618096 predicted acknowledgments TCPSackRecovery: 87 Detected reordering 418 times using SACK TCPDSACKUndo: 1 14 congestion windows recovered without slow start after partial ack TCPLostRetransmit: 3994 TCPSackFailures: 1 121 fast retransmits 8 retransmits in slow start TCPTimeouts: 5158 TCPLossProbes: 789 TCPLossProbeRecovery: 66 TCPSackRecoveryFail: 3 TCPBacklogCoalesce: 8617 TCPDSACKOldSent: 4359 TCPDSACKOfoSent: 1 TCPDSACKRecv: 127 3870 connections reset due to unexpected data 244 connections reset due to early user close 487 connections aborted due to timeout TCPDSACKIgnoredNoUndo: 33 TCPSackShifted: 37 TCPSackMerged: 115 TCPSackShiftFallback: 731 TCPRcvCoalesce: 225465 TCPOFOQueue: 29252 TCPOFOMerge: 1 TCPChallengeACK: 193 TCPSYNChallenge: 186 TCPAutoCorking: 26574 TCPFromZeroWindowAdv: 8 TCPToZeroWindowAdv: 8 TCPWantZeroWindowAdv: 37 TCPSynRetrans: 647 TCPOrigDataSent: 1526711 TCPACKSkippedSynRecv: 153 TCPKeepAlive: 53 TCPDelivered: 1539034 TCPAckCompressed: 2559 IpExt: InNoRoutes: 16 InBcastPkts: 4 InOctets: 92596603587 OutOctets: 263001759492 InBcastOctets: 310 InNoECTPkts: 121775194 InECT1Pkts: 1 InECT0Pkts: 51506 InCEPkts: 25

Покажем статистику tcp

netstat —statistics —tcp
netstat -s -t

Покажем статистику udp

netstat —statistics —udp
netstat -s -u

Источник

Оцените статью
Adblock
detector