Клиент и сервер из опыта — две изолированные сети внутри одной машины, и команды в них запускают через 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. Сеть из опыта собирают такие команды — для справки, набирать их не нужно:
Сеть из опыта собрана. Ты набираешь 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 ИМЯ— любую программу.