ссылки:
1 2 3 4 |
https://wiki.archlinux.org/title/Systemd-networkd https://wiki.archlinux.org/title/systemd-networkd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) https://wiki.archlinux.org/title/systemd-networkd https://b14esh.com/virtualization/ovs/openvswitch.html |
wpa_supplicant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
wpa_supplicant -B -b br0 -i wlan0 -c wpa.conf -Dwext wpa_supplicant - Wi-Fi Protected Access client and IEEE 802.1X supplicant -B Run daemon in the background. -b br_ifname Optional bridge interface name. (Per interface) -i ifname Interface to listen on -c filename Path to configuration file. wpa.conf - wpa_supplicant config file example: network={ ssid="MYSSID" psk="passphrase" } Enable 4-address mode when creating an interface. Wireless chip needs support it. (aka AP-to-Sta WDS). iw dev wlan0 set 4addr on Add interface to bridge: brctl addif br0 wlan0 |
wi-fi wpa_supplicant
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 |
0. Генерируем параметры подключения wpa_passphrase MYSSID passphrase - генерация подключения к SSID + PASSWORD -------------------------------- выхлопа: network={ ssid="MYSSID" psk="passphrase" psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d } -------------------------------- 1.Создаем файл /etc/wpa_supplicant/example.conf # wpa_passphrase MYSSID passphrase >> /etc/wpa_supplicant/example.conf vim /etc/wpa_supplicant/example.conf ------------------------------------ ctrl_interface=/run/wpa_supplicant eapol_version=1 ap_scan=1 fast_reauth=1 network={ ssid="MYSSID" psk="passphrase" psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d } ------------------------------------ 2. Проверяем что подключение работает wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/example.conf 3. Если все ок Переименовываем файл example.conf в wpa_supplicant-wlan0.conf systemctl enable wpa_supplicant@wlan0 systemctl start wpa_supplicant@wlan0 |
bond средствами systemd
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 49 50 51 52 53 54 55 |
0. Переходим в катало /etc/systemd/network и создаем файлы конфигурации cd /etc/systemd/network 0. создаем устройство bond0 / wi-fi + wired vim 30-bond0.netdev -------------------- [NetDev] Name=bond0 Kind=bond [Bond] Mode=active-backup PrimaryReselectPolicy=always MIIMonitorSec=1s -------------------- 1. Настраиваем проводной интерфейс vim 30-ethernet-bond0.network ----------------------------- [Match] Name=enp2s0 [Network] Bond=bond0 PrimarySlave=true ----------------------------- 2. Настраиваем без проводной интерфейс vim 30-wifi-bond.network ------------------------ [Match] #Name=wlan0 MACAddress=d4:1b:81:03:25:03 #MACAddress=MAC_address_of_the_WiFi_card [Network] Bond=bond0 ------------------------ 3. Настраиваем получение IP на bond0 vim 30-bond0.network ---------------- [Match] Name=bond0 [Network] DHCP=ipv4 #Address=10.1.10.9/24 #Gateway=10.1.10.1 #DNS=10.1.10.1 ---------------- 4. Перезапускаем systemd и проверяем настройки systemctl restart systemd-networkd.service networkctl |
bond openvswitch / ovs
1 2 3 4 5 6 7 8 9 10 |
### !!1 с wi-fi не работает ovs-vsctl add-br ovsbr1 ovs-vsctl add-bond ovsbr1 bond0 eth1 eth3 # режим бонада должно уметь оборудование ovs-vsctl set port bond0 lacp=active ovs-vsctl add-bond ovsbr0 bond0 eth1 eth2 bond_mode=active-backup # info ovs-appctl bond/show bond0 - показать информацию о bond ovs-appctl lacp/show bond0 - показать информацию о lacp ovs-vsctl list port bond0 |
P.S
1 2 3 4 |
Бонидинг средствами systemd работает прекрасно с eth+wifi. (если делать по этой вот статье https://wiki.archlinux.org/title/Systemd-networkd) Бондинг средствами ovs на виртуальных проводных интерфейсах в виртуальной машине, работает. Бондинг средствами systemd на виртуальных проводных интерфейсах в виртуальной машине, работает. Если интерфейс bond(созданный с помощью systemd) всунуть в ovs то бондинг не работает. (в случае поломки не переключается на исправный, хотя в инфо показывает что переключение случилось ) |
Своя генерация linklocal ipv4 / APIPA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
APIPA = 169.254.0.0/16 vim /etc/systemd/network/ens6.network ------------------------ [Match] Name=ens6 [Network] DHCP=ipv4 LinkLocalAddressing=ipv4 IPv6AcceptRA=no IPv4LLStartAddress=169.254.55.55 [DHCP] MaxAttempts=3 RouteMetric=10 ClientIdentifier=mac ------------------------ |
Что то похожие на APIPA IPV6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
vim /etc/systemd/network/ens6.network ------------------------------------- [Match] Name=ens6 [Network] IPv6AcceptRA=no IPv6PrivacyExtensions=prefer-public [DHCP] MaxAttempts=3 RouteMetric=10 ClientIdentifier=mac ------------------------------------- |
APIPA IPV4 + IPV6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
cat > /etc/systemd/network/50_ens6.network << "EOF" [Match] Name=ens6 [Network] LinkLocalAddressing=yes IPv4LLStartAddress=169.254.55.55 IPv6AcceptRA=no IPv6PrivacyExtensions=prefer-public [DHCP] MaxAttempts=3 RouteMetric=10 ClientIdentifier=mac EOF |
Виртуальных интерфейсы: tun, tap и dummy
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
Отличие интерфейсов tun и tap заключается в том, что tap старается больше походить на реальный сетевой интерфейс, а именно он позволяет себе принимать и отправлять ARP запросы, обладает MAC адресом и может являться одним из интерфейсов сетевого моста, так как он обладает полной поддержкой ethernet - протокола канального уровня (уровень 2). Интерфейс tun этой поддержки лишен, поэтому он может принимать и отправлять только IP пакеты и никак не ethernet кадры. Он не обладает MAC-адресом и не может быть добавлен в бридж. Зато он более легкий и быстрый за счет отсутствия дополнительной инкапсуляции и прекрасно подходит для тестирования сетевого стека или построения виртуальных частных сетей (VPN). Виртуальный интерфейс типа dummy очень похож на tap, разница лишь в том, что он реализуется другим модулем ядра. Создаем интерфейс типа tun вручную и на время(жить будет до перезагрузки): ip tuntap add dev tun0 mode tun ip address add 10.0.0.1/30 dev tun0 ip address show tun0 !!! Внимание tun интерфейс невозможно добавить в бриджи (так как он не имеет MAC) Собственно при попытки добавить tun в бридж будет ошибка: ip link set dev tun0 master br0 RTNETLINK answers: Invalid argument Создаем интерфейс типа tap вручную и на время(жить будет до перезагрузки): ip tuntap add dev tap0 mode tap ip address add 10.0.0.5/30 dev tap0 ip address show tap0 В бридж tap добавляется без проблем: ip link set dev tap0 master br0 Создаем интерфейс типа dumm вручную и на время(жить будет до перезагрузки): ip link add dev dum0 type dummy ip address add 10.0.0.7/30 dev dum0 ip address show dum0 В бридж dumm добавляется без проблем: ip link set dev dum0 master br0 Примеры конфигов для systemd: TUN: vim /etc/systemd/network/tun0.netdev ------------------------------------ [NetDev] Name=tun0 Kind=tun ------------------------------------ vim /etc/systemd/network/tun0.netdev ------------------------------------ [Match] Name=tun0 [Network] Address=10.0.0.1/30 ------------------------------------ TAP: vim /etc/systemd/network/tap0.netdev ------------------------------------ [NetDev] Name=tap0 Kind=tap ------------------------------------ vim /etc/systemd/network/tap0.network ------------------------------------- [Match] Name=tap0 [Network] Address=10.0.0.5/30 ------------------------------------- DUMMY: vim /etc/systemd/network/dum0.netdev ------------------------------------ [NetDev] Name=dum0 Kind=dummy ------------------------------------ vim /etc/systemd/network/dum0.network ------------------------------------- [Match] Name=dum0 [Network] Address=10.0.0.7/30 ------------------------------------- P.S. Стоит отметить, что если вы планируете маршрутизировать траффик через виртуальные интерфейсы ( а, используя их для цели создания виртуальных частных сетей (VPN), вы точно этого хотите), то в конфигурационный файл в секции "Network" следует добавить диррективу "IPForward=yes". |
B.A.T.M.A.N
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
cat /etc/systemd/network# cat 10_fm1-mac10.network [Match] Name=fm1-mac10 [Network] BatmanAdvanced=bat0 cat /etc/systemd/network# cat 20_wlP2p1s0f1.network [Match] Name=wlP2p1s0f1 [Network] BatmanAdvanced=bat0 cat /etc/systemd/network# cat bat0.netdev [NetDev] Name=bat0 Kind=batadv [BatmanAdvanced] GatewayMode=server RoutingAlgorithm=batman-v OriginatorIntervalSec=5 |
Примеры конфигов batman-adv / bridge / vlan
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 49 50 51 52 |
cat > /etc/systemd/network/ens4.network << "EOF" [Match] Name=ens4 [Network] Bridge=br0 EOF cat > /etc/systemd/network/ens5.network << "EOF" [Match] Name=ens5 [Network] BatmanAdvanced=bat0 EOF cat > /etc/systemd/network/ens6.network << "EOF" [Match] Name=ens6 [Network] BatmanAdvanced=bat0 EOF cat > /etc/systemd/network/bat0.netdev << "EOF" [NetDev] Name=bat0 Kind=batadv [BatmanAdvanced] #GatewayMode=server RoutingAlgorithm=batman-v OriginatorIntervalSec=5 EOF cat > /etc/systemd/network/bat0.network << "EOF" [Match] Name=bat0 [Network] Address=10.0.0.12/24 Bridge=br0 EOF cat > /etc/systemd/network/br0.netdev << "EOF" [NetDev] Name=br0 Kind=bridge EOF |
br0 / mac / tap
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 49 50 51 52 53 54 55 56 57 58 |
Без ovs на brctl будет так выглядеть cat > /etc/systemd/network/tap0.network << "EOF" [Match] Name=tap0 [Network] Bridge=br0 EOF cat > /etc/systemd/network/tap1.network << "EOF" [Match] Name=tap1 [Network] Bridge=br0 EOF cat > /etc/systemd/network/ens3.network << "EOF" [Match] Name=ens3 [Network] Bridge=br0 EOF cat > /etc/systemd/network/br0.netdev << "EOF" [NetDev] Name=br0 Kind=bridge EOF для смены маков вот так вот cat > /etc/systemd/network/40-tap0.link << "EOF" [Match] OriginalName=tap0 [Link] Name=tap0 MACAddress=02:DB:32:8F:B1:02 EOF Ну а остальные ip можно доверить на br развесить netplan Ну или запилить дальше в systemd cat > /etc/systemd/network/br0.network << "EOF" [Match] Name=br0 [Network] Address=10.0.0.5/30 Address=10.0.1.10/24 EOF |
MTU + br0
1 2 3 4 5 6 7 8 9 |
cat 10-fm1-mac10.network ------------------------ [Match] Name=fm1-mac10 [Network] Bridge=br0 [Link] MTUBytes=4000 ------------------------ |
MTU + br0 + speed
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 |
https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html#BitsPerSecond= cat 10-fm1-mac10.network ------------------------ [Match] Name=fm1-mac10 [Network] Bridge=br0 [Link] MTUBytes=4000 AutoNegotiation=yes Advertise=10baset-full Advertise=100baset-half Advertise=1000baset-full Advertise=10000baset-full Advertise=100000basedr-full ------------------------ /etc/systemd/network/10-enp9s0.link ----------------------------------- [Match] Name=enp9s0 [Link] AutoNegotiation=no Speed=100Mbps Duplex=full ----------------------------------- |
Пример демона для снижения скорости:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
.0 /etc/systemd/system/ethtool-enp9s0.service ------------------------------------------ [Unit] Description=Configure enp9s0 speed and duplex After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/ethtool -s enp9s0 speed 100 duplex full autoneg off [Install] WantedBy=multi-user.target ------------------------------------------ 1. sudo systemctl daemon-reload sudo systemctl enable ethtool-enp9s0.service sudo systemctl start ethtool-enp9s0.service sudo systemctl status ethtool-enp9s0.service |
Пример с файлом /etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/etc/network/interfaces ----------------------- # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # Loopback network interface auto lo iface lo inet loopback # Primary network interface auto enp9s0 iface enp9s0 inet dhcp up /sbin/ethtool -s enp9s0 speed 100 duplex full autoneg off /etc/network/interfaces ----------------------- |