GCP帳號認證服務 谷歌雲伺服器埠轉發教程

谷歌雲GCP / 2026-05-16 17:40:36

前言:端口转发是什麼?為什麼你會需要它?

GCP帳號認證服務 嘿,朋友!是不是有時候你發現你的服務跑在8080端口,但想讓用戶直接訪問80端口?或者想把443端口轉到內部的8443?這時候端口轉發就派上用場了!簡單說,端口轉發就是把外網訪問某個端口的流量,悄悄轉到另一個端口,讓你的服務更安全、更方便。別怕,這其實比你想象中簡單多了!

準備工作:先確認你的谷歌雲環境

GCP帳號認證服務 確認項目與實例

先打開Google Cloud Console,選對你的項目。確認你有個正在運行的實例(VM),並且已經分配了外部IP。如果還沒有,點擊「Compute Engine」->「實例」,創建一個新實例,選好機器類型、區域,勾選「允許HTTP流量」和「允許HTTPS流量」(雖然這只是初步,但先勾上沒錯)。

記得!實例的外部IP一定要是靜態的,不然重啟後IP變了,你的配置就崩了。在實例設置中,點擊「外部IP」旁邊的「變更」,選擇「靜態」,並創建一個新的靜態IP地址。這步很重要,別急著跳過去!

靜態IP地址在Google Cloud是收費的,但每月有免費額度。不過如果你只是測試,可以用動態IP,但記得記錄下每次變化的IP,不然配置會失效。推薦還是用靜態IP,省心。

設定防火牆規則

接下來,得讓外部能訪問到你的端口。在Cloud Console左側選單,點擊「VPC網路」->「防火牆規則」。點擊「建立防火牆規則」,填寫以下內容:

  • 名稱:比如「allow-443-to-8443」
  • 目標:選擇「指定標籤」或「所有實例」,如果是指定標籤,記得給實例加上對應的標籤
  • 來源IP範圍:0.0.0.0/0(表示所有人都能訪問,但生產環境最好限制IP)
  • 協議和埠:TCP:443(如果你要轉發443端口)

點擊「建立」,這樣外部就能訪問443端口了。但這只是第一步,後面還得在實例內部做轉發。

步驟一:在實例內部設置端口轉發(iptables方案)

安裝必要工具

登錄到你的實例(用SSH或者本地終端)。如果是Ubuntu,先更新包:sudo apt update。然後安裝iptables-persistent(用來保存規則):sudo apt install iptables-persistent。如果是CentOS,可能用firewalld或者直接修改iptables文件。

別擔心,這步很簡單,按照提示操作就行。如果提示保存現有規則,選「是」或「否」都可以,因為我們待會會重新設置。

編寫iptables規則

現在,我們要讓443端口的流量轉到8443。輸入以下命令:

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

這條命令的意思是:所有進入443的TCP流量,都轉到8443端口。如果你要轉發其他端口,把443和8443換成你想要的數字就行。

舉個例子,如果你想把80轉到8080,就用:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

小心!別輸錯端口號,不然服務可能崩了。建議先寫在紙上核對一遍,再輸入終端。

另外,如果需要轉發UDP協議,把-p tcp改成-p udp,但大部分Web服務都是TCP,UDP用得較少。不過如果你玩遊戲服務器或者VoIP,可能需要考慮UDP轉發。

如果你已經有其他iptables規則,可以先用sudo iptables -t nat -L -n -v查看現有規則,避免重複添加。

保存規則並測試

設置完規則後,得保存,不然重啟電腦就沒了。Ubuntu系統用:

sudo netfilter-persistent save

如果是CentOS,可能用:

sudo service iptables save

現在測試一下:用本地電腦訪問你的服務,比如https://你的IP:443,應該能正常訪問。如果服務在8443端口運行,這樣就成功了!

如果不行?別慌,先檢查防火牆規則是否開放了443端口,然後檢查iptables規則是否正確。可以用sudo iptables -t nat -L -n -v來查看規則是否生效。

步驟二:用負載均衡器做端口轉發(進階方案)

如果你的服務需要更高級的配置,比如HTTPS、多實例、自動擴展,那用負載均衡器更適合。這部分稍微複雜,但別怕,跟著步驟來。

創建負載均衡器

在Cloud Console,點擊「網路服務」->「負載均衡」,點擊「創建負載均衡器」。選擇「HTTP(S) 負載均衡」,點擊「開始配置」。

在「前端配置」頁面,填寫前端IP和埠。通常選擇「新建IP地址」,創建靜態IP,埠設為443(HTTPS)或80(HTTP)。如果你要同時處理HTTP和HTTPS,可以創建兩個前端:一個80,一個443。

配置前端和後端

接下來,創建後端服務。點擊「後端服務」,點擊「創建後端服務」。在「後端」部分,添加你的實例組(需要先創建實例組,並把實例加進去)。注意:後端服務的埠要設置為你的服務實際運行的埠,比如8443。

然後,配置SSL證書。如果是HTTPS,需要上傳證書和私鑰,或者使用Google管理的證書。這一步需要小心,證書錯誤會導致HTTPS無法連接。

最後,確認所有配置,點擊「創建」。等待幾分鐘,負載均衡器就部署好了。現在訪問你的域名或IP,流量會經過負載均衡器轉發到你的實例上。

常見問題解決

端口不通怎麼辦?

這是新手最常見的問題!分三步檢查:

  1. 防火牆規則是否開放了對應端口?到「VPC網路」->「防火牆規則」確認。
  2. 實例內的服務是否在運行?用telnet localhost 端口號測試,比如telnet localhost 8443。
  3. iptables規則是否正確?用sudo iptables -t nat -L -n -v查看。

如果都沒問題,可能是雲服務商的網絡問題,稍後再試。

防火牆規則設置失敗?

有時候創建防火牆規則時,會提示「資源已被占用」,這通常是因為規則名稱重複了。換個名字再試,比如「allow-http-8080-v2」。另外,確認目標是否正確,比如實例是否被正確標籤。

iptables規則重置了?

這是因為沒有正確保存規則!Ubuntu系統用netfilter-persistent save,CentOS用service iptables save。如果還是重置,可以考慮寫個啟動腳本,在系統啟動時自動加載規則。

實例內UFW防火牆阻擋了?

有些系統(如Ubuntu)預設啟用UFW防火牆。記得在實例內部也要開通對應端口:sudo ufw allow 443/tcp。否則即使iptables轉發了,UFW也可能擋住流量。

總結:選對方法,事半功倍

端口轉發其實沒那麼可怕,只要一步步來。如果是簡單的單實例,用iptables足夠;如果要更穩定、可擴展,負載均衡器是更好的選擇。記住,配置過程一定要細心,尤其是端口號和防火牆規則。遇到問題別慌,慢慢檢查每一步,你一定能搞定!

現在,快去試試看吧!如果還有疑惑,歡迎在評論區留言,一起討論~

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系