Привет! Начинающие devops инженеры часто задают вопрос: что мне поучить, чтобы стать лучше (привет diablo)? Обычно я отвечаю: поучи команды linux. Но в целом посыл обычно ясен, чтобы что-то учить, надо хотя бы знать название утилит. Цель этой статьи и является ознакомление любопытного читателя с интересными сетевыми утилитами которые есть (или легко устанавливаются) в любом дистрибутиве linux. И так начнем!
ip
Утилита управляет интерфейсами, сетевыми устройствами и туннелями. Всем сетевым стеком linux. Например:
ip addr 
Покажет список всех сетевых адресов. Тоже самое делает утилита ifconfig без параметров. 
ip route 
Покажет таблицу роутинга. Тоже самое сделает команда route. 
ip link set eth0 up 
Поднимает интерфейс eth0. Это можно также сделать с помощью ifconfig. 
Так зачем она нужна если все ее команды можно выполнить с помощью других утилит? Дело в том, что во многие компактные дистрибутивы (например Alpine или openwrt) не используют ifconfig, route и другие “большие” утилит. Там оставляют только ip. Вот с помощью нее и придется выполнять все сетевые задачи. 
nc
Полное имя netcat - на него она тоже откликается. Это утилита, позволяет слушать и выполнять TCP и UDP соединении.
И так что может netcat?
Открываем одно окно терминала и делаем там nc -l 12345 это будет наш сервер. Отрываем другое окно и пишем в нем nc 127.0.0.1 12345 — это наш клиент. Печатаем там “Hello!” нажимаем enter. В первом окне видим эту фразу. Ура! Мы написали однонаправленный чат.
Эта утилита пригодиться чтобы проверить жив ли сервер и слушает ли от вообще на этом порту? С помощью nc можно переслать файл и даже просканировать порты. Http сервер еще можно написать.
socat
Это труба, которая позволяет соединить два сокета между собой. Mysql слушает только на local socket а мы хотим на его ходить по tcp. Выглядит это так: socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock 
Конектор к netcat из предыдущего примера: socat - TCP4:127.0.0.1:80 
Если вам нужно перебросить сокет в другое место присмотритесь к socat он вам скорее всего поможет.
netstat
Эта утилита показывает текущее состояние сетевого стека. Она даст вам ответ на вопросы: что у меня там на порту 9081 висит? netstat -nltp Что с моими tcp соединениями и кто прямо сейчас ко мне подключен? netstat -atp 
У этой утилиты есть младший (или старший по возможностям) брат ss посмотрите на него тоже может он понравиться больше.
curl
Утилита для передачи файлов. Так написано в ее описании. Чем же она замечательна? Она умеет кучу протоколов: DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP. В каждом протоколе она знает множество версий, например HTTP она может до версии 2. Умеет подставлять хидера, куки, ходить по SSL, использовать proxy разных видов. Можно отлаживать http(s) соединение с помощью -v. Примеры:
curl http://artscene.textfiles.com/asciiart/unicorn 
Единорог!
curl -v http://127.0.0.1:12345 
Соединяемся с сервером из примера netcat. В консоле сервера увидим http запрос. После этого все остановиться curl будет ждать ответ. И если вы руками его введете покажет его. 
Заключение
Автор уверен, если вы изучите эти утилиты вы не только развлечетесь, но и узнаете много нового. Я вот, например узнал адрес, где можно посмотреть на единорога. В общем спасибо за внимание если понравилось лайк, шер.
Комментарии (26)

MechanicusJr
14.11.2022 23:44Это можно также сделать с помощью
ifconfig.Если это КОМАНДА, то почему ее больше нет? ))))))))
LDAP, LDAPS
эээ OpenLDAP ?

antonkh Автор
14.11.2022 23:54+1Про команду не совсем понял. Это утилита и по умолчанию ее иногда не бывает.
OpenLDAP - это сервер LDAP(S) это протокол. Как скажем nginx и http(s).
sbr2004
15.11.2022 00:43+1Про команду не совсем понял. Это утилита и по умолчанию ее иногда не бывает.
Вот мы и дожили до времён, когда ifconfig "иногда не бывает" :(

kvazimoda24
15.11.2022 01:11+6ifconfig уже так давно сделали depricated, что мне приходится вспоминать её синтаксис, если попадается система без ip.

bolk
17.11.2022 10:08+1Вот я сейчас зашёл на RedOS у одного из наших заказчиков и там вполне себе есть ifconfig:
file $(which ifconfig)
/usr/sbin/ifconfig: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=4357fab8e7336fed79967480f706af4d4dd70f9c, stripped

chemtech
15.11.2022 01:25+1Там целая статья почему отказываются от ifconfig и переходят на ip https://habr.com/ru/post/320278/

arheops
15.11.2022 02:15+1ifconfig был баш скриптом использующием ip, ну где-то уже лет 10 как. Не помню точно, было ли она скриптом в rhel5, но в 6 оно уже было эмулировано, а rhel7 не ставится вообще.
Да, в последних версиях ее надо ставить отдельно почти везде, все просто перешлина ip
polar_yogi
15.11.2022 11:27+2Про эмуляцию скриптом, извините, чушь. И в rhel5 и в rhel6 ifconfig - самостоятельный бинарник. В этом просто убедиться, исходники доступны.

aragont
15.11.2022 11:22+2LDAP, это, например, запросы в Active Directory. Ниже запрос списка e-mail всех пользователей домена:
curl --user CN=Administrator,OU=users,DC=example,DC=com 'ldaps://ldap.example.com/DC=example,DC=com?mail?sub?(objectclass=person)'Формат URL для LDAP можно посмотреть здесь.

ogost
15.11.2022 03:13+6Даже не удосужились минимально погуглить.
ifconfig, route и netstat входят в один пакет net-tools, который на даннный момент имеет статус deprecated.
Ну и интересные возможности команд показали бы что-ли. Испанский стыд.

anone9465
15.11.2022 09:40-6Отличная система кармы, которая позволяет фильтровать контент, а вам все не нравится. Токсичный вы человек.
/s

phikus
15.11.2022 09:05netstat, а не lsof?!

polar_yogi
15.11.2022 11:33+1lsof - list open files
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
Т.е. часть информации (о сокетах, например) можно посмотреть и там и там, но в принципе они для разных целей.

aragont
15.11.2022 11:36+1Спасибо за статью. Узнал из нее про ss и про разнообразие протоколов, поддерживаемых curl.
          
 
Boti4ello
спасибо. почерпнул новенького!!! ss - вообще ни разу не слышал.
antonkh Автор
Она довольно удобная. У меня руки привыкли к netstat.
chupasaurus
За 10 лет с момента deprecation пора было уже отвыкнуть.
crims0n_ru
Вы путаете с netcat, похоже. Последняя версия net-tools, в которые входит netstat, вышла в прошлом году.
chupasaurus
Всё верно, только его подхватили в июне 2013-го, т.е. 12 лет без патчей и уже после того, как Debian c RedHat переехали на iproute2.
FruTb
Будьте осторожны с поиском документации на ss. Ходил по этим граблям)))))
polar_yogi
На какие грабли можно наступить набирая man ss?