Wireguardに特定のポートを無視させる方法

Wireguardに特定のポートを無視させる方法

私のルーターは、ファイルサーバーを実行しているコンピュータにポート80を転送するように設定されていますcaddy。 LANはファイルサーバーを正常にカリングできますが、WANでカールするとタイムアウトが発生します。実行中のマシンは外部VPNへの接続を介してもcaddy実行されます。接続を閉じると、WANはファイルサーバーをカリングできます。wireguardNetworkManagerwireguard

この回答AllowedIps=0.0.0.0,::0/0外部VPNを介してすべてのトラフィックをルーティングするとします。すべてをルーティングするためにWireguardをどのように設定しますか?しかし、VPN経由のポート80および443トラフィック?

答え1

Wireguardはデフォルトのルーティングテーブルに加えて別のルーティングテーブルを使用するため、これを使用してip rule特定の種類のトラフィックを除外できます。 Wireguardは、トラフィックがローカルにリダイレクトされた後にプライマリサイトに入る前にトラフィックを一致させるルールを追加します。

これにより、Wireguardルールの前にルールを追加してトラフィックをリダイレクトできます。~からポート80と443(サーバーからの応答)をプライマリテーブルに接続します。次のように簡単にする必要があります。

ip rule add sport 80 table main
ip rule add sport 443 table main

次のコマンドを使用して、ルールがwireguardルールの前に配置されていることを確認できます。

ip rule

ただし、これを永久に作成するには、設定ファイルにPostUpジョブを追加する必要があります。

PostUp=ip rule add sport 80 table main && ip rule add sport 443 table main
PreDown=ip rule del sport 80 table main && ip rule del sport 443 table main

NetworkManagerのみを使用している場合は、dispatcher.dを使用して、ネットワークが接続されているか切断されたときに実行されるスクリプトを配置できます。

#!/bin/bash
echo 'ip rule del sport 80 table custom
ip rule del sport 443 table custom
ip rule add sport 80 table custom
ip rule add sport 443 table custom' > /etc/NetworkManager/dispatcher.d/02-wg_exceptions.sh
chmod +x /etc/NetworkManager/dispatcher.d/02-wg_exceptions.sh

答え2

ポート 80 および 443 を除くすべてのポートをルーティングするように Wireguard を設定することはできません。これは、OSI ネットワークモデルの観点からは、ポートと IP トラフィックが異なる層にあるためです。

しかし、この質問には2つの(おそらくより多くの)答えがあります。最初の答えは、Wireguardトンネルを通る経路を制限することです。 Wireguard経由でトンネリングしますAllowedIps

2番目の答えはもう少し高度ですが、source NAT着信WAN IPアドレスをルーターのIPにマスクする答えをルーターで構成できます。これは、ファイルサーバーがWANトラフィックがルータから来ると考え、ルータに応答を送信し、ルータがそれをWANに送信することを意味します。

関連情報