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