Шпаргалка по сетевым командам Linux

Краткий справочник по сетевым командам 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
Посмотреть только заголовки HTTPcurl -I https://host
Найти, где теряются пакетыmtr host
Убедиться, что пакеты доходятsudo tcpdump -nn -i eth0 host X
Измерить скорость между хостамиiperf3 -s и iperf3 -c host

Антипаттерны

Итог

Минимальный сетевой набор такой. ip a и ip r вместо ifconfig и route. ss -tlnp вместо netstat, чтобы найти процесс на порту. dig +short для DNS. nc -zv и curl -I, чтобы проверить доступность. mtr для поиска потерь, tcpdump для захвата, iperf3 для замера скорости. Остальное смотрите в таблице «ситуация → команда» выше.

Сохраните шпаргалку себе. Новые шпаргалки и разборы я анонсирую в Telegram-канале «Бруяко: код и команда».


Теги: