Сеть из Терминала

С возвращением.
В предыдущем уроке ты научился смотреть процессы и мониторить систему.
Теперь выходим за пределы твоего компьютера.
В сеть.
Потому что твоя машина не живёт одна. Она говорит с роутерами, серверами, сайтами, API, репозиториями пакетов и иногда с принтером, который отказывается сотрудничать, потому что принтеры — это проклятая мебель.
Что Ты Изучишь
В этом уроке ты научишься:
- проверять доступность хоста через
ping; - тестировать сайты и API через
curl; - смотреть IP-адреса через
ip; - проверять основной шлюз;
- смотреть открытые порты через
ss; - понимать базовый DNS;
- диагностировать простые сетевые проблемы.
Миссия
Твоя миссия простая:
Использовать терминал, чтобы ответить на вопросы:
- Я подключён?
- Я могу открыть сайт?
- Какой у меня IP-адрес?
- Какие порты открыты?
- Проблема в компьютере, роутере или интернет просто устроил драму?
Проверка Соединения через ping
Команда ping проверяет, доступен ли хост.
Попробуй:
ping -c 4 example.com
Опция -c 4 означает “отправить 4 пакета”.
Можешь увидеть что-то такое:
64 bytes from example.com: icmp_seq=1 ttl=56 time=22.4 ms
64 bytes from example.com: icmp_seq=2 ttl=56 time=21.9 ms
64 bytes from example.com: icmp_seq=3 ttl=56 time=22.1 ms
64 bytes from example.com: icmp_seq=4 ttl=56 time=22.0 ms
Это означает, что компьютер может достучаться до example.com.
Если не работает, это может означать:
- ты офлайн;
- DNS не работает;
- сервер блокирует ping;
- сеть переживает плохой день.
ping не идеален, но это хороший первый тест.
Как спросить: “Привет, интернет, ты живой?”
Ping до IP-Адреса
Попробуй ping до публичного IP-адреса:
ping -c 4 1.1.1.1
Если это работает, а это нет:
ping -c 4 example.com
тогда интернет может работать, но DNS может быть сломан.
DNS превращает имена вроде example.com в IP-адреса.
Без DNS интернет становится городом, где у всех зданий есть только координаты и никаких названий.
Очень технически.
Очень раздражает.
Получить Веб-Страницу через curl
curl позволяет делать веб-запросы из терминала.
Попробуй:
curl https://example.com
Ты увидишь HTML страницы.
Может выглядеть хаотично.
Это нормально.
HTML — это то, из чего сделаны сайты. Иногда красивые в браузере, страшные в терминале.
Показать Только Headers
Чтобы показать только HTTP headers, используй:
curl -I https://example.com
Можешь увидеть:
HTTP/2 200
content-type: text/html
server: ...
Status code важен.
Распространённые примеры:
200 = OK
301 = перемещено навсегда
403 = запрещено
404 = не найдено
500 = ошибка сервера
Если ты работаешь с сайтами или API, curl становится маленькой машиной правды.
Браузеры могут что-то скрывать.
curl не заботится о чувствах.
Проверка IP-Адресов
Чтобы увидеть сетевые интерфейсы и IP-адреса, используй:
ip addr
Можешь увидеть интерфейсы вроде:
lo
wlan0
eth0
enp3s0
Распространённые значения:
lo— loopback interface;wlan0часто означает Wi-Fi;eth0илиenp...часто означает Ethernet.
Ищи что-то такое:
inet 192.168.1.35/24
Это твой локальный IP-адрес.
Локальный IP используется внутри домашней или офисной сети.
Обычно это не твой публичный IP-адрес в интернете.
Проверка Основного Маршрута
Чтобы увидеть, куда по умолчанию идёт трафик, используй:
ip route
Можешь увидеть:
default via 192.168.1.1 dev wlan0
Это значит, что компьютер отправляет интернет-трафик через 192.168.1.1.
Обычно это роутер.
Роутер — это маленькая коробка, которая притворяется простой, но тайно контролирует всю твою цифровую жизнь.
Открытые Порты через ss
Команда ss показывает sockets и сетевые соединения.
Чтобы увидеть TCP и UDP порты, которые слушают:
ss -tuln
Можешь увидеть:
Netid State Local Address:Port
tcp LISTEN 0.0.0.0:3000
tcp LISTEN 127.0.0.1:5432
Это показывает, какие сервисы слушают порты.
Примеры:
3000может быть Next.js dev server;5432часто PostgreSQL;8080часто локальный веб-сервер;22обычно SSH.
Это очень полезно, когда приложение говорит:
“Server is running.”
а браузер говорит:
“Нет.”
Кто-то врёт.
ss помогает расследовать.
Проверить Локальный Сервер
Если приложение работает на порту 3000, попробуй:
curl http://localhost:3000
Или проверь порт:
ss -tuln | grep 3000
Если видишь результат, что-то слушает порт 3000.
Если ничего не видишь, сервер, скорее всего, не запущен.
Терминал сказал своё слово.
Холодно, но ясно.
Базовая Проверка DNS
Чтобы проверить, разрешается ли домен, можно использовать:
getent hosts example.com
Можешь увидеть:
93.184.216.34 example.com
Это означает, что система может разрешить домен.
Если не работает, проблема может быть в DNS.
DNS-проблемы особенные: интернет может работать, но имена — нет.
Это как иметь телефон, но забыть имена всех контактов.
Частые Ошибки
Думать, что ping доказывает всё
Некоторые серверы блокируют ping.
Поэтому если это не работает:
ping -c 4 example.com
это не всегда означает, что сайт не работает.
Попробуй также:
curl -I https://example.com
Всегда тестируй несколькими способами.
Сеть — это не одна дверь.
Это здание со слишком большим количеством коридоров.
Путать локальный и публичный IP
Твой локальный IP может выглядеть так:
192.168.1.35
Публичный IP — это то, что видит внешний интернет.
Это не одно и то же.
Роутер обычно стоит между ними.
Как охранник в клубе, только с мигающими лампочками.
Забывать, что порты важны
Сервер может работать, но на другом порту.
Например:
http://localhost:3000
http://localhost:8080
http://localhost:5173
Это разные адреса, потому что порты разные.
Номера портов имеют значение.
Браузер не телепат.
Практика
Попробуй:
ping -c 4 example.com
ping -c 4 1.1.1.1
curl -I https://example.com
ip addr
ip route
ss -tuln
getent hosts example.com
Затем ответь:
- Что проверяет
ping? - Что показывает
curl -I? - Какая команда показывает IP-адреса?
- Какая команда показывает основной маршрут?
- Какая команда показывает порты, которые слушают?
Мини-Задание
Запусти локальный dev server, если он у тебя есть.
Например, в проекте Next.js:
npm run dev
Затем в другом терминале:
ss -tuln | grep 3000
curl http://localhost:3000
Если приложение использует другой порт, замени 3000 на правильный.
Поздравляю.
Ты проверяешь локальный веб-сервер как серьёзный человек.
Опасный прогресс.
Итог
Сегодня ты узнал, что:
pingпроверяет доступность;curlделает веб-запросы;curl -Iпоказывает HTTP headers;ip addrпоказывает IP-адреса;ip routeпоказывает маршруты;ss -tulnпоказывает порты, которые слушают;getent hostsможет проверить DNS;- локальный IP и публичный IP — разные вещи;
- порты являются частью адреса.
Сеть из терминала — это мощный навык.
Он помогает понять, где проблема: в коде, сервере, роутере, DNS или в загадочном болоте под названием “интернет”.
Следующий Урок
В следующем уроке мы изучим архивы и сжатие.
Будем упаковывать файлы, распаковывать их и наконец поймём, что такое .tar.gz.
Спойлер: это не макароны.