Skip to content

Скрипт автодиагностики netdiag ​

Одна команда — полный осмотр. Скрипт проходит лестницу «снизу вверх» сам: адреса → линк → шлюз → внешний IP → DNS → порты → маршруты, фиксирует первый обрыв и выдаёт вердикт, с какого этажа начинать чинить. Ничего в системе не меняет — только читает и проверяет.

Что проверяет netdiag (и в каком порядке)1. Адреса: есть IP? нет 169.254/APIPA? → этаж DHCP/L22. Физика: интерфейсы UP (аналог «горит ли Link») → L13. ping шлюза (default route → его IP) → L2/L3 до роутера4. ping 1.1.1.1 / 8.8.8.8 → L3: маршрут роутера, NAT, аплинк5. nslookup ya.ru → DNS (и какие DNS-серверы на адаптере)6. TCP 80/443 → L4/L7: firewall, фильтры по портам, прокси

Первый шаг, завершившийся [FAIL], и есть диагноз — скрипт подсвечивает его в финальном вердикте.

Установка и запуск ​

Linux (Omarchy, Alpine, любой дистрибутив, нужны ip + ping):

bash
curl -sO https://netlab.darkpix.ru/scripts/netdiag.sh
sh netdiag.sh            # осмотр на экране + отчёт netdiag-report-*.txt рядом
sh netdiag.sh -q         # тихий режим: только отчёт в файл (для крон/скриптов)

Windows (PowerShell 5.1+, встроен в Windows 10/11):

powershell
# скачать
Invoke-WebRequest https://netlab.darkpix.ru/scripts/netdiag.ps1 -OutFile netdiag.ps1
# запуск (обход политики только для этого файла)
powershell -ExecutionPolicy Bypass -File .\netdiag.ps1

Пример вывода (норма) ​

text
=== netdiag: диагностика сети ===
== 4. КЛИЕНТ → ШЛЮЗ (L2/L3) ==
  [ OK ] шлюз 192.168.10.1 отвечает time=0.8
== 5. ШЛЮЗ → МИР: внешние IP по L3 ==
  [ OK ] 1.1.1.1 пингуется
== 6. DNS: разрешение имён ==
  [ OK ] ya.ru резолвится
------------------------------------------------------------
ВЕРДИКТ: типовых обрывов не найдено. ...

Пример вывода (поломка) ​

text
== 4. КЛИЕНТ → ШЛЮЗ (L2/L3) ==
  [ OK ] шлюз 192.168.10.1 отвечает
== 5. ШЛЮЗ → МИР: внешние IP по L3 ==
  [FAIL] 1.1.1.1 молчит
  [FAIL] 8.8.8.8 молчит
------------------------------------------------------------
ВЕРДИКТ: первый обнаруженный обрыв -> L3/NAT: до шлюза достучались,
а мир нет (маршрут роутера/его NAT/аплинк)

Как читать отчёт ​

СтрокаЭтажКуда смотреть дальше
169.254.x.x (APIPA)DHCP мёртвкабель/VLAN, DHCP-сервер (кейс №5)
default route ОТСУТСТВУЕТL3 клиента/роутераip route, таблица роутера (кейсы №2, П-2, П-4)
шлюз не отвечаетL2линк, VLAN, MAC-фильтр (кейс №1)
внешние IP молчат, шлюз живL3/NAT роутераdefault route и NAT роутера (кейс №2, П-5)
ya.ru НЕ резолвитсяDNS/ip dns print, фильтр UDP/53 (кейсы №3, П-3)
порты закрыты, пинги живыL4/L7firewall filter (кейс №4)

Практика ​

  1. Прогони скрипт на здоровой машине — запомни «картину нормы».
  2. Сломай что-нибудь в лабе (например, /ip dns set servers=203.0.113.53 на CHR) и прогони снова — сверь вердикт с реальностью.
  3. Положи скрипт в портфолио вместе с примером отчёта: «инструмент первичной диагностики, воспроизводит метод лестницы».

Источник методики: Модель OSI и кейсы №1–№8. Скрипты открытые — улучшай и адаптируй под свою сеть.