7. Сетевые команды
Диагностика и работа с сетью
Заголовок раздела «Диагностика и работа с сетью»Знание сетевых команд необходимо любому разработчику или администратору. Ты должен уметь диагностировать проблемы подключения, работать с удалёнными серверами и скачивать файлы из командной строки.
ping — проверка доступности
Заголовок раздела «ping — проверка доступности»ping google.com # пинговать бесконечноping -c 4 google.com # 4 пакета и стопping -i 0.5 google.com # каждые 0.5 секундыping -s 1024 host.com # размер пакета 1024 байтаping6 ::1 # IPv6 пингping показывает задержку (latency) и потери пакетов. Идеально для первичной диагностики.
curl — HTTP клиент
Заголовок раздела «curl — HTTP клиент»curl — швейцарский нож для работы с HTTP и другими протоколами.
# GET запросыcurl https://example.com # скачать страницуcurl -o page.html https://example.com # сохранить в файлcurl -L https://short.url/redirect # следовать редиректамcurl -s https://api.example.com # тихий режим (без прогресса)
# POST запросыcurl -X POST https://api.example.com/data \ -H "Content-Type: application/json" \
# Заголовкиcurl -H "Authorization: Bearer token123" https://api.example.comcurl -I https://example.com # только заголовки ответа
# Скачивание файловcurl -O https://example.com/file.zip # сохранить с оригинальным именемcurl -C - -O https://example.com/large.iso # возобновить прерванную загрузку
# Отладкаcurl -v https://example.com # verbose (всё подробно)curl --trace-ascii debug.txt https://url # записать трейс в файл
# Сертификатыcurl -k https://self-signed.example.com # игнорировать SSL ошибкиcurl --cacert cert.pem https://example.com # использовать свой сертификатwget — загрузка файлов
Заголовок раздела «wget — загрузка файлов»wget https://example.com/file.zip # скачать файлwget -O myfile.zip https://example.com/f # задать имя файлаwget -c https://example.com/large.iso # возобновить загрузкуwget -b https://example.com/large.iso # в фоновом режимеwget -r -l 2 https://example.com/ # рекурсивно (глубина 2)wget --mirror https://example.com/ # зеркалировать сайтwget -q https://example.com/ # тихий режимssh — безопасное подключение
Заголовок раздела «ssh — безопасное подключение»ssh user@hostname # подключитьсяssh -p 2222 user@hostname # нестандартный портssh -i ~/.ssh/mykey user@hostname # указать ключssh -L 8080:localhost:80 user@host # туннель (local forwarding)ssh -R 9090:localhost:3000 user@host # обратный туннельssh -N -f -L 5432:db-host:5432 user@bastion # фоновый туннель к БД
# Выполнить команду на удалённом сервереssh user@host "ls -la /var/www"ssh user@host "sudo systemctl restart nginx"
# Конфиг для удобства (~/.ssh/config)# Host myserver# HostName 192.168.1.100# User ubuntu# IdentityFile ~/.ssh/id_rsa# Port 2222# Теперь: ssh myserverscp — копирование файлов по SSH
Заголовок раздела «scp — копирование файлов по SSH»scp file.txt user@host:/remote/path/ # скопировать на серверscp user@host:/remote/file.txt ./ # скопировать с сервераscp -r mydir/ user@host:/remote/ # скопировать директориюscp -P 2222 file.txt user@host:/path/ # нестандартный портscp user@host1:/file user@host2:/path/ # между двумя серверамиДля больших файлов и синхронизации лучше использовать rsync:
rsync -avz mydir/ user@host:/remote/dir/ # синхронизацияrsync -avz --delete src/ dst/ # удалять лишние файлыnetstat и ss — сетевые соединения
Заголовок раздела «netstat и ss — сетевые соединения»ss — современная замена устаревшего netstat:
ss -tlnp # TCP, listening, числа, процессыss -ulnp # UDP listeningss -s # статистикаss -tp # активные TCP соединения с процессамиss dst 192.168.1.1 # соединения к конкретному IP
# netstat (старый, но ещё встречается)netstat -tlnp # аналогично ss -tlnpnetstat -an # все соединенияnetstat -r # таблица маршрутизацииnmap — сканирование портов
Заголовок раздела «nmap — сканирование портов»⚠️ Используй только на своих системах или с разрешения!
nmap 192.168.1.1 # базовое сканированиеnmap -sV 192.168.1.1 # версии сервисовnmap -p 22,80,443 192.168.1.1 # конкретные портыnmap -p 1-1000 192.168.1.1 # диапазон портовnmap -p- 192.168.1.1 # все портыnmap 192.168.1.0/24 # сканировать подсетьnmap -O 192.168.1.1 # определить ОСДополнительные инструменты
Заголовок раздела «Дополнительные инструменты»# traceroute — путь пакетовtraceroute google.comtracepath google.com # без root
# dig — DNS запросыdig google.comdig google.com MX # MX записиdig @8.8.8.8 google.com # использовать конкретный DNSdig +short google.com # только IP
# host — простой DNShost google.comhost 8.8.8.8 # обратный DNS
# ip — управление сетевыми интерфейсамиip addr # адреса интерфейсовip route # таблица маршрутизацииip link # состояние интерфейсовПрактика
Заголовок раздела «Практика»# 1. Проверь подключение к интернетуping -c 3 8.8.8.8
# 2. Получи информацию о сайтеcurl -I https://google.com
# 3. Скачай файлcurl -o /tmp/test.html https://example.com
# 4. Проверь открытые порты на своём компьютереss -tlnp
# 5. DNS запросdig github.com +short
# 6. Твой публичный IPcurl https://ifconfig.meЭти инструменты помогут тебе диагностировать сетевые проблемы и работать с удалёнными серверами как профи!