В этой статье я познакомлю вас с полезными и нужными инструментами для работы с сетью в консоли Linux.
РЕКОМЕНДУЕМ:
Полезные сетевые утилиты командной строки
Инструменты для работы с сетью в консоли Linux
SX Network Scanner
По заверениям разработчиков, SX Scanner — это чуть ли не на голову лучшая альтернатива Nmap. Вот список предлагаемых фич:
- в 30 раз быстрее Nmap;
- ARP-сканирование для поиска живых хостов в локальных сетях;
- ICMP-сканирование для детекта правил файрвола;
- классическое TCP SYN сканирование (сканирование с помощью полуоткрытых соединений) для поиска портов;
- сканирование для обхода некоторых файрволов с использованием TCP FIN, NULL и Xmas пакетов. То же самое умеет и Nmap, как ты помнишь;
- можно вручную установить какие угодно флаги в пакетах сканирования, а в отчете получить флаги ответов. Довольно интересная фича, которую я больше нигде не встречал, но и ни разу в ней не нуждался, если честно;
- поиск даже UDP-портов. Надежность поиска, само собой, оставляет желать лучшего, но использование ICMP для уточнения результата — однозначный плюс;
- сканирование некоторых приложений: сюда входит Docker, Elasticsearch и Socks5. Для Docker ищется открытый Docker API, через который читается информация о ноде; для Elasticsearch выгружается информация о кластере и его индексах. С Socks5 все совсем просто — sx сообщает только факт работы Socks5 без каких‑либо подробностей;
- результаты выводит в JSON — все как у людей! Конечно, и для автоматической обработки это куда удобнее.
Sx работает из терминала (как, впрочем, большинство рассмотренных сегодня программ) и полностью написан на Go, чем можно объяснить его быстродействие.
Gping
Еще один красивый инструмент в твою копилку «псевдографических свистоперделок» — ping с визуализацией прямо в окне терминала.
grepcidr
Утилита для тех, кому уже надоело писать регулярки для поиска IP-адресов с помощью grep. Работает оно несколько шустрее, чем grep, но, чтобы нужна была отдельная утилита, у тебя должно быть действительно много работы с IP-адресами.
sish
Когда тебе нужно пробросить какой‑то сервис в интернете, при этом не имея честного «белого» IP, ты можешь воспользоваться сервисами вроде Ngrok или Serveo. Альтернатив по большому счету немного: голый SSH или кустарные self-hosted-решения.
К таким самоделкам относится и проект sish — красивая и удобная альтернатива Ngrok, сделанная поверх обычного SSH.
Sish — это не просто пачка скриптов для запуска SSH-форвардинга. Это полноценная реализация SSH-сервера, который только форвардинг и знает, зато делает это куда лучше, чем официально распространяемая версия. В частности, sish умеет слушать и мультиплексировать HTTP- и HTTPS-трафик с поддержкой WebSocket (в том числе шифрованного), если при запуске форвардинга указать удаленный порт 80 или 443. В противном случае будет проброшен TCP-порт, если он не занят на сервере.
Официальная инструкция по установке состоит всего из двух команд:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
docker pull antoniomika/sish:latest docker run -itd --name sish \ -v ~/sish/ssl:/ssl \ -v ~/sish/keys:/keys \ -v ~/sish/pubkeys:/pubkeys \ --net=host antoniomika/sish:latest \ --ssh-address=:22 \ --http-address=:80 \ --https-address=:443 \ --https=true \ --https-certificate-directory=/ssl \ --authentication-keys-directory=/pubkeys \ --private-key-location=/keys/ssh_key \ --bind-random-ports=false |
После этого можно просто пробрасывать порты как через обычный SSH. Но это можно было бы делать и так, а ты лучше посмотри, что будет, если сделать некоторые настройки по инструкции в репозитории:
1 |
ssh -R tech-geek_ru:80:localhost:8080 your_domain.com |
Оп — и http://tech-geek_ru.your_domain.com будет прозрачно перенаправлен на твой локальный порт 8080! Само собой, одновременно может жить сколько угодно сессий.
Termshark
Termshark — это консольный фронтенд для tshark. Умеет, например, читать pcap или захватывать трафик в реальном времени, прямо как «взрослый» Wireshark.
Есть поддержка фильтров, можно автоматически собирать TCP-потоки из отдельных пакетов, просматривать содержимое пакетов в соответствии с протоколом.
Написан Termshark на Go и собирается под любую платформу — готовые билды уже доступны для Linux, Windows, BSD, Android (поверх Termux) и даже macOS!
Скрипты для SSH
Для SSH мы собрали сразу несколько полезных, да и просто интересных инструментов.
Для начала — уведомления в Telegram при SSH-авторизации. Мелочь, а приятно!
Установка проста как два рубля: скачиваем скрипт в /usr/local/bin/ssh2tg.sh (или другую удобную папку), меняем настройки в скрипте (API-токен бота и ID чата, в который слать уведомления), вешаем атрибут исполнения и прописываем в конец /etc/pam.d/sshd следующую строку:
1 |
session optional pam_exec.so type=open_session seteuid /usr/local/bin/ssh2tg.sh |
Вторым покажу тебе маленького агента SSH Attack Stats, который выведет оперативную сводку атак на твой сервер.
После установки можно малость кастомизировать вывод. К примеру, следующая команда заставит показывать не больше пяти записей из логов SSH:
1 |
/usr/local/bin/log-stats ssh -c 5 |
Все пояснения есть в репозитории с программой.
asroute
Если ты инженер какого‑нибудь телеком‑оператора, то тебе регулярно приходится ковыряться с трассировкой, пингами и большими роутерами. Для тебя написали asroute — утилиту, которая позволяет к выводу traceroute добавить информацию об ASN транзитных маршрутизаторов. На примере это выглядит так:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ traceroute -a www.bhutan.gov.bt | asroute traceroute to bhutan.gov.bt (202.144.128.217), 64 hops max, 52 byte packets -> AS0 (Reserved) -> * -> BRESNAN-33588, US -> LIGHTOWER, US -> BRESNAN-33588, US -> CHARTER-20115, US -> TELIANET Telia Carrier, EU -> * -> NTT-COMMUNICATIONS-2914, US -> DRUKNET-AS DrukNet ISP, BT -> BTTELECOM-AS-AP Bhutan Telecom Ltd, BT |
Установка пока доступна только для macOS, но зато делается одной командой.
1 |
$ brew install asroute |
Asroute написан на Rust, так что теоретически может быть без проблем скомпилирован под любую другую платформу, но на момент написания статьи у меня при себе есть только комп с Windows, у которого с компиляцией нетрадиционного кода есть известные трудности.
Outrun
Гвоздь программы — скрипт outrun, который позволяет запросто вынести вычисления за пределы слабого тонкого клиента на мощный удаленный сервер, причем наличие требуемой утилиты на удаленном хосте совсем не обязательно. Единственное, что нужно для работы, — установленный outrun на обоих хостах (и на локальном, и на удаленном), причем с наличием прав root (используется chroot).
Как самый очевидный пример (приведенный даже авторами outrun) — можно запустить локальный видеоконвертер, вроде FFmpeg, с использованием ресурсов сервера. На гифке заметна весьма значительная разница во времени выполнения.
Установить можно прямо из pip.
1 |
pip3 install outrun |
Потом можно запустить требуемую команду на удаленной машине:
1 |
outrun srv4.local neofetch |
Файловая система будет доступна, будто локальная, и результаты работы команды (если есть) тоже будут записаны в текущую папку на локальном компе.
РЕКОМЕНДУЕМ:
Выбор оборудования для создания скоростной домашней сети
На этом все. Надеюсь приведенные в статье инструменты помогут вам в работе с сетью в консоли Linux.