特定のネットワーク インターフェイスを介してリモート ピアに接続するように Wireguard インターフェイスを構成するにはどうすればよいですか?

特定のネットワーク インターフェイスを介してリモート ピアに接続するように Wireguard インターフェイスを構成するにはどうすればよいですか?

2つのサーバーがあり、1つgatewayはインターネットに公開されており、appserverもう1つはNAT/ファイアウォールの背後に隠されているとします。また、この2つのサーバーにはそれぞれ完全に独立したインターネット アップリンクに接続されたインターフェイス (下の図を参照)。

どちらかのサーバーに障害が発生した場合でもサーバーの接続を維持することを目的として、2 つのサーバー間に 2 つの独立した Wireguard トンネルを設定したいと考えています。

                   |     Internet     |        
[ gateway ]        |                  |        [appserver]
                   |                  | 
   (wg0) <-----> (ens1) < - - - - > (ens1) <----> (wg0)
                   |                  | 
                   |                  | 
                   |                  |        
   (wg1) <-----> (ens2) < - - - - > (ens2) <----> (wg1)
                   |                  | 
                   |                  | 

デフォルトでは、Wireguard はすべてのトラフィックをシステムのデフォルト ゲートウェイ経由でルーティングするようです。そのため、appserverに接続しようとするとgateway、次の 2 つのインターフェイスのうち 1 つだけが使用されます。

                   |     Internet     |        
[ gateway ]        |                  |        [appserver]
                   |                  | 
   (wg0) <--+--> (ens1) < - - - - > (ens1) <--+--> (wg0)
            |      |                  |       |
            |      |                  |       |
            |      |                  |       | 
   (wg1) <--+    (ens2)      X      (ens2)    +--> (wg1)
                   |                  | 
                   |                  |

一部のネットワーク ツールでは、ネットワーク トラフィックの送信時に使用する特定のネットワーク インターフェイスを設定できますが、Wireguard でも同じことができますか? つまり、デフォルトのルート メトリックのみens1、またはens2それに関係なくトラフィックを送信できますか? そうでない場合、代わりに Linux のネットワーク システムを設定してこれを行うにはどうすればよいですか?

答え1

Wireguard 自体を特定のインターフェース経由で接続する方法が見つからなかったため、最終的には、のルーティング テーブルens2に新しいルートを追加して、宛てのトラフィックを単純にルーティングすることに決めました。appserver

ip route add $GATEWAY_ESN2_ADDR/32 via $APPSERVER_ESN2_ADDR_GW metric 50

APPSERVER_ESN2_ADDR_GWappserverはゲートウェイ ルーターのアドレスです。

FwMarkこれについて調査しているときに、Wireguard では、の下のフィールドを設定することで、特定の Wireguard インターフェースに属する送信トラフィックに fwmark を設定できることに気付きました[Interface]。この記事の執筆時点 (2021-09) では、Wireguard はピアごとにこのマークを設定することをサポートしていません。

*誰かが適切な解決策を発見した場合に備えて、この質問は開いたままにしておきます。

関連情報