Примеры использования netstat, ss, netcat
Все команды netstat, ss, netcat относится к сетевым утилитам и доступны по-умолчанию в большинстве linux-дистрибутивах.
netstat
Команда netstat умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д.
Список всех открытых портов (TCP)
netstat -at
Список всех открытых портов (UDP)
netstat -au
Список только прослушиваемых портов (TCP)
netstat -lt
Статистика по всем открытым портам
netstat -s
Подробное отображение списка с открытыми портами - добавлен PID и имя процессов
netstat -p
Объединим все ключи в полезную команду для просмотра открытых TCP/UDP портов с именами процессов (может понадобиться root-доступ)
netstat -ltupn
Список подключенных хостов
netstat -lantp | grep ESTABLISHED |awk '{print $5}' | awk -F: '{print $1}' | sort -u
ss
Утилита ss позволяет просматривать информацию об используемых сокетах в системе. Эта команда обладает схожим функционалом к netstat, но есть и уникальные возможности. Например можно фильтровать вывод по установленным соединениям с определенным портом.
Список процессов, использующие соединения в данный момент
ss -p
Список сокетов в режиме прослушивания
ss -l
Пример фильтра - список всех соединений к порту 80
ss -o state established '( dport = :www or sport = :www )'
lsof
Утилита lsof умеет отображать процессы, которые работают с определенным файлом или сокетом.
Список всех сетевых соединений
lsof -i
Список процессов, работающих с портом 80
lsof-i :80
netcat
Утилита netcat позволяет передавать/принимать данные через TCP/UDP соединения.
Шаблон вызова утилиты
nc host port
Откроем прием (ключ -l) данных на порте 1234 с подробным выводом информации (ключ -v) и продолжением работы после разрыва соединения (ключ -k), по-умолчанию nc разрывает соединение после первого дисконекта.
nc -lvk 1234
Подключаемся к открытому порту и отправим import antigravity ;)
nc127.0.0.11234
import antigravity
Пример более полезного использования nc - передача файла. На принимающей стороне
nc -l 1234 > file
На отправляющей стороне
nc localhost 1234 < file
Или можно отдавать файл любому подключившемуся. На передающей стороне
nc -l 1234 < file
На принимающей стороне
nc localhost 1234 > file
Пример открытия shell'а на определенном порте (источник). На стороне, где нужно открыть шел
mkfifo /tmp/pipe;
sh /tmp/pipe | nc -l 1234 > /tmp/pipe
Еще один полезный пример с netcat - запуск процесса, с возможностью отслеживания его работы через сеть
watch w | nc localhost 1234