TGViewer
LinuxSkill - Сводки с прода и Шпаргалки LinuxSkill - Сводки с прода и Шпаргалки @linuxskill · 10.7K subscribers
Post #1190 1.91K
💣 Контейнер остался без сети? Дебажим трафик прямо с хоста

Старый ifconfig давно устарел, а Docker строит сети поверх абстракций ядра, скрывая интерфейсы контейнеров. Понимание iproute2 и неймспейсов netns — граница между джуном и профи. Держи шпаргалку по управлению скрытыми сетями оркестраторов.

Базовое управление интерфейсами хоста

Пакет iproute2 заменяет зоопарк старых сетевых утилит.


# Показать все IP-адреса и интерфейсы (сокращение от 'ip address show').
# Флаг -c включает цветной вывод для удобного чтения.
ip -c a

# Погасить или поднять интерфейс (замена 'ifconfig eth0 down/up').
sudo ip link set dev eth0 down
sudo ip link set dev eth0 up

# Добавить дополнительный IP (алиас) на интерфейс на лету.
sudo ip addr add 10.0.0.5/24 dev eth0

# Удалить IP с интерфейса.
sudo ip addr del 10.0.0.5/24 dev eth0


Маршрутизация и таблица соседей


# Таблица маршрутизации ядра (замена 'route -n').
ip r

# Прописать шлюз по умолчанию.
sudo ip route add default via 192.168.1.1 dev eth0

# Таблица соседей: ARP для IPv4 и NDP для IPv6 (замена 'arp -n').
ip neigh show


Инспекция сетей Docker

На дефолтном bridge контейнеры получают адреса из подсети docker0. Достаём IP без входа внутрь.


# ВАЖНО: .NetworkSettings.IPAddress пуст для user-defined сетей (docker-compose и т.п.).
# Надёжный способ — итерировать по .Networks (работает для ЛЮБОГО типа сети):
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my_container

# IP всех работающих контейнеров с именами и именем сети:
docker ps -q | while read id; do
name=$(docker inspect -f '{{.Name}}' "$id" | tr -d '/')
ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}' "$id")
echo "$name: $ip"
done


Дебаг неймспейсов: команды ip внутри контейнера с хоста

Docker создаёт netns для каждого контейнера, но не кладёт симлинк в /var/run/netns, откуда его читает ip netns. Восстанавливаем симлинк вручную, чтобы дебажить сеть контейнера прямо с хоста.


# 1. Достаём главный PID контейнера.
export CPID=$(docker inspect -f '{{.State.Pid}}' my_container)

# 2. Создаём стандартный каталог для неймспейсов, если его нет.
sudo mkdir -p /var/run/netns

# 3. Пробрасываем netns контейнера туда, где его найдёт 'ip netns'.
sudo ln -s /proc/$CPID/ns/net /var/run/netns/my_container_ns

# 4. Теперь любые ip-команды выполняются В КОНТЕКСТЕ сети контейнера.
sudo ip netns exec my_container_ns ip a # интерфейсы внутри контейнера
sudo ip netns exec my_container_ns ip r # маршруты внутри контейнера

# 5. Убираем симлинк после отладки (rm, НЕ 'ip netns del' — иначе снесёт сам netns!).
sudo rm /var/run/netns/my_container_ns


Используй iproute2 в связке с сетевыми неймспейсами, чтобы траблшутить аномалии на самом низком уровне.

❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
#Linux #Docker #Networking #DevOps #SysAdmin
  • 👍 7
  • 🔥 3
More from @linuxskill
  1. Oct 2, 2026📊 Диск тормозит, а iostat показывает норму? Ищем хвост задержек Приложение подвисает на з…
  2. Sep 30, 2026💀 CPU под 100%, а в top пусто? Ловим невидимые процессы через eBPF Сервер греется, в шапк…
  3. Sep 28, 2026🔥 Знаешь только ip a? 10 неочевидных команд ip для Linux Большинство админов знают про ip…
  4. Sep 25, 2026Разобрать строку штатным <regex.h> и не получить молчаливое «нет совпадения». Проверял на…
  5. Sep 23, 2026Закрыть периметр правилами iptables и не остаться при этом за дверью вместе с атакующим. П…
  6. Sep 21, 2026Добавить пользователя в группу и не выкинуть его при этом из sudo Добавить во вторичную гр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →