私のデバイスは、TailscaleネットワークのVPSにルーティングされるTailscaleネットワークを持つ設定を実装しようとしています。出口ノードただし、出口ノードは ProtonVPN ラインマントンネルを介して関連トラフィックを転送できます。これに対する主な動機は、私のAndroidクライアントが一度に1つの「常時接続」VPN接続しか持てないことです。これを行うには、次の中から選択する必要があります。誰でもTailscaleまたはProtonVPNに接続します。
同時に、出口ノードで「終了」するトラフィック(たとえば、VPSのTailscale IPへのSSH接続)がアップストリームVPNに転送されないようにしたいと思います。 Tailscaleに慣れていない人のためにtailscale0
Tailscaleと呼ばれるツールを提供します。100.64.0.0/10 デバイス範囲。さらに、VPSホストにはHTTP / HTTPSを介してパブリックインターネットにWebサービスを公開する複数のDockerコンテナがあり、これらのサービスに引き続きアクセスできるようにしたいです。
次の図は、必要な設定(およびVPSのネットワークインターフェイス)をまとめたものです。
net.ipv4.ip_forward = 1
VPS出口ノードでIP転送を設定して有効にしましたnet.ipv6.conf.all.forwarding = 1
。私はufwが有効なUbuntu 22.04を実行しており、ポート80、443、およびSSHを許可しています。
ProtonVPNが提供するワイヤガードの構成は次のとおりです。
[Interface]
PrivateKey = <REDACTED>
Address = 10.2.0.2/32
DNS = 10.2.0.1
[Peer]
PublicKey = <REDACTED>
AllowedIPs = 0.0.0.0/0
Endpoint = <PROTON VPN SERVER>:51820
この設定を設定しましたが、/etc/wireguard/wgpvpn0.conf
実行するとwg-quick up wgpvpn0
VPSにSSHで接続できなくなり(パブリックインターネットインターフェイスまたはTailscaleインターフェイスを介して)、パブリックインターフェイスを介して公開されたポート80/443でホストされているすべてのサービスにアクセスできなくなります。私はこれがすべてのトラフィックのデフォルトゲートウェイになるインターフェイスのAllowedIPs = 0.0.0.0/0
ためだと思います。wgpvpn0
解決策はファイアウォール/ルーティングルールを追加するためにwireguard設定を使用することだと思いますPreUp/PostDown
が、iptablesに慣れていないので、何を追加するのかわかりません。私に必要なルールは次のとおりです。
- 次の特性を持つすべてのトラフィック最終目的地100.64.0.0/10 の範囲のネットワークは、Tailscale ネットワークインターフェイスで管理する必要があります。
- 何でも最終目的地Tailscale出口ノードIP情報は出口ノードで処理する必要があります。私は上記のルールがTailscaleインターフェイスを介してこれを処理すると思います。
- 次の特性を持つすべてのトラフィック最終目的地VPSのパブリックIPに関する情報は、VPSによって処理されなければなりません(たとえば、インターフェイスを介して受信され、
ens3
私のVPSで実行されるリバースプロキシによって処理されます)。 - 私のTailscaleネットワーク(Tailscaleインターフェイスによって受信されることを意味します)からVPS出口ノードに転送されるすべてのトラフィックは次のとおりです。最終目的地パブリックインターネット上のネットワークはProtonVPN Linemanインターフェイスを介してルーティングする必要があります。そのため、反対方向の反応が流れなければなりません。 (たとえば、Tailscaleネットワーク経由でgoogle.comのAndroidクライアントにログインするリクエスト - > tailscaleネットワークのVPS - > VPSのProtonVPNトンネル - >インターネット経由でGoogleサーバーにログインする応答 - > VPSのProtonVPNトンネル - > tailscaleネットワークVPSをオンにする-> Android Tailscaleネットワークのクライアント)
- VPSのすべてのトラフィックはProtonVPNトンネル(現在0.0.0.0 / 0が使用されている)を使用する必要があります。
誰でも助けることができますか?