OpenBSDおよびWireguard Hub and Spoke: Spoke-to-Spoke通信

OpenBSDおよびWireguard Hub and Spoke: Spoke-to-Spoke通信

私は192.168.100.1/24で「ハブ」として指定されたWireguard [wg0]を実行するOpenBSDシステムを正常に設定しました。また、IPアドレス192.168.100.0/24を使用して、さまざまなハードウェアタイプとオペレーティングシステムでWireguardを正常に実行している顧客もいます。その目的は、OpenBSDがNATを介して外部の世界と通信でき、クライアントが中央のOpenBSDシステムを介して互いに通信できることです。

動作方法(ping応答):

(wg0:network) -> 192.168.100.1
192.168.100.1 -> (wg0:network)
(wg0:network) -> 8.8.8.8 (for example)

うまくいかないもの:

(wg0:network) -> (wg0:network)

これが機能しない場合、OpenBSD自体はICMPリダイレクトで応答します。これらの行動は理解できますが、私が望むものではありません。次の設定も機能しませんが、私の考えでは、OpenBSDを192.168.100.1に変更するだけです。/ 32そして、192.168.100.0/24パスを追加します。これは応答をまったく生成しません(更新:転送が発生しないため、要求が宛先に到達しないことを明確にする必要があります)。

# /etc/hostname.wg0
inet 192.168.99.1 255.255.255.255 NONE
up

!/usr/local/bin/wg setconf wg0 /etc/wireguard/wg0.conf
!route add 192.168.99.0/24 -link -iface wg0

私は、BSDがどのようにパケットを受信したインターフェイスからパケットを送信できないかについての議論をオンラインで見たことがあります。一般的な状況では、これは賢明な戦略ですが、周辺のさまざまなブログを誤解しない限り、これは有効なユースケースだと思います。

ちなみに、この設定はLinux中心のシステム用です。スポーク間通信が可能です。

(更新)pf.confに追加した内容は次のとおりです。

block in
pass on wg0
pass in inet proto udp from any to (em0) port 1984
pass out on em0 to 8.8.8.8 nat-to (em0)
pass in from (em0:network) to (em0)

ベストアンサー1

ありがとう、Justin Ludwigに行ったことがありますか?答えを見つけました。ここは私が期待した場所ではありません。

ping 回数が 1 の tcpdump を実行すると、ping 要求が実際に wg0 インターフェースを離れるのを 2 回表示できます。私はpingを無限に実行し、それが繰り返されることを見つけられなかったので、以前はこれに気づいていませんでした。

これは私がWireguardについて気付かなかったことを発見しました。つまり、他のポイントへのより具体的な/ 32パスがある場合、エッジクライアントに許可されたIP 192.168.100.0/24を配置することは機能しません。

[Interface]
PrivateKey= ....
Address= 192.168.100.200/32

# Central OpenBSD hub
[Peer]
PublicKey = ....
AllowedIPs = 192.168.100.0/24, 8.8.8.8/32

# Another Spoke
[Peer]
PublicKey = ....
AllowedIPs = 192.168.100.10/32

上記の例を使用して、OpenBSDハブを介して192.168.100.10でクライアントに接続できると思いましたが、そうではありません。それはおそらくWireguardがパケットを復号化する前にパケットを破棄するからですtshark -i wg0

つまり、上記の192.168.100.10/32のピアリングを削除すると、トラフィックは私が望む方法で流れます。

助けてくれたJustinにもう一度感謝します。

おすすめ記事