Перейти к содержимому

7. Сетевые команды

Знание сетевых команд необходимо любому разработчику или администратору. Ты должен уметь диагностировать проблемы подключения, работать с удалёнными серверами и скачивать файлы из командной строки.

Окно терминала
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 и другими протоколами.

Окно терминала
# 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" \
-d '{"name": "John", "email": "[email protected]"}'
# Заголовки
curl -H "Authorization: Bearer token123" https://api.example.com
curl -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 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 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 myserver
Окно терминала
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/ # удалять лишние файлы

ss — современная замена устаревшего netstat:

Окно терминала
ss -tlnp # TCP, listening, числа, процессы
ss -ulnp # UDP listening
ss -s # статистика
ss -tp # активные TCP соединения с процессами
ss dst 192.168.1.1 # соединения к конкретному IP
# netstat (старый, но ещё встречается)
netstat -tlnp # аналогично ss -tlnp
netstat -an # все соединения
netstat -r # таблица маршрутизации

⚠️ Используй только на своих системах или с разрешения!

Окно терминала
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.com
tracepath google.com # без root
# dig — DNS запросы
dig google.com
dig google.com MX # MX записи
dig @8.8.8.8 google.com # использовать конкретный DNS
dig +short google.com # только IP
# host — простой DNS
host google.com
host 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. Твой публичный IP
curl https://ifconfig.me

Эти инструменты помогут тебе диагностировать сетевые проблемы и работать с удалёнными серверами как профи!