基本上我想要的是,我想使用谷歌雲端虛擬機的公共IP來存取我的本地網路伺服器。我本地沒有任何公共IP。
當我把gcloud_public_ip:80在我的瀏覽器網址列中,我想存取本機伺服器的 Web 連接埠而不是雲端虛擬機器的 Web。
我已經成功配置了wireguard。 gcloud 虛擬機器和本機伺服器上的 wg0 介面都已啟動並正在運作。我的本機路由器中沒有連接埠阻塞或 IP 過濾。我還在Google雲端防火牆上開啟了 Web 連接埠 80/443 udp/tcp 入口 + 用於wireguard 隧道的其他一些連接埠。
我讀過,我需要在雲端虛擬機器上使用 iptables 命令將傳入流量從互聯網重定向到本地伺服器的 Web 連接埠 80/443,該連接埠位於wireguard 隧道的另一側。我對此不太熟悉,但據我所知,我需要發出兩個命令;一種用於 PREROUTING,一種用於 POSTROUTING。
這些是我發出的命令,但它們不起作用,或者至少我認為我仍然缺少一些東西。
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 映射到它。
10.0.3.2是本機伺服器端隧道ip。
10.140.0.2 是 ens4 的 ip,它有公共 ip 映射到它。
答案1
您已在 VPS 伺服器上設定了規則,以便它可以正確處理來自/到您的網路伺服器的流量。
但是,您需要在網頁伺服器上設定規則,透過 Wireguard 隧道轉送所有流量。
您需要透過 Web 伺服器上的 Wireguard 隧道設定預設路由。需要有一個透過您正在使用的實際網際網路連接到 VPS 的主機路由。
所有詳細資訊都取決於您的網路設定的詳細資訊。