Linux Labs

Сеть / Ступень 1 из 14

Интерфейсы, адреса и подсети

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 8 · теория · 4 мин

Учебная сеть внутри машины

Клиент и сервер из опыта — две изолированные сети внутри одной машины, и команды в них запускают через ip -n и ip netns exec.

Кроме lo, интерфейсов у учебной машины нет: она отрезана от внешней сети. Клиента и сервер подготовка создаёт как сетевые пространства имён — отдельные наборы интерфейсов, адресов и маршрутов внутри одного ядра. Программа в пространстве lab-client видит только его интерфейсы.

Пространства соединяет пара veth — два виртуальных интерфейса, как два конца кабеля: что ушло в один конец, выходит из другого. lab0 — конец у клиента, lab1 — у сервера.

Команда Где выполняется
sudo ip -n lab-client … ip в пространстве lab-client
sudo ip netns exec lab-client … любая программа там же, например ping

Без sudo обе формы печатают Operation not permitted. Сеть из опыта собирают такие команды — для справки, набирать их не нужно:

bash
sudo ip netns add lab-client
sudo ip netns add lab-server
sudo ip -n lab-server link add lab1 type veth \
  peer lab0 netns lab-client               # пара veth
sudo ip -n lab-server address add 192.0.2.1/24 dev lab1
sudo ip -n lab-client address add 192.0.3.10/24 dev lab0
sudo ip -n lab-server link set lab1 up
sudo ip -n lab-client link set lab0 up
Проверь себя 1 вопрос

Сеть из опыта собрана. Ты набираешь ip -brief -4 address — без sudo и без -n. Что будет в выводе?

  • Читать интерфейсы своей машины можно без root. Эту ошибку печатает ip -n lab-client без sudo: войти в чужое пространство нужны права root.

  • Оба конца пары разнесены по пространствам lab-client и lab-server. На самой машине остался только lo.

  • lab0 лежит в пространстве lab-client, а команда без -n читает интерфейсы самой машины.

Без -n команда ip видит интерфейсы самой машины — один lo. lab0 и lab1 живут в пространствах, и увидеть их можно только через sudo ip -n ….

Главное в шаге

  • Сетевое пространство имён — свои интерфейсы, адреса и маршруты внутри одного ядра.
  • Пара veth соединяет два пространства, как кабель: lab0 у клиента, lab1 у сервера.
  • sudo ip -n ИМЯ выполняет ip в пространстве, sudo ip netns exec ИМЯ — любую программу.
Ubuntu 24.04
Загрузка…