Краткий справочник по сетевым командам Linux. Всё на одной странице: посмотреть адреса и маршруты, найти процесс на порту, проверить DNS, поймать трафик, измерить пропускную способность. Здесь только «как». Команды, которые нужны редко, но в нужный момент должны быть под рукой. Рядом по теме лежат SSH-туннели и проброс портов и Linux-утилиты для ежедневной работы.
В современных дистрибутивах старые ifconfig, netstat и route либо не установлены, либо отдают неполную картину. Им на смену пришли ip и ss из пакета iproute2. На них и опираемся.
ip: адреса, линки, маршруты
# Все интерфейсы и их адреса
ip a # сокращение от ip address
ip -br a # краткий вид: имя, состояние, адрес
ip -4 a # только IPv4
# Состояние линков
ip link # список интерфейсов
sudo ip link set eth0 up # поднять интерфейс
sudo ip link set eth0 down # погасить
# Таблица маршрутов
ip r # сокращение от ip route
ip r get 8.8.8.8 # через какой маршрут пойдёт пакет к адресу
# ARP-таблица: соответствие IP и MAC соседей
ip neigh
Команда ip r get отвечает на частый вопрос «через какой интерфейс и шлюз уйдёт трафик до этого адреса». Удобно, когда маршрутов несколько.
ss: сокеты и открытые порты
ss показывает сокеты. Это замена netstat, она быстрее и понимает фильтры.
# Все слушающие TCP-порты с процессами
sudo ss -tlnp
# -t TCP, -l только listening, -n без резолва имён, -p процессы
# То же для TCP и UDP сразу
sudo ss -tulnp
# Все соединения (не только listening)
ss -tunap
# Фильтр по порту
ss -tlnp 'sport = :443'
# Соединения к конкретному хосту
ss -tn 'dst 10.0.0.5'
Флаг -n важен. Без него ss пытается резолвить адреса и порты в имена, и команда подвисает, если DNS недоступен.
Проверка связности
# Доступность хоста и round-trip
ping -c 4 example.com # -c 4: четыре пакета и выход
# Путь до хоста
traceroute example.com
# mtr: traceroute и ping в одном, с живой статистикой потерь
mtr example.com
mtr -r -c 10 example.com # отчёт: 10 циклов и выход
mtr полезнее обычного traceroute, когда нужно поймать, на каком именно хопе теряются пакеты. Он опрашивает маршрут непрерывно и показывает процент потерь по каждому узлу.
DNS
# Базовый запрос
dig example.com
# Только ответ, без лишнего вывода
dig +short example.com
# Конкретный тип записи
dig +short MX example.com
dig +short AAAA example.com
# Запрос через конкретный DNS-сервер
dig @1.1.1.1 example.com
# Обратный резолв по IP
dig -x 8.8.8.8
# Что реально отвечает в системе (systemd-resolved)
resolvectl status
resolvectl query example.com
dig +short пригодится в скриптах. Команда отдаёт чистый адрес без служебных секций.
HTTP и проверка портов руками
# Только заголовки ответа
curl -I https://example.com
# Подробный лог соединения: DNS, TLS, заголовки
curl -v https://example.com
# Замер времени по этапам
curl -o /dev/null -s -w 'time_total: %{time_total}\n' https://example.com
# Проверить, открыт ли порт, без отправки данных
nc -zv example.com 443 # -z только проверка, -v подробно
nc -zv отвечает на вопрос «порт вообще доступен снаружи». Это быстрее, чем поднимать клиент сервиса ради одной проверки.
Захват трафика: tcpdump
# Трафик на интерфейсе по порту
sudo tcpdump -i eth0 port 443
# Трафик к конкретному хосту
sudo tcpdump -i eth0 host 10.0.0.5
# Комбинация условий
sudo tcpdump -i eth0 'tcp port 80 and host 10.0.0.5'
# Не резолвить адреса и порты в имена (быстрее)
sudo tcpdump -nn -i eth0 port 53
# Записать в файл для анализа в Wireshark
sudo tcpdump -i eth0 -w capture.pcap port 443
Для чтения большого .pcap потом удобнее Wireshark. tcpdump хорош, когда нужно быстро убедиться, что пакеты вообще доходят до хоста.
Пропускная способность: iperf3
Измеряет реальную скорость между двумя машинами. На одной запускаем сервер, на другой клиент.
# На сервере
iperf3 -s
# На клиенте
iperf3 -c 10.0.0.5 # тест в одну сторону
iperf3 -c 10.0.0.5 -R # реверс: сервер шлёт клиенту
iperf3 -c 10.0.0.5 -u -b 100M # UDP с заданным битрейтом
Полезно для проверки домашней сети: упирается ли гигабит в кабель, в Wi-Fi или в диск.
Фаервол
# nftables (современный стек)
sudo nft list ruleset # все правила
# ufw (надстройка, частый выбор в Ubuntu)
sudo ufw status verbose
sudo ufw allow 22/tcp
Если на хосте ufw, правила удобнее смотреть и менять через него. Под капотом он всё равно работает поверх nftables.
Ситуация → команда
| Ситуация | Команда |
|---|---|
| Какой процесс слушает порт | sudo ss -tlnp 'sport = :8080' |
| Узнать свои IP-адреса | ip -br a |
| Через какой шлюз уйдёт пакет | ip r get 8.8.8.8 |
| Быстро резолвнуть домен | dig +short example.com |
| Проверить, открыт ли удалённый порт | nc -zv host 443 |
| Посмотреть только заголовки HTTP | curl -I https://host |
| Найти, где теряются пакеты | mtr host |
| Убедиться, что пакеты доходят | sudo tcpdump -nn -i eth0 host X |
| Измерить скорость между хостами | iperf3 -s и iperf3 -c host |
Антипаттерны
ifconfig,netstat,routeпо привычке. Пакетnet-toolsобъявлен устаревшим, во многих дистрибутивах его уже нет. Используйтеipиss. Они дают полную картину, включая IPv6.ssбез-n. Резолв имён вешает команду, если DNS недоступен. Для диагностики почти всегда нужен-n.pingкак единственный тест. Хост может отвечать на ICMP, но нужный порт быть закрыт. Доступность сервиса проверяйте черезnc -zvилиcurl.tcpdumpбез фильтра на нагруженном хосте. Вывод утонет в пакетах. Сразу сужайте поhostиport.
Итог
Минимальный сетевой набор такой. ip a и ip r вместо ifconfig и route. ss -tlnp вместо netstat, чтобы найти процесс на порту. dig +short для DNS. nc -zv и curl -I, чтобы проверить доступность. mtr для поиска потерь, tcpdump для захвата, iperf3 для замера скорости. Остальное смотрите в таблице «ситуация → команда» выше.
Сохраните шпаргалку себе. Новые шпаргалки и разборы я анонсирую в Telegram-канале «Бруяко: код и команда».
Теги: