Никак не могу сообразить, как запускать networkd-unit-ы в network namespace-ах?
Т.е. весь трафик должен идти в созданный ns vpn0, внутри которого должен быть интерфейс enp3s0 с выходом в сеть.
Можно конечно сделать без networkd с помощью говна и палок, но не очень хочется.
Файлы unit-ов.
cat /etc/systemd/network/wired.network
[Match]
Name=enp3s0
[Network]
# IPv6
Address=2a01:***:***::55/64
Gateway=fe80::1
cat /etc/systemd/system/wireguard.service
[Unit]
Description=WireGuard Client
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/ip netns add vpn0
ExecStart=/bin/ip link set enp3s0 down
ExecStart=/bin/ip link set enp3s0 netns vpn0
ExecStart=/bin/ip -n vpn0 link add wg0 type wireguard
ExecStart=/bin/ip -n vpn0 link set wg0 netns 1
# Здесь нужно как-то запустить networkd-unit внутри network namespace, чтобы был выход в интернет.
ExecStart=/bin/ip address add fc00::10/64 dev wg0
ExecStart=/bin/ip address add 192.168.***.5/24 dev wg0
ExecStart=/bin/wg setconf wg0 /etc/wireguard/client.conf
ExecStart=/bin/ip link set mtu 1400 dev wg0
ExecStart=/bin/ip link set wg0 up
ExecStart=/bin/ip route add default dev wg0
ExecStart=/bin/ip -6 route add default dev wg0
ExecStart=/bin/dnscrypt-proxy /etc/dnscrypt-proxy.conf
ExecStop=/bin/ip -n vpn0 link set enp3s0 down
ExecStop=/bin/ip -n vpn0 link set enp3s0 netns 1
ExecStop=/bin/ip link del wg0
ExecStop=/bin/ip netns del vpn0
ExecStop=/bin/killall dnscrypt-proxy
[Install]
WantedBy=multi-user.target
Я тут пока что прикинул, а что если запускать как-то так?
ExecStart=/bin/ip netns exec systemctl start systemd-networkd
Или есть более лучшее решение?
А я пока что пожалуй проверю вариант с запуском networkd через ExecStart...