Wireguardトンネルを介してLXCコンテナトラフィックをルーティングする方法は?

Wireguardトンネルを介してLXCコンテナトラフィックをルーティングする方法は?

ここに画像の説明を入力してください。 この写真は私が作っているものの全体像を示しています。さて、今ではホームサーバーとリモートサーバーにLXC 2個、ipv4 2個を使って小さな部分を実装したいと思います。 2つのLXCコンテナに2つの異なるWireguardトンネルを使用したいと思います。 Wireguardトンネルが1つしかない場合は、簡単に修正できます。 「AllowedIPs = 0.0.0.0/0」の場合、すべての(ホストとゲスト)トラフィックはWireguardトンネルを通過します。しかし、さまざまなWireguardトンネルがある場合、これを解決する方法は何ですか?

ホームサーバー1

WireGuard設定:

[Interface]
PrivateKey = my_private_key
Address = 192.168.7.2/24

[Peer]
PublicKey = my_public_key
AllowedIPs = 0.0.0.0/0 <- ok for 1 LXC, but how to do it for 2?
Endpoint = 11.11.11.1:51194
PersistentKeepalive = 15
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp2s0
10.7.56.0       0.0.0.0         255.255.255.0   U     0      0        0 lxdbr0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 enp2s0
192.168.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 enp2s0
192.168.7.0     0.0.0.0         255.255.255.0   U     0      0        0 wg1

リモートサーバー

/etc/wireguard/helper/add-nat-routing.sh

#!/bin/bash
IPT="/sbin/iptables"

IN_FACE="eth0"                   
WG_FACE="wg1"                    
SUB_NET="192.168.7.0/24"         
WG_PORT="51194"                  

## IPv4 ##
$IPT -t nat -I POSTROUTING 1 -s $SUB_NET -o $IN_FACE -j MASQUERADE
$IPT -I INPUT 1 -i $WG_FACE -j ACCEPT
$IPT -I FORWARD 1 -i $IN_FACE -o $WG_FACE -j ACCEPT
$IPT -I FORWARD 1 -i $WG_FACE -o $IN_FACE -j ACCEPT
$IPT -I INPUT 1 -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -d 11.11.11.1 --jump DNAT --to-destination 192.168.7.2

/etc/wireguard/wg1.conf

[Interface]
Address = 192.168.7.1/24
ListenPort = 51194
PrivateKey = private_key
PostUp = /etc/wireguard/helper/add-nat-routing.sh

[Peer]
PublicKey = public_key
AllowedIPs = 192.168.7.2/32

関連情報