基本的に私が望んでいるのは、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 へのホスト ルートが必要です。
すべての詳細は、ネットワーク設定の詳細によって異なります。