インターネットからローカル サーバーにアクセスするための媒体としてクラウド上の Wireguard サーバーを使用しますか?

インターネットからローカル サーバーにアクセスするための媒体としてクラウド上の Wireguard サーバーを使用しますか?

基本的に私が望んでいるのは、Google Cloud VM のパブリック IP を使用してローカル Web サーバーにアクセスすることです。ローカル側にはパブリック IP がありません。

私がgcloud_パブリックIP:80ブラウザの URL バーで、クラウド VM の Web ではなく、ローカル サーバーの Web ポートにアクセスしたいと考えています。

Wireguard を正常に構成しました。gcloud vm とローカル サーバーの両方の wg0 インターフェースが稼働しています。ローカル ルーターにはポート ブロックや IP フィルタリングはありません。また、Google Cloud ファイアウォールで Web ポート 80/443 udp/tcp イングレスと Wireguard トンネル用のその他のポートも開きました。

インターネットからの着信トラフィックを、Wireguard トンネルの反対側にあるローカル サーバーの Web ポート 80/443 にリダイレクトするには、クラウド VM で iptables コマンドを使用する必要があると読みました。私はそれについてあまり詳しくありませんが、私が知る限りでは、 PREROUTING 用と POSTROUTING 用の 2 つのコマンドを発行する必要があります。

これらは私が発行したコマンドですが、機能していません。少なくとも、まだ何かが足りないと思います。

sudo iptables -t nat -A PREROUTING -i ens4 -p tcp --dports 80,443 -j DNAT --to-destination 10.0.3.2
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.0.3.2 --dports 80,443 -j SNAT --to-source 10.140.0.2
  • ens4 は、パブリック IP がマップされている Google Cloud VM の内部インターフェースです。

  • 10.0.3.2 はローカル サーバー側のトンネル IP です。

  • 10.140.0.2 は、パブリック IP がマッピングされている ens4 の IP です。

答え1

VPS サーバーでルールを設定して、Web サーバーとの間のトラフィックを適切に処理できるようにします。

ただし、すべてのトラフィックを Wireguard トンネル経由で転送するルールを Web サーバー上で設定する必要があります。

ウェブサーバー上の Wireguard トンネル経由でデフォルト ルートを設定する必要があります。使用している実際のインターネット接続経由で VPS へのホスト ルートが必要です。

すべての詳細は、ネットワーク設定の詳細によって異なります。

関連情報