Что такое netns
Сетевой namespace - это отдельный сетевой стек: свои интерфейсы, маршруты, iptables, локальные порты.
Создаём изолированный сетевой стек
Создаём namespace:
sudo ip netns add testns
Проверяем:
ip netns list
Пустой стек без интерфейсов, кроме lo.
Добавляем виртуальный линк
Соединяем основной namespace и testns:
sudo ip link add veth0 type veth peer name veth1
sudo ip link set veth1 netns testns
Назначаем адреса:
sudo ip addr add 10.10.0.1/24 dev veth0
sudo ip netns exec testns ip addr add 10.10.0.2/24 dev veth1
Включаем интерфейсы:
sudo ip link set veth0 up
sudo ip netns exec testns ip link set veth1 up
sudo ip netns exec testns ip link set lo up
Проверяем связь
Из основного пространства:
ping -c 3 10.10.0.2
Из изолированного:
sudo ip netns exec testns ping -c 3 10.10.0.1
Для чего это в реальности
Тестирование сетевых конфигов, iptables, VPN-клиентов, сервисов, бинарей, маршрутизации без ломания системы. Поднимаешь неймспейс, гоняешь сервис внутри:
sudo ip netns exec testns curl http://10.10.0.1:8080
И не трогаешь основной стек.
Вывод
Сетевые неймспейсы дают чистую сетевую песочницу. Три команды и у вас отдельная "мини-сеть" для экспериментов, тестов и отладки, без виртуалок и контейнеров.
LinuxCamp | #utils
