Работа с сетью: ip, netstat, ss, firewall-cmd, ufw
TIP
Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Сеть — основа любого сервера. Умение управлять интерфейсами, маршрутами и брандмауэром критически важно.
📌 О чём эта статья?
Сеть в Linux управляется множеством инструментов, многие из которых устарели или заменены новыми. В этой статье мы разберём:
- Современные и устаревшие утилиты:
ifconfigvsip,netstatvsss - Как просматривать и настраивать сетевые интерфейсы
- Как проверять открытые порты и соединения
- Управление брандмауэром:
ufw(Debian/Ubuntu) иfirewall-cmd(RHEL/Fedora) - Практические примеры диагностики и настройки
WARNING
Многие руководства в интернете используют устаревшие команды. Мы рассмотрим современные, рекомендуемые подходы.
🧩 Устаревшие vs современные инструменты
| Задача | Устаревший инструмент | Современный инструмент |
|---|---|---|
| Управление интерфейсами | ifconfig | ip |
| Просмотр соединений | netstat | ss |
| Маршрутизация | route | ip route |
| DNS-запросы | nslookup | dig, host |
INFO
Эти утилиты входят в пакет
net-tools(устарел) илиiproute2(современный стандарт).
Источник: iproute2 — Linux Foundation
🖧 ip — современная замена ifconfig
Команда ip — часть пакета iproute2, является многофункциональным инструментом для настройки параметров подключения к сети и пришла на смену ныне устаревшей программе ifconfig, route, arp. С помощью ip можно получить исчерпывающую информацию о сетевых интерфейсах, маршрутах, политиках маршрутизации и туннелях.
🔹 Просмотр интерфейсов
ip a # Аналог ifconfig (посмотреть все интерфейсы)
ip addr show # То же самое
ip addr show dev eth0 # Только интерфейс eth0🔹 Включение/отключение интерфейса
sudo ip link set eth0 up
sudo ip link set eth0 down🔹 Назначение IP-адреса
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip addr del 192.168.1.100/24 dev eth0🔹 Управление маршрутами
ip route show # Показать таблицу маршрутов
sudo ip route add default via 192.168.1.1
sudo ip route del default via 192.168.1.1
sudo ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0TIP
ip— мощный инструмент. Используйтеip helpилиman ipдля изучения.
📡 ss — современная замена netstat
ss (Socket Statistics) — специфичная для Linux команда, которая является частью пакета iproute2 и предназначена для изучения состояния сетевых сокетов. Она считается более эффективной и современной заменой netstat для систем Linux.
Example
Статистика сокетов:
ss -pможет показывать процессы, открывшие сокеты. Например,ss -p dport = :ftpпокажет активные FTP-соединения.
🔹 Основные команды
ss # Все соединения
ss -t # TCP
ss -u # UDP
ss -l # Слушающие порты (LISTEN)
ss -tuln # TCP/UDP, слушающие, без DNS
ss -tulnp # + PID и имя процесса (требует sudo)
ss -s # Статистика по сокетам🔹 Фильтрация
ss dst 192.168.1.100 # Соединения с определённым адресом
ss dport = :22 # Порт назначения — 22
ss sport = :80 # Порт источника — 80
ss state established # Только установленные соединенияINFO
ssчитает напрямую из/proc/net/, а не из эмуляцииnetstat, поэтому работает быстрее.
Источник: man ss
🔌 netstat — устаревший инструмент (но иногда полезен)
Хотя netstat устарел, он всё ещё встречается.
netstat -tuln # Слушающие порты (TCP/UDP)
netstat -r # Таблица маршрутов (вместо route)
netstat -i # Статистика по интерфейсам🔐 Брандмауэры: ufw и firewall-cmd
Брандмауэры служат для блокировки вредоносных или нежелательных данных, входящих в компуктерную систему или исходящих из нее, а также могут изменять сетевые пакеты. Основной принцип работы брандмауэра — запретить все, что явно не разрешено. В Linux брандмауэр реализуется на уровне ядра с помощью инфраструктуры netfilter.
iptables: Это традиционный инструмент для создания таблиц с правилами фильтрации трафика и управления ими в Linux.
🔹 ufw — Uncomplicated Firewall (Ubuntu, Debian)
Простой интерфейс для iptables/nftables.
Установка и включение
sudo apt install ufw
sudo ufw enable
sudo ufw status verboseПравила
sudo ufw allow 22 # Разрешить SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow from 192.168.1.0/24 # Разрешить подсеть
sudo ufw deny 23 # Запретить порт
sudo ufw delete allow 80 # Удалить правилоПрофили приложений (если доступны)
sudo ufw app list # Список профилей
sudo ufw allow "Nginx Full" # HTTP + HTTPSINFO
Конфигурация:
/etc/ufw/
Источник: Ubuntu — UFW Documentation
🔹 firewall-cmd — FirewallD (RHEL, Fedora, CentOS)
Использует зоны и динамическое управление.
Основные команды
firewall-cmd --state # Проверить, работает ли
firewall-cmd --get-zones # Все зоны
firewall-cmd --get-active-zones # Активные зоны
firewall-cmd --get-default-zone # Зона по умолчаниюПостоянные правила (требуют --permanent)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-source=192.168.1.0/24 --zone=trustedINFO
Без
--permanentправила действуют только до перезагрузки.
Источник: firewalld.org — Documentation
Перезагрузка правил
sudo firewall-cmd --reload # Применить постоянные правилаПросмотр
firewall-cmd --list-all # Все правила текущей зоны
firewall-cmd --list-services # Разрешённые сервисы
firewall-cmd --list-ports # Разрешённые портыℹ️Взаимосвязь и рекомендации
Info
ifconfigсчитается устаревшей; вместо нее рекомендуется использоватьip.netstatиssмогут использоваться для просмотра сетевых соединений, ноssчасто предпочтительнее в современных системах Linux благодаря своей эффективности.iptables,firewalldиufw— это разные подходы к управлению одним и тем же базовым функционаломnetfilterв ядре Linux.firewalldиufwпредоставляют более высокий уровень абстракции и динамичности по сравнению с прямой работой сiptables.- Аудит безопасности: Регулярное сканирование портов с помощью утилиты
nmapявляется важным инструментом для аудита безопасности и выявления ненужных служб или открытых портов. Важно помнить, чтоnmapследует использовать только на собственных системах и не сканировать чужие сети без разрешения.- Безопасность: Для поддержания безопасности необходимо запускать только те сетевые службы, которые действительно необходимы, и отключать все остальные. Также не рекомендуется блокировать критические ICMP-сообщения (echo-request, echo-reply, time-exceeded, destination-unreachable), так как они необходимы для правильной работы многих сетевых функций.
🧪 Практические примеры
Пример 1: Диагностика “не пингуется”
# 1. Проверить интерфейсы
ip a
# 2. Проверить маршрут по умолчанию
ip route show
# 3. Проверить, слушает ли сервис
ss -tuln | grep :80
# 4. Проверить брандмауэр
sudo ufw status # Ubuntu
firewall-cmd --list-all # RHEL/FedoraПример 2: Настройка веб-сервера
Ubuntu:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reloadFedora:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadПример 3: Блокировка IP-адреса
Через ufw:
sudo ufw deny from 192.168.1.666Через firewall-cmd:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.666" reject'
sudo firewall-cmd --reload🔄 Дополнительные сетевые утилиты
ping — проверка связи
ping google.com
ping -c 4 192.168.1.1 # 4 пакетаtraceroute / tracepath
traceroute google.com
tracepath google.com # Без прав rootdig и host — DNS-запросы
dig A example.com
dig AAAA example.com
host example.comcurl и wget — HTTP-тесты
curl -I http://localhost # Проверить заголовки
wget --spider http://site.com # Проверить доступность⚠️ Типичные проблемы и решения
| Проблема | Решение |
|---|---|
Command not found: ip | Установите iproute2 (должен быть по умолчанию) |
ss: command not found | Установите iproute2 |
ufw: command not found | sudo apt install ufw |
firewall-cmd: not running | sudo systemctl start firewalld |
| Интерфейс есть, но нет IP | Проверьте DHCP (dhclient eth0) или настройте вручную |
| Порт открыт, но сервис не доступен | Проверьте брандмауэр и сам сервис (systemctl status service) |
📊 Полезные команды диагностики
# Кто использует порт 80?
sudo ss -tulnp | grep :80
# Все активные соединения
ss -tuln
# Таблица маршрутов
ip route show
# Статистика по интерфейсам
ip -s link show eth0
# Проверить, слушает ли nginx
ss -lptn | grep nginx
# Проверить брандмауэр
sudo ufw status # Ubuntu
firewall-cmd --list-all # RHEL/Fedora✅ Заключение
Теперь вы можете:
- Управлять сетью с помощью современных инструментов
ipиss - Диагностировать сетевые проблемы
- Настроить брандмауэр с
ufwилиfirewall-cmd - Понимать разницу между устаревшими и современными утилитами
QUOTE
“Сеть — это не магия. Это IP, маршруты и порты.”
— Старый сетевой администратор