Привет! Начинающие 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 не ставится вообще.
Да, в последних версиях ее надо ставить отдельно почти везде, все просто перешлина ippolar_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?