Пример команд:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
Создание сетевых пространств (network namespaces): sudo ip netns add Client sudo ip netns add Server Создание виртуальных интерфейсов (veth): Теперь у тебя есть связанная пара интерфейсов (veth-client <-> veth-server). sudo ip link add veth-client type veth peer name veth-server Привязка интерфейсов к namespace: sudo ip link set veth-client netns Client sudo ip link set veth-server netns Server Настройка IP-адресов: sudo ip netns exec Client ip addr add 192.168.1.1/24 dev veth-client sudo ip netns exec Server ip addr add 192.168.1.2/24 dev veth-server Теперь у тебя есть два "виртуальных хоста" (Client и Server), соединенных через veth. В Client и Server прописываешь маршруты: sudo ip netns exec Client ip route add default via 192.168.1.254 sudo ip netns exec Server ip route add default via 192.168.2.254 Список всех network namespaces: sudo ip netns list ls /var/run/netns/ Просмотр интерфейсов внутри конкретного netns: sudo ip netns exec Client ip link show sudo ip -n Client link Просмотр IP-адресов внутри netns: sudo ip netns exec Client ip addr Просмотр таблицы маршрутизации в netns: sudo ip netns exec Client ip route sudo ip -n Client route Проверить ARP-таблицу (соседей): sudo ip netns exec Client ip neigh Если netns нет в списке, но процесс использует его: lsns -t net ps aux | grep "netns" Использование namespace: ip netns exec <namespace> bash ip netns exec Client bash ip netns exec Server bash |
Пример скрипта который создаст пространства имен, привяжет интерфейсы к ним, добавит адреса, добавит маршруты:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#!/bin/bash set -x # Создание namespace'ов, если их ещё нет ip netns add Server ip netns add Client echo "setup Server:" ip link set enp1s0f0np0 down ip link set enp1s0f0np0 netns Server ip netns exec Server ip addr add 10.0.12.2/24 dev enp1s0f0np0 ip netns exec Server ip link set enp1s0f0np0 up ip netns exec Server ip link set lo up ip netns exec Server ip route add default via 10.0.12.1 dev enp1s0f0np0 echo "setup Client:" ip link set enp1s0f1np1 down ip link set enp1s0f1np1 netns Client ip netns exec Client ip addr add 10.0.11.2/24 dev enp1s0f1np1 ip netns exec Client ip link set enp1s0f1np1 up ip netns exec Client ip link set lo up ip netns exec Client ip route add default via 10.0.11.1 dev enp1s0f1np1 # Удаление namespace'ов при необходимости # ip netns delete Client # ip netns delete Server |
Использование namespace:
1 2 3 4 5 6 |
Команда: ip netns exec <namespace> bash Пример: ip netns exec Server bash ip netns exec Client bash |