|
|||||||
Утилита ss в Linux
Время создания: 28.09.2020 21:33
Автор: alensav
Текстовые метки: Утилита ss в Linux
Раздел: MyTetra - Ubuntu_Command
Запись: alensav/MyTetra2/main/base/1601318007ug1nkczc0h/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Утилита ss в Linux Терминал Обновлено: 6 августа, 2016 1 admin сеть Иногда бывает необходимо посмотреть какие сетевые подключения linux открыты, какие ip адреса используются или какие порты прослушиваются. Раньше для таких целей использовалась утилита netstat. Ее, без сомнения, знают все системные администраторы и специалисты по безопасности. Но она больше не поставляется по умолчанию в новых дистрибутивах. Вместо нее используется новая утилита ss в linux. Netstat сканирует директорию /proc для получения необходимой информации, но в новых версиях ядра была реализована специальная подсистема для мониторинга сети в Linux. Ее и использует ss, с помощью этой утилиты вы можете получить больше информации о сетевых подключениях и работает она гораздо быстрее. Как вы уже поняли в этой статье мы рассмотрим мониторинг сетевых подключений в Linux с помощью утилиты из пакета iproute - ss linux. Начнем, как обычно, с синтаксиса и основных опций.
Как уже было сказано работает утилита ss в Linux на основе подсистемы ядра. Синтаксис очень простой - сама команда и ее опции: $ ss опции [фильтр_состояния] [фильтр_адреса] Для удобства вывод команды ss можно фильтровать с помощью grep: $ ss опции | grep шаблон Опции указывает различные параметры отображения и фильтрации информации. Фильтры по состоянию и адресу очень интересная вещь, они позволяют выполнять мониторинг сетевых подключений в Linux, только тех что нужно. Например, только открытых, закрытых или находящихся на этапе подключения. Подробнее мы рассмотрим это в конце статьи. Для сетевых подключений в Linux с помощью утилиты ss можно использовать такие опции:
Кроме того, можно вывести сокеты только нужного протокола:
Для фильтрации протоколов можно использовать не только эти опции, но и универсальную опцию -f, передав ей в параметре название протокола. Здесь собраны самые основные опции, если вам нужно больше информации - смотрите справку команды. А теперь давайте рассмотрим примеры использования утилиты ss Linux. Возможно, из описания опций вы мало что поняли, но с примерами все встанет на свои места. Мониторинг сетевых подключений Сначала смотрим все сетевые подключения: sudo ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Посмотрим только TCP соединения: sudo ss -t Или: sudo ss -f tcp State Recv-Q Send-Q Local Address:Port Peer Address:Port Теперь только Unix: sudo ss -x Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Для отображения UDP сокетов используйте опцию u. По умолчанию будут показаны только подключенные соединения. Если хотите получить все, нужно использовать опцию a. Поскольку UDP, это протокол без постоянного соединения, то без опции -a мы ничего не увидим: sudo ss -ua UNCONN 0 0 192.168.1.2:48268 *: * По умолчанию утилита не пытается определять имена хостов через dns, но можно ее попросить делать это опцией -r: sudo ss -tr SYN-SENT 0 1 192.168.1.2:44338 host104.rax.ru:http Обратная опция -n, не будет выполняться не только dns резолвинг, но и определение протоколов портов, зато мониторинг сети в Linux работать будет быстрее: sudo ss -tn ESTAB 0 0 192.168.1.2:54537 192.0.78.22:443 Теперь просмотрим только прослушиваемые tcp сокеты. LISTEN 0 0 *:ssh *:* Здесь мы видим только имена служб, это не всегда удобно, указав опцию n, мы получим номера портов. Так же само можно посмотреть прослушиваемые udp сокеты: sudo ss -tun UNCONN 0 0 192.168.1.2:ntp *:* Также мы можем попытаться узнать название и PID процесса, использующего сокет: sudo ss -ltp LISTEN 0 0 127.0.0.1:9050 *:* users:(("tor",pid=2602,fd=7)) Просмотр статистики статистики сетевых подключений Для просмотра статистики по использованию сетевых подключений наберите: sudo ss -s Total: 854 (kernel 1010) Transport Total IP IPv6 С помощью опции -о можно посмотреть информацию о таймере и состоянии подключения. sudo ss -to tcp ESTAB 0 0 192.168.1.2:57862 46.29.160.21:http timer:(keepalive,33sec,0) Мы можем отображать только нужный нам протокол. Например только ipv4: sudo ss -tl -f inet4 Или: sudo ss -tl4 State Recv-Q Send-Q Local Address:Port Peer Address:Port Так же само можно отобразить только соединения ipv6: sudo ss -tl6 State Recv-Q Send-Q Local Address:Port Peer Address:Port Фильтрация по состоянию соединения В синтаксисе команды мы описали два дополнительных параметра. Фильтрация состояния и фильтрация по адресу. Рассмотрим теперь как ими пользоваться. Сокет TCP может находиться в одном из нескольких состояний. Например, так утилита ss linux выведет только подключенные сокеты. ss -t4 state established 0 0 192.168.1.2:35006 64.233.165.189:https Или сокеты в состоянии ожидания: sudo ss -t4 state time-wait 0 0 192.168.1.2:42261 199.59.150.39:https В параметр state можно передать одно из следующих значений:
Не все состояния подключений можно увидеть просто выполнив команду. Например, syn-sent и syn-recv вряд ли получиться словить, потому что соединения находятся в этом состоянии очень короткое время. Для их отображения удобно использовать команду watch: watch -n 1 "ss -t4 state syn-sent" Recv-Q Send-Q Local Address:Port Peer Address:Port После запуска команды откройте любой сайт в браузере. Вы увидите как появится одно или несколько соединений на несколько секунд. Фильтрация по адресу и номеру порта Кроме фильтрации по состоянию, tcp сокеты можно фильтровать по адресам или портам соединений. Например, отберем все сетевые подключения linux с портом источником или приемником ssh, то есть все входящие и исходящие соединения ssh: ss -at '( dport = :ssh or sport = :ssh )' State Recv-Q Send-Q Local Address:Port Peer Address:Port Или сокеты с портом назначения 80 или 443: ss -nt '( dst :443 or dst :80 )' State Recv-Q Send-Q Local Address:Port Peer Address:Port Такой синтаксис тоже будет работать: ss -nt dst :443 or dst :80 Еще несколько примеров фильтрации: Фильтрация по адресу: ss -nt dst 74.125.236.178 Фильтрация по адресу и подсети: ss -nt dst 74.125.236.178/16 И по адресу и порту: ss -nt dst 74.125.236.178:80 Если вы хотите фильтровать сетевые соединения по порту, перед портом ставьте двоеточие: ss -nt dport = :80 State Recv-Q Send-Q Local Address:Port Peer Address:Port Можно использовать такие операторы сравнения:
Вот и все. Основную информацию о том, как выполнять мониторинг сети в Linux с помощью утилиты ss рассмотрели. Если вам нужно больше информации и примеров смотрите документацию по утилитам набора iproute. Похожие записи: |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|