← Linux: инструменты
12 мин · средне · Урок 2 из 4

Сеть хоста: ip, ss, маршруты

Как смотреть сетевую конфигурацию сервера: интерфейсы и адреса через ip, открытые порты через ss, таблица маршрутов.

Сеть с точки зрения хоста

В треке про сети мы разбирали IP, порты и маршрутизацию как концепции. Теперь посмотрим на них на конкретном сервере: какие у него интерфейсы и адреса, какие порты он слушает, куда уходят пакеты. Это первое, что смотрят, когда «сервис недоступен» или «не ходит наружу».

Старые команды (ifconfig, netstat, route) во многих дистрибутивах уже не ставятся по умолчанию. Современные замены — ip и ss.

ip: интерфейсы и адреса

ip addr показывает сетевые интерфейсы и их адреса:

$ ip addr
1: lo: <LOOPBACK,UP> ...
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,UP> ...
    inet 10.0.5.14/24 scope global eth0

lo это loopback (127.0.0.1), eth0 это основной интерфейс с адресом 10.0.5.14/24. Запись /24 это маска подсети из урока про IP и порты: адрес и размер сети.

Состояние UP означает, что интерфейс поднят. Если интерфейс DOWN или у него нет адреса, сеть на этом хосте не заработает, и это первое, что проверяют.

ss: кто слушает порты

ss показывает сокеты: какие порты сервер слушает и какие соединения открыты. Частый вызов для проверки слушающих TCP-портов:

$ ss -ltnp
State   Local Address:Port   Process
LISTEN  0.0.0.0:80           nginx
LISTEN  127.0.0.1:5432       postgres

Флаги: -l слушающие, -t TCP, -n без резолва имён (быстрее), -p процесс. Здесь видно важное: nginx слушает 0.0.0.0:80 (доступен снаружи), а postgres 127.0.0.1:5432 (только локально). Это та самая разница из урока про контейнеры: сервис на 127.0.0.1 снаружи недоступен. Если «порт не отвечает», первым делом смотрят, слушает ли его кто-то и на каком адресе.

Маршруты: куда уходят пакеты

ip route показывает таблицу маршрутизации хоста: куда отправлять пакеты для разных адресов.

$ ip route
default via 10.0.5.1 dev eth0
10.0.5.0/24 dev eth0

default via 10.0.5.1 это шлюз по умолчанию (gateway): всё, что не в локальной сети, уходит туда. Строка 10.0.5.0/24 dev eth0 означает, что эту подсеть хост достаёт напрямую через eth0. Нет маршрута по умолчанию, и сервер не выйдет в интернет, хотя локально всё работает.

Что важно запомнить

ip addr показывает интерфейсы и адреса (маска /24, состояние UP); ss -ltnp показывает слушающие порты с процессом и адресом; ip route показывает маршруты и шлюз по умолчанию.

При «сервис недоступен» проверяют по порядку: поднят ли интерфейс с адресом, слушает ли кто-то порт и на каком адресе (127.0.0.1 против 0.0.0.0), есть ли маршрут по умолчанию.

В следующем уроке разберём регулярные выражения для поиска и замены по шаблону.

Прошли материал до конца? Отметьте урок пройденным.