Работа с сетью: ip, netstat, ss, firewall-cmd, ufw

TIP

Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Сеть — основа любого сервера. Умение управлять интерфейсами, маршрутами и брандмауэром критически важно.

📌 О чём эта статья?

Сеть в Linux управляется множеством инструментов, многие из которых устарели или заменены новыми. В этой статье мы разберём:

  • Современные и устаревшие утилиты: ifconfig vs ip, netstat vs ss
  • Как просматривать и настраивать сетевые интерфейсы
  • Как проверять открытые порты и соединения
  • Управление брандмауэром: ufw (Debian/Ubuntu) и firewall-cmd (RHEL/Fedora)
  • Практические примеры диагностики и настройки

WARNING

Многие руководства в интернете используют устаревшие команды. Мы рассмотрим современные, рекомендуемые подходы.


🧩 Устаревшие vs современные инструменты

ЗадачаУстаревший инструментСовременный инструмент
Управление интерфейсамиifconfigip
Просмотр соединенийnetstatss
Маршрутизацияrouteip route
DNS-запросыnslookupdig, 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 eth0

TIP

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 + HTTPS

INFO

Конфигурация: /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=trusted

INFO

Без --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 reload

Fedora:

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      # Без прав root

dig и host — DNS-запросы

dig A example.com
dig AAAA example.com
host example.com

curl и wget — HTTP-тесты

curl -I http://localhost    # Проверить заголовки
wget --spider http://site.com  # Проверить доступность

⚠️ Типичные проблемы и решения

ПроблемаРешение
Command not found: ipУстановите iproute2 (должен быть по умолчанию)
ss: command not foundУстановите iproute2
ufw: command not foundsudo apt install ufw
firewall-cmd: not runningsudo 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, маршруты и порты.”
— Старый сетевой администратор