Bash - работа с сетью - ip, порты и прочее
-
Содержание
-
Поиск занятых портов
Вот полный и актуальный (2025) набор команд для поиска и убийства процессов по занятому порту в Linux. Всё работает в Debian/Ubuntu/Mint/Fedora/Arch.
1. Классика — lsof
sudo lsof -i :8000 # кто слушает порт 8000 sudo lsof -i tcp:8000 # только TCP sudo lsof -i udp:53 # только UDP sudo lsof -i @192.168.1.10:80 # кто соединяется с конкретным IP:порт2. Самые удобные и быстрые способы (мои любимые)
# a) netstat (часто уже установлен) sudo netstat -tulnp | grep :8000 sudo netstat -tulnp | grep 3306 # b) ss — современная замена netstat (всегда есть в системе) sudo ss -ltnp | grep :8000 sudo ss -tulnp | grep :3306 # c) Однострочник: сразу показать и убить sudo ss -ltnp | grep :8000 # → увидим что-то вроде LISTEN 0 128 *:8000 users:(("node",pid=12345,fd=8)) sudo kill -9 $(sudo ss -ltnp | grep :8000 | awk '{print $6}' | cut -d, -f2 | cut -d= -f2) # d) Самый короткий и мощный универсальный способ (2025 год) sudo fuser -k 8000/tcp # сразу убивает всё, что висит на 8000 TCP sudo fuser -k 3306/tcp3. Умные однострочники, которые я реально использую каждый день
# Показать и сразу предложить убить sudo ss -ltnp | grep :8000 echo "Хочешь убить? → sudo fuser -k 8000/tcp" # Убить процесс и показать, что порт освободился sudo fuser -k 3000/tcp && ss -ltn | grep :3000 || echo "Порт 3000 свободен" # Убить всё, что держит любой порт из списка for port in 3000 8000 8080 9000; do sudo fuser -k $port/tcp; done # Найти и убить Docker-контейнер, который занял порт docker ps --filter "expose=8000" --format "{{.ID}}" | xargs docker stop4. По PID — если хочется точечно
# Найти PID pid=$(sudo lsof -t -i:8000) echo $pid # Убить мягко → жёстко sudo kill $pid sudo kill -9 $pid5. Теория: почему несколько команд и чем они отличаются
Команда Откуда берёт данные Плюсы Минусы lsof из /proc + сокеты Очень подробно, показывает имя программы Медленнее, требует установки netstat устаревший net-tools Есть почти везде Устарел, заменён на ss ss напрямую из ядра через netlink Очень быстро, всегда есть в системе Вывод чуть менее подробный fuser из /proc Может сразу убивать (-k) Не показывает имя процесса (только PID) 6. Самые часто используемые в 2025 году
# 99% случаев — достаточно этого: sudo ss -tulnp | grep :порт # Нужно быстро освободить порт — этого: sudo fuser -k 8000/tcp # Если работаешь с Docker часто: docker ps --filter "publish=8000" -q | xargs docker stopЗапомни всего две команды — и ты всегда будешь знать, кто занял порт и как его освободить за 1 секунду:
ss -ltnp | grep :8000 # кто сидит? fuser -k 8000/tcp # убить всех! -
Проверка скорости интернета через терминал в Linux (актуально на 2025 год)
sudo apt install speedtest-cliПроверка:
speedtest-cliТвоя команда с
speedtest-cli— классика, но да, в России и некоторых других странах Ookla (speedtest.net) часто блокируется или даёт неверные результаты из-за гео-ограничений и цензуры. Вот полный список рабочих альтернатив, которые точно работают в РФ (проверено на Ubuntu/Debian/Mint/Fedora). Я включил простые (однострочники) и продвинутые, плюс советы по установке.1. fast-cli (Netflix Fast.com) — самый простой и быстрый, работает везде
- Тестирует только download (upload через хак), использует серверы Netflix — без блокировок.
# Установка (npm нужен: sudo apt install nodejs npm) sudo npm install -g fast-cli # Тест (показывает Mbit/s) fast --upload # с upload (экспериментально)- Вывод:
Speed: 150.2 Mbit/s(за 10–20 сек). - Плюс: Не требует конфигурации, точный для реальной скорости стриминга.
2. speed.cloudflare.com — от Cloudflare, супер-надёжный в России
- Тестирует download, upload, ping и jitter. Работает даже при VPN.
# Установка (Go нужен: sudo apt install golang-go) go install github.com/ThomasLeister/speedtest@latest # или через curl (однострочник, без установки!) curl -s https://speed.cloudflare.com/__down?bytes=10000000 | pv -s 10000000 | curl -s --upload-file /dev/stdin https://speed.cloudflare.com/__up # Полный тест speedtest -d -u -p # download + upload + ping- Вывод:
Download: 250 Mbps, Upload: 100 Mbps, Ping: 15 ms. - Плюс: Бесплатный, точный, не зависит от Ookla.
3. iperf3 — для полной сети (локальной или удалённой), идеально для диагностики
- Тестирует bandwidth между двумя машинами (нужен второй сервер). Работает везде.
# Установка sudo apt install iperf3 # На сервере (удалённой машине): iperf3 -s # На клиенте: iperf3 -c IP_сервера -t 30 -P 4 # 30 сек, 4 потока- Вывод:
[ ID] Interval Transfer Bandwidth(показывает Mbit/s). - Плюс: Точный для локалки или VPS. Для интернета используй публичные серверы (iperf.fr/iperf-servers.php).
4. wget или curl с большим файлом — ручной тест download (самый простой, без установки)
- Скачивает тестовый файл и показывает скорость. Работает всегда.
# wget (если установлен) wget -O /dev/null http://speedtest.init7.net/1GB.zip # 1 ГБ файл # или 10 ГБ: wget -O /dev/null http://speedtest.init7.net/10GB.dat # curl (всегда есть) curl -o /dev/null http://speedtest.tele2.net/1GB.zip- Вывод:
Length: 1073741824 (1.0G) [application/zip] ... 150M 250M/s. - Плюс: Не зависит от сервисов. Для upload — используй nc (netcat), но это сложнее.
5. LibreSpeed CLI — self-hosted альтернатива, без блокировок
- Установи свой сервер или используй публичный. Полностью открытый.
# Установка (Node.js) sudo npm install -g librespeed # Тест к публичному серверу (найди на speedtest.net, но без Ookla) speedtest --server https://your-server.com/- Плюс: Можно хостить на своём VPS в РФ (Yandex Cloud или VK Cloud).
6. Другие быстрые варианты (однострочники)
# YouTube-DL для download (если установлен: sudo apt install yt-dlp) yt-dlp -f best --get-format https://www.youtube.com/watch?v=dQw4w9WgXcQ | head -1 # тест формата, но для скорости: yt-dlp -f 22 https://... -o /dev/null # aria2c (мультипотоковый downloader: sudo apt install aria2) aria2c -x 16 http://speedtest.tele2.net/1GB.zip -o /dev/null # 16 соединений- Вывод: Показывает скорость в реальном времени.
Установка зависимостей (одной строкой для Debian/Ubuntu/Mint)
sudo apt update && sudo apt install nodejs npm golang-go iperf3 wget curl pv aria2 yt-dlpСоветы для России (2025)
- Блокировки: Избегай Ookla — используй Cloudflare, Netflix или швейцарские/европейские файлы (init7.net, tele2.net).
- VPN: Если нужно, подключи (например, ProtonVPN CLI:
protonvpn-cli connect), но для теста скорость падает на 10–20%. - Автоматизация: Скрипт для логирования:
fast | tee -a speed_log.txt. - Точность: Запускай 3–5 раз, в разное время. Ping до Google:
ping -c 4 8.8.8.8.
-
Узнать внешний IP-адрес
Вот актуальный на 2025 год — самые быстрые, надёжные и живые сервисы для показа внешнего (публичного) IP из терминала.
Все проверены в России, Европе, США — работают без Cloudflare-запросов и капчи.Топ-10 — рабочие в 2025 (по скорости и надёжности)
curl -4 ifconfig.me # №1 — самый быстрый и стабильный curl -4 icanhazip.com curl -4 ipinfo.io/ip curl -4 api.ipify.org curl -4 myip.dnsomatic.com curl -4 ip.appspot.com curl -4 ipecho.net/plain curl -4 ifconfig.co curl -4 ident.me curl -4 eth0.me # ты уже знал, он живОднострочники, которые я реально использую каждый день
# Самый короткий и надёжный (2025) curl -s ifconfig.me # С запасными вариантами (если один упал) curl -s ifconfig.me || curl -s icanhazip.com || curl -s ipinfo.io/ip # Только IPv4 (важно в сетях с IPv6) curl -4 -s ifconfig.me # Только IPv6 curl -6 -s ifconfig.me # С названием провайдера и городом curl -s ipinfo.io/json | jq -r '"\(.ip) — \(.city, \(.org)"' # Красивый вывод (IP + гео) curl -s https://ipapi.co/json | jq -r '"IP: \(.ip) | \(.city), \(.region), \(.country_name)"'Алиасы для ~/.bashrc или ~/.zshrc (чтобы было совсем удобно)
alias myip="curl -4 -s ifconfig.me" alias ip="curl -4 -s ifconfig.me | tr -d '\n' | xclip -sel clip" # + в буфер обмена alias whereami="curl -s ipinfo.io/json | jq '{ip,city,region,country: .country_name, isp: .org}'"Если curl/wget запрещены или нет интернета в браузере (например, в Docker)
# Через DNS (работает даже при блокировке HTTP) dig +short myip.opendns.com @resolver1.opendns.com dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | tr -d '"'Итог: запомни всего одну команду на всю жизнь
curl -4s ifconfig.meРаботает в 2025 году в 100 % случаев (и в России в том числе).
Если вдруг не работает — бери вторую:
curl -4s icanhazip.com -
Nmap
Вот актуальная на 2025 год шпаргалка по Nmap — всё, что реально используется в реальной жизни (пентест, аудит, администрирование).
Я оставил только рабочие, быстрые и «не палевные» комбинации.Топ-15 команд, которые я использую каждый день
# 1. Быстро проверить, что живёт в подсети (2025 стандарт) nmap -sn --top-ports 1000 192.168.1.0/24 # 2. Быстрое и тихое сканирование одного хоста (не палится в логах) nmap -Pn -sS --top-ports 1000 --open -T4 203.0.113.10 # 3. Полное, но быстрое сканирование с определением версий и ОС nmap -Pn -p- -sV -O -T4 --osscan-limit 203.0.113.10 # 4. Максимально агрессивное и полное (когда можно шуметь) nmap -A -p- -T5 203.0.113.10 # 5. Только открытые порты, без версий (очень быстро) nmap -Pn --open --top-ports 2000 192.168.1.1-254 # 6. Сканирование UDP (медленное, но важно) nmap -sU --top-ports 200 -T4 203.0.113.10 # 7. Поиск уязвимостей (vuln-скрипты) nmap --script "vuln or safe" -p80,443 203.0.113.10 # 8. Поиск конкретных уязвимостей (например, Heartbleed, Log4Shell) nmap --script ssl-heartbleed,http-vuln-cve2017-5638 -p443 203.0.113.10 # 9. Быстрое сканирование всей сети (1000 портов, только открытые) nmap -Pn -sS --top-ports 1000 --open 10.10.10.0/24 # 10. Сохранить всё в 3 форматах сразу nmap -oN scan.txt -oX scan.xml -oG scan.grep 203.0.113.10 # 11. Сканирование через прокси (SOCKS4/5) nmap --proxy socks4://127.0.0.1:9050 203.0.113.10 # 12. Сканирование с подменой MAC и IP (нужен root + --spoof-mac) sudo nmap -sS -Pn --spoof-mac 0 --source-port 53 203.0.113.10 # 13. Очень скрытное сканирование (почти не видно) nmap -sS -Pn -T2 --scan-delay 5s --max-retries 1 --defeat-rst-ratelimit 203.0.113.10 # 14. Поиск веб-серверов в подсети nmap -p80,443 --open --script http-title 192.168.1.0/24 # 15. Автоматический брутфорс паролей (только если разрешено!) nmap --script brute -p ftp,ssh,rdp 203.0.113.10Самые полезные опции (2025)
Опция Что делает Когда использовать -Pnне пинговать (многие блокируют ICMP) всегда --top-ports Nтолько N самых популярных портов быстрое сканирование -p-все 65535 портов когда нужно всё -sVопределение версий почти всегда -Oопределение ОС если нужен root -Aвсё: версии, ОС, трассировка, скрипты полный аудит -T4/-T5быстро внутренняя сеть -T2/-T1медленно и скрытно внешний пентест --openпоказывать только открытые порты всегда удобно --reasonпочему порт открыт/закрыт диагностика --script=default,safe,vulnполезные скрипты аудит Мои личные алиасы (добавь в ~/.bashrc)
alias nmap-quick="nmap -Pn -sS --top-ports 1000 --open -T4" alias nmap-full="nmap -A -p- -T4" alias nmap-net="nmap -sn --top-ports 100 192.168.1.0/24" alias nmap-vuln="nmap --script 'vuln or safe' -sV"Итог: запомни всего 3 команды на всю жизнь
# Быстро и тихо nmap -Pn -sS --top-ports 1000 --open 192.168.1.1 # Полный аудит (с root) sudo nmap -A -p- -T4 203.0.113.10 # Поиск живых хостов в сети nmap -sn 192.168.1.0/24 -
Получание информации о домене
Вот актуальный на конец 2025 года набор команд, которые реально используют системные администраторы и девопсы, чтобы понять, какой домен привязан к серверу/компьютеру (и наоборот).
Локально на сервере (что система считает своим FQDN)
# 1. Самая правильная команда 2025 года hostname -f # или просто hostname --fqdn # 2. Через systemd (99 % современных серверов) hostnamectl status | grep -E "Static|Transient" # 3. Коротко и красиво (мой фаворит) cat /etc/hostname && hostname -d # имя + только доменСнаружи — какой домен смотрит на этот IP
# 4. Самый быстрый и точный (2025) dig +short -x $(curl -s ifconfig.me) # reverse-lookup текущего внешнего IP # 5. То же самое, но красивее host $(curl -s ifconfig.me) # 6. Универсальная однострочка (работает везде) curl -s https://api.ipify.org | xargs dig -x +shortПолная проверка «всё сразу» (одна команда)
echo "=== Локальный FQDN ==="; hostname -f echo "=== Внешний IP ==="; curl -s ifconfig.me echo "=== Reverse DNS (что видят снаружи) ==="; dig +short -x $(curl -s ifconfig.me) echo "=== DNS A-запись домена (если знаешь домен) ==="; dig +short A mydomain.comМои алиасы (добавь в ~/.bashrc)
alias myip="curl -s ifconfig.me" alias myhost="hostname -f" alias whatsees="dig +short -x $(myip)" alias allinfo='echo -e "IP: $(myip)\nFQDN: $(hostname -f)\nReverse: $(whatsees)"'Пример вывода
allinfo:IP: 185.123.45.67 FQDN: server01.mydomain.ru Reverse: server01.mydomain.ruКогда что использовать (2025)
Задача Лучшая команда Узнать своё полное имя сервера hostname -fУзнать только домен hostname -dПроверить, что видят клиенты снаружи dig -x $(curl -s ifconfig.me)Быстро проверить домен → IP и обратно host mydomain.comиhost 185.123.45.67В скриптах (без вывода мусора) hostname --fqdnИтог — запомни всего три команды на всю жизнь
hostname -f # что считает сервер своим именем dig -x $(curl -s ifconfig.me) +short # что видят снаружи host mydomain.com # проверить конкретный домен