Эта команда даст вам хороший обзор процессов сетевого сервера, запущенных в данный момент в системе. Однако, поскольку серверы UDP не выполняют прослушивание и не имеют соединений, вам придется использовать параметр -iUDP, чтобы увидеть запущенные клиенты наряду с серверами. Как правило, это не вызовет затруднений, так как в вашей системе будет, вероятно, немного серверов UDP.
10.5.2. Команда tcpdump
Если вам необходимо в точности узнать, что проходит через вашу сеть, команда tcpdump переводит карту сетевого интерфейса в
# tcpdump
tcpdump: listening on eth0
20:36:25.771304 arp who-has mikado.example.com tell duplex.example.com
20:36:25.774729 arp reply mikado.example.com is-at 0:2:2d:b:ee:4e
20:36:25.774796 duplex.example.com.48455 mikado.example.com.www: S
3200063165:3200063165(0) win 5840 mss 1460,sackOK,timestamp 38815804[|tcp]
(DF)
20:36:25.779283 mikado.example.com.www duplex.example.com.48455: S
3494716463:3494716463(0) ack 3200063166 win 5792 mss 1460,sackOK,timestamp
4620[|tcp] (DF)
20:36:25.779409 duplex.example.com.48455 mikado.example.com.www: . ack 1 win
5840 nop,nop,timestamp 38815805 4620 (DF)
20:36:25.779787 duplex.example.com.48455 mikado.example.com.www: P 1:427(426)
ack 1 win 5840 nop,nop,timestamp 38815805 4620 (DF)
20:36:25.784012 mikado.example.com.www duplex.example.com.48455: . ack 427
win 6432 nop,nop,timestamp 4620 38815805 (DF)
20:36:25.845645 mikado.example.com.www duplex.example.com.48455: P 1:773(772)
ack 427 win 6432 nop,nop,timestamp 4626 38815805 (DF)
20:36:25.845732 duplex.example.com.48455 mikado.example.com.www: . ack 773
win 6948 nop,nop,timestamp 38815812 4626 (DF)
9 packets received by filter
0 packets dropped by kernel
Можно сделать этот отчет более конкретным, если добавить фильтры. Можно выполнить фильтрацию на основе хостов источника и назначения, сети, адресов Ethernet, протоколов и множества различных уровней в модели сети, а также многого другого. В число протоколов, которые распознает команда tcpdump, входят протоколы ARP, RARP, ICMP, TCP, UDP, IP, IPv6, AppleTalk и пакеты IPX. Чтобы, например, вывести с помощью команды tcpdump только пакеты TCP, запустите:
# tcpdump tcp
Чтобы увидеть веб-пакеты и пакеты UDP, введите такую команду:
# tcpdump udp or port 80
примечание
Если вам необходима тщательная проверка пакетов, попробуйте использовать альтернативу команде tcpdump с графическим интерфейсом — например, приложение Wireshark.
Примитивы
В предыдущих примерах элементы tcp, udp и port 80 называются
Таблица 10.3. Примитивы команды tcpdump
Примитив
Спецификация пакета
tcp
Пакеты TCP
udp
Пакеты UDP
port port
Пакеты TCP и/или UDP к порту port или от него
host host
Пакеты к хосту host или от него
net network
Пакеты к сети network или от нее
Операторы
В предыдущем примере в качестве
Когда не следует применять команду tcpdump
Будьте очень осторожны при использовании команды tcpdump. Отчет команды tcpdump, показанный выше в этом разделе, содержит только информацию заголовка пакетов TCP (транспортный уровень) и IP (интернет-уровень), но вы можете также вывести с помощью команды tcpdump все содержимое пакета. Хотя многие сетевые операторы позволяют с легкостью просматривать сетевые пакеты, не следует шпионить за сетями, если вы не являетесь их владельцем.
10.5.3. Команда netcat
Если вам необходимо больше гибкости, чем позволяет команда вроде telnet
$ netcat host
Команда netcat завершает работу, только если другая сторона соединения разрывает его. Это может привести к путанице, если вы перенаправляете стандартный ввод в команду netcat. Разорвать соединение в любой момент можно с помощью нажатия сочетания клавиш Ctrl+C. Если вы предпочитаете, чтобы команда завершала работу и разрывала соединение на основе стандартного потока ввода, попробуйте команду sock.
Для прослушивания конкретного порта запустите такую команду: