Диагностика сети от интерфейсов до HTTP-запросов, DNS, портов и правил файрвола
| Команда | Вариант | Что делает |
|---|---|---|
| ip a | ip a | Все интерфейсы и адреса. |
| ip -br a | ip -br a | Кратко: одна строка на интерфейс. |
| ip a show | ip a show dev eth0 | Один интерфейс. |
| ip link | ip link show | Состояние интерфейсов, MAC и MTU. |
| ip link set up/down | ip link set eth0 down | Выключить или включить интерфейс (до перезагрузки). |
| ip link set mtu | ip link set eth0 mtu 1400 | Изменить MTU (полезно за VPN или туннелем). |
| ip addr add | ip addr add 10.0.0.5/24 dev eth0 | Временно добавить адрес (до перезагрузки). |
| ip addr del | ip addr del 10.0.0.5/24 dev eth0 | Удалить адрес. |
| ip route | ip route show | Таблица маршрутов. |
| ip route get | ip route get 8.8.8.8 | Через какой интерфейс и шлюз уйдёт пакет. |
| ip route add | ip route add 10.20.0.0/16 via 10.0.0.1 | Добавить маршрут (временно). |
| ip route add default | ip route add default via 10.0.0.1 dev eth0 | Маршрут по умолчанию. |
| ip route del | ip route del 10.20.0.0/16 | Удалить маршрут. |
| ip neigh | ip neigh show | ARP-таблица: соседи в локальной сети и их MAC. |
| ip -s link | ip -s link show eth0 | Счётчики ошибок и пакетов на интерфейсе. |
| hostname -I | hostname -I | Все IP-адреса хоста. |
| hostname | hostnamectl set-hostname web01 | Сменить имя хоста постоянно. |
| Команда | Вариант | Что делает |
|---|---|---|
| ss -tulpn | ss -tulpn | Слушающие TCP и UDP порты с процессами. |
| ss -t | ss -t state established | Установленные TCP-соединения. |
| ss -tn | ss -tn dst 10.0.0.9 | Соединения к конкретному адресу. |
| ss sport | ss -tn sport = :443 | Фильтр по порту источника. |
| ss dport | ss -tn dport = :5432 | Соединения к порту назначения. |
| ss -s | ss -s | Сводка по сокетам. |
| ss -o | ss -tno state established | Таймеры соединения. |
| netstat -tulpn | netstat -tulpn | То же, что ss, из старого пакета net-tools. |
| lsof -i | lsof -i :8080 | Кто держит порт. |
| lsof -i TCP | lsof -iTCP -sTCP:LISTEN | Все слушающие TCP-сокеты. |
| lsof -u | lsof -u ivan -i | Сетевые соединения пользователя. |
| Команда | Вариант | Что делает |
|---|---|---|
| ping | ping -c 4 8.8.8.8 | Четыре пакета и выход. |
| ping -i | ping -i 0.2 -c 20 gw | Интервал 0.2 с (нужны права root для интервала меньше 0.2). |
| ping -s | ping -M do -s 1372 -c 3 host | Проверить MTU: не фрагментировать, размер полезной нагрузки. |
| ping -W | ping -W 2 -c 1 host | Таймаут ожидания ответа 2 секунды. |
| traceroute | traceroute -n example.com | Маршрут без DNS-имён (быстрее). |
| tracepath | tracepath example.com | Маршрут и определение MTU без root. |
| mtr | mtr -rwbc 10 example.com | Непрерывная трассировка с потерями и задержками (отчёт). |
| nc -zv | nc -zv db.local 5432 | Проверить, открыт ли TCP-порт (без отправки данных). |
| nc -zvu | nc -zvu dns.local 53 | Проверка UDP (менее надёжна). |
| nc -l | nc -l 9000 | Слушать порт 9000 (тест входящих соединений). |
| timeout + bash | timeout 3 bash -c '</dev/tcp/host/443' && echo open | Проверка порта без nc, встроенными средствами bash. |
| tcpdump | sudo tcpdump -i any -nn port 80 | Перехват трафика по порту, без DNS (-nn). |
| tcpdump -w | sudo tcpdump -i eth0 -w cap.pcap host 10.0.0.9 | Записать трафик в файл для Wireshark. |
| tcpdump -r | tcpdump -nr cap.pcap | Прочитать записанный файл. |
| Команда | Вариант | Что делает |
|---|---|---|
| dig | dig example.com A | Запись A с подробностями. |
| dig +short | dig +short example.com | Только ответ. |
| dig MX | dig +short MX example.com | Почтовые серверы домена. |
| dig TXT | dig +short TXT example.com | TXT-записи (SPF, DKIM, верификации). |
| dig NS | dig +short NS example.com | Серверы имён домена. |
| dig @ | dig @8.8.8.8 example.com | Запрос к конкретному DNS-серверу. |
| dig -x | dig -x 8.8.8.8 +short | Обратный запрос: PTR по IP. |
| dig +trace | dig +trace example.com | Путь от корневых серверов до ответа. |
| dig +noall +answer | dig +noall +answer example.com | Вывод только секции ответа. |
| host | host example.com | Простой запрос имени. |
| nslookup | nslookup example.com 8.8.8.8 | Запрос через указанный сервер (интерактивный режим тоже есть). |
| resolvectl | resolvectl query example.com | Через systemd-resolved, с учётом локальных настроек. |
| resolvectl flush | resolvectl flush-caches | Сбросить кеш DNS. |
| getent hosts | getent hosts example.com | Имя так, как его видит система (учитывает /etc/hosts и NSS). |
| Команда | Вариант | Что делает |
|---|---|---|
| curl | curl https://example.com | Получить тело ответа. |
| curl -I | curl -I https://example.com | Только заголовки (HEAD). |
| curl -i | curl -i https://example.com | Заголовки и тело вместе. |
| curl -s -o /dev/null -w | curl -s -o /dev/null -w "%{http_code} %{time_total}\n" URL | Только код ответа и время (для мониторинга). |
| curl -L | curl -L http://example.com | Следовать редиректам. |
| curl -v | curl -v https://example.com | Подробный вывод, включая TLS-рукопожатие. |
| curl -o | curl -o page.html URL | Сохранить в файл с заданным именем. |
| curl -O | curl -O URL | Сохранить с именем из URL. |
| curl -C - | curl -C - -O URL | Продолжить прерванную загрузку. |
| curl -X POST | curl -X POST -H "Content-Type: application/json" -d '{"a":1}' URL | Отправить JSON. |
| curl -F | curl -F "file=@report.pdf" URL | Отправить файл как multipart-форму. |
| curl -H | curl -H "Authorization: Bearer $TOKEN" URL | Добавить заголовок (токен, Accept и др.). |
| curl -u | curl -u ivan:pass URL | Базовая аутентификация (пароль лучше из переменной или ~/.netrc). |
| curl --resolve | curl --resolve site.com:443:10.0.0.5 https://site.com/ | Подменить DNS для проверки конкретного сервера. |
| curl -x | curl -x http://proxy:3128 URL | Через HTTP-прокси. |
| curl --max-time | curl --max-time 5 URL | Таймаут всей операции. |
| curl -k | curl -k https://self-signed.local | Не проверять сертификат. Только для тестов, не для продакшена. |
| wget -O | wget -O file.tgz URL | Сохранить в файл. |
| wget -c | wget -c URL | Продолжить загрузку. |
| wget -q | wget -qO- URL | Тихий режим и вывод в stdout. |
| wget -r -np | wget -r -np -l 2 URL | Рекурсивно, не подниматься выше, глубина 2 (осторожно с нагрузкой). |
| Команда | Вариант | Что делает |
|---|---|---|
| ufw status | sudo ufw status verbose | Состояние и правила (Ubuntu и Debian). |
| ufw allow | sudo ufw allow 22/tcp | Разрешить порт. |
| ufw allow from | sudo ufw allow from 10.0.0.0/24 to any port 5432 | Разрешить порт только из подсети. |
| ufw deny | sudo ufw deny 3306 | Запретить порт. |
| ufw delete | sudo ufw delete allow 8080 | Удалить правило. |
| ufw enable | sudo ufw enable | Включить файрвол (сначала разрешите SSH, иначе отрежете себя). |
| firewall-cmd | sudo firewall-cmd --list-all | Firewalld в RHEL-семействе. |
| firewall-cmd --add | sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload | Открыть порт постоянно. |
| iptables -L | sudo iptables -L -n -v --line-numbers | Правила iptables с номерами и счётчиками. |
| nft list | sudo nft list ruleset | Все правила nftables. |
| Команда | Вариант | Что делает |
|---|---|---|
| nmcli dev | nmcli dev status | Интерфейсы и их состояние в NetworkManager. |
| nmcli con show | nmcli con show | Сохранённые подключения. |
| nmcli con up | nmcli con up "Wired connection 1" | Поднять подключение. |
| nmcli con mod | nmcli con mod eth0 ipv4.addresses 10.0.0.5/24 ipv4.gateway 10.0.0.1 ipv4.method manual | Постоянно задать статический адрес. |
| nmcli con mod dns | nmcli con mod eth0 ipv4.dns "1.1.1.1 8.8.8.8" | Задать DNS-серверы. |
| nmcli con reload | nmcli con reload && nmcli con up eth0 | Применить изменения. |
| cat /etc/resolv.conf | cat /etc/resolv.conf | Какой DNS используется (на systemd-resolved это заглушка). |
| Команда | Вариант | Что делает |
|---|---|---|
| scp | scp file.txt user@host:/tmp/ | Копировать файл на удалённый сервер. |
| scp -r | scp -r ./dir user@host:/srv/ | Рекурсивно. |
| scp -P | scp -P 2222 file user@host:/tmp/ | Нестандартный порт SSH (заглавная P). |
| scp -i | scp -i ~/.ssh/deploy file user@host:/tmp/ | Указать ключ. |
| sftp | sftp user@host | Интерактивная передача: get, put, ls, cd. |
| rsync -avh | rsync -avh --progress ./dir/ user@host:/backup/ | Синхронизация: только изменившиеся файлы, с правами и временем. |
| rsync --delete | rsync -avh --delete ./site/ /var/www/site/ | Удалять на приёмнике то, чего нет в источнике (осторожно). |
| rsync --dry-run | rsync -avhn ./src/ dst/ | Только показать, что будет сделано (-n). |
| rsync --exclude | rsync -av --exclude='*.log' --exclude=node_modules ./app/ host:/app/ | Исключить шаблоны. |
| rsync -e ssh | rsync -av -e "ssh -p 2222" ./dir/ user@host:/x/ | Свой SSH-порт или ключ. |
| rsync --bwlimit | rsync -av --bwlimit=5000 ./big/ host:/big/ | Ограничить скорость (КБ/с). |
ip -br a # есть ли адрес на интерфейсе ip route get 8.8.8.8 # есть ли маршрут наружу dig +short example.com # резолвится ли имя ping -c 3 8.8.8.8 # доступность по IP (без DNS) curl -v -o /dev/null https://example.com # где именно ломается запрос ss -tulpn | grep :443 # слушает ли сервис порт sudo ufw status # не блокирует ли файрвол
ufw enable или изменение правил iptables/nftables по SSH может отрезать вам доступ к серверу. Перед этим разрешите свой порт SSH и держите открытую вторую сессию. Флаг rsync --delete удаляет файлы на приёмнике: сначала проверьте с --dry-run.
-v: видно разрешение имени, TCP, TLS-сертификат и заголовки. Это быстрее, чем гадать по коду ошибки.