ne-vlezay80 Posted August 12, 2020 Posted August 12, 2020 (edited) 1. Создаём netns: ip netns add switch ip netns add host1 ip netns add host2 ip netns add host3 ip netns add host4 2. Создаём виртуальные интерфейсы и делаем базовою настройку ip link add dev ns-switch.0 up mtu 16384 type veth peer name eth0 mtu 16384 netns switch ip link add dev ns-host1.0 up mtu 16384 type veth peer name eth0 mtu 16384 netns host1 ip link add dev ns-host2.0 up mtu 16384 type veth peer name eth0 mtu 16384 netns host2 ip link add dev ns-host3.0 up mtu 16384 type veth peer name eth0 mtu 16384 netns host3 ip link add dev ns-host4.0 up mtu 16384 type veth peer name eth0 mtu 16384 netns host4 # Поднимаем внутренние интерфейсы ip -n switch link set dev eth0 up ip -n host1 link set dev eth0 up ip -n host2 link set dev eth0 up ip -n host3 link set dev eth0 up ip -n host4 link set dev eth0 up # Прописываем адреса ip -n host1 addr add 192.168.1.1/24 dev eth0 ip -n host2 addr add 192.168.1.2/24 dev eth0 ip -n host3 addr add 192.168.1.3/24 dev eth0 ip -n host4 addr add 192.168.1.4/24 dev eth0 3. Инициализируем дисциплины для входящего трафика на всех интерфейсах tc qdisc add dev ns-switch.0 handle ffff: ingress tc qdisc add dev ns-host1.0 handle ffff: ingress tc qdisc add dev ns-host2.0 handle ffff: ingress tc qdisc add dev ns-host3.0 handle ffff: ingress tc qdisc add dev ns-host4.0 handle ffff: ingress 4. Делаем инкапсуляцию в 8021q и перенаправляем на головной интерфейс коммутатора tc filter add dev ns-host1 parent ffff: matchall action vlan push 1 pipe action mirred egress redirect dev ns-switch.0 tc filter add dev ns-host2 parent ffff: matchall action vlan push 2 pipe action mirred egress redirect dev ns-switch.0 tc filter add dev ns-host3 parent ffff: matchall action vlan push 3 pipe action mirred egress redirect dev ns-switch.0 tc filter add dev ns-host4 parent ffff: matchall action vlan push 4 pipe action mirred egress redirect dev ns-switch.0 5. Прописываем путь для обратных пакетов tc filter add dev ns-switch.0 parent ffff: prio 1 protocol 802.1q flower vlan_id 1 action vlan pop pipe action mirred egress redirect dev ns-host1.0 tc filter add dev ns-switch.0 parent ffff: prio 2 protocol 802.1q flower vlan_id 2 action vlan pop pipe action mirred egress redirect dev ns-host2.0 tc filter add dev ns-switch.0 parent ffff: prio 3 protocol 802.1q flower vlan_id 3 action vlan pop pipe action mirred egress redirect dev ns-host3.0 tc filter add dev ns-switch.0 parent ffff: prio 4 protocol 802.1q flower vlan_id 4 action vlan pop pipe action mirred egress redirect dev ns-host4.0 6. Создаём VLAN'ы на коммутаторе и делаем с ними что хотим ip netns exec switch bash ip link add link eth0 name eth0.1 up type vlan id 1 ip link add link eth0 name eth0.2 up type vlan id 2 ip link add link eth0 name eth0.3 up type vlan id 3 ip link add link eth0 name eth0.4 up type vlan id 4 # Ну, например делаем из них мост ip link add dev br0 up mtu 16384 type bridge ip link set dev eth0.1 master br0 ip link set dev eth0.2 master br0 ip link set dev eth0.3 master br0 ip link set dev eth0.4 master br0 Это может быть полезно, например в виртуальных машинах или если хочется протестировать работу opensource роутера и нет реального оборудования. Edited August 14, 2020 by ne-vlezay80 Вставить ник Quote
Ivan_83 Posted August 12, 2020 Posted August 12, 2020 Во фре на нетграфе все проще и понятнее. Вставить ник Quote
ne-vlezay80 Posted August 12, 2020 Author Posted August 12, 2020 1 час назад, Ivan_83 сказал: Во фре на нетграфе все проще и понятнее. А можно пример Вставить ник Quote
vop Posted August 13, 2020 Posted August 13, 2020 netns использую давно для построения небольших виртуальных сетей. Вещь достаточно удобная. Не являюсь экспертом во FreeBSD, и ничего не знаю о реализации netns там. Хотелось бы больше узнать. Вставить ник Quote
Ivan_83 Posted August 13, 2020 Posted August 13, 2020 http://netlab.linkpc.net/wiki/ru:software:freebsd:igmpproxy_on_netgraph http://netlab.linkpc.net/wiki/ru:software:freebsd:lagg_on_netgraph http://netlab.linkpc.net/wiki/ru:software:freebsd:ng_vlan http://netlab.linkpc.net/wiki/ru:software:freebsd:ng_utp В общем нетграф это набор кубиков, которые можно соединять между собой, настраивать и даже программировать. Есть там и hub/swtch который тупо как свич работает, есть котрый как хаб; бпф программируется на матчинг по паттернам, есть возможность с помощью патч ноды менять содержимое пакетов, есть кубики для л2 и л3 интерфейсов в ядро ос, есть возможность цеплять к реальным интерфейсам, есть кубик для работы с вланами (я его переделал и заапстримил), и куча еще всего. Свои тоже легко дописываются, пример с торрентами по ссылке выше. Если нужны конкретные какието примеры - описывайте конфиги, как буду у компа попробую накидать, а пока у меня только планшетиг :)) Вставить ник Quote
Ivan_83 Posted August 13, 2020 Posted August 13, 2020 3 часа назад, vop сказал: Не являюсь экспертом во FreeBSD, и ничего не знаю о реализации netns там. Хотелось бы больше узнать. Нет там нетнс как таковой. Нетграф позволяет строить кастомные обработчики пакетов, при этом не обязательно чтобы они проходили весь сетевой стек, те можно мимо него делать. Есть таблицы маршрузации, это когда у тебя больше одной таблицы маршрутизации с дефолтным шлюзом, и ты можешь приложению или отдельному сокету эту особую не дефолтную таблицу маршрутизации привязать. Есть внет - уже не помню для чего, есть джейлы где по сути почти виртуалка работает... Я редко даже до нетграфа дохожу в личных целях, routing tables, vnet, jail ваще не юзал. Еще есть MAC фреймворк, но это про безопасность, он клеит везде метки и чекает их, и разрешения тоже, можно оч гибко разрешать/запрещать что угодно. Я накорябал модуль чтобы юзеру разрешать всякие равсокеты - нужно для некоторых игрушек под вайном. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.