大多數人是在買下 NAT 方案大約十分鐘後,才明白 NAT 到底意味著什麼。Nginx 啟動了,curl localhost 能返回頁面,可筆電上的瀏覽器一直在轉圈。其實什麼都沒壞。只是這台伺服器沒有屬於自己的公用 IPv4,唯一的入口是一個為 SSH 轉發的埠。
這一扇門能撐起的工作量多得出人意料,但對某些非常常見的需求來說又遠遠不夠。如果您還在兩類方案之間猶豫,我們之前的文章 獨立 IP 還是 NAT VPS 會問一個能直接定下來的問題。這篇講的是選定之後怎麼過日子:NAT 伺服器實際能做什麼,在哪裡會撞牆,以及不夠用時怎麼走出來。
您實際拿到的是什麼
NAT 伺服器在我們的閘道後面使用私有位址。控制面板會顯示主機和一個專屬埠,連線方式如下:
ssh -p 20123 root@host
這個埠對映到伺服器內部的 22 埠。IPv4 上其他所有對內埠從外部都是關閉的,也沒有辦法再多轉發幾個。對外則完全是另一回事:伺服器可以存取網際網路上的任何地方,只有 SMTP 的 25 和 465 埠例外,這兩個埠在所有方案上都關閉,不管是不是 NAT。完整規則見 網路與埠。
還有一個對部分人很重要的細節:對外位址不是您自己的。流量從一個您無法控制的位址出去,所以您沒法為它設定反向 DNS,也沒法在上面積累發件人信譽。
一個埠背後能跑得很好的東西
凡是自己主動發起連線的東西都可以。這一類比聽起來要廣得多:
- 輪詢型機器人。用長輪詢的 Telegram 機器人、走 gateway 連線的 Discord 機器人、呼叫交易所 API 的交易機器人,全都是對外連線。
- AI 代理。一個呼叫模型 API、瀏覽網頁、寫檔案、執行程式碼的代理,不需要任何人來呼叫它。它需要的是 CPU、記憶體和一條向外的連線。
- 背景任務和爬蟲。從佇列取任務、抓取網頁、按計畫同步資料的程式都屬於這一類。
- 建置機和 Runner。CI Runner 通常會自己向伺服器註冊並拉取任務,所以在 NAT 上執行得很舒服。
對這類負載來說,最便宜的方案說實話就夠了。Nano 每月 3 美元,2 vCPU、1 GB 記憶體、15 GB 磁碟;Small 每月 8 美元,4 vCPU、4 GB 和 35 GB。完整列表在 NAT 方案專頁。
一個埠不夠用的地方
牆就是:凡是需要別人先發起連線的場景。
網站是最明顯的例子。瀏覽器連線 443 埠(以及用於跳轉的 80 埠),而在 NAT 方案上,從外部看這些埠根本不存在。換成非標準埠也不行,至少訪客不會買帳。
帶 HTTPS 的自有網域會兩次撞上同一堵牆。您可以把 DNS 記錄指向閘道的位址,但除了您的 SSH 埠,到達那裡的任何流量都不會轉發到您的伺服器。而取得免費憑證的常規方式,正是在 80 或 443 埠上驗證您的伺服器。
Webhook 會悄無聲息地失敗。支付通知、推送更新的機器人平台、宣佈新提交的 Git 伺服器,都需要能連到您。一個用長輪詢跑得好好的機器人,在您切換成 Webhook 的那一刻就會停止工作。
VPN 端點、遊戲伺服器和郵件伺服器天生就需要對內埠。所有您想讓同事在瀏覽器裡開啟的東西也一樣。
變通辦法,實話實說
IPv6。新的 Linux 伺服器會分到公用 IPv6 位址,在 NAT 方案上它可以直接到達伺服器的任何埠。如果您服務的所有用戶端都是您自己的(您的筆電、其他伺服器、支援 IPv6 的監控探針),效果很好。對公開網站就不行了:仍有一部分訪客所在的網路沒有 IPv6,他們永遠打不開這個頁面。Windows 方案目前只有 IPv4。
通道。您可以執行一個小代理,讓它保持一條到別處中繼的對外連線,再由中繼把公用流量沿通道轉回來。這能用,做演示或內部面板也算合理。但對重要的服務來說,您在每個請求中間都塞進了一個第三方,外加一個可能在凌晨三點出故障的環節。
給自己用的 SSH 通道。如果管理面板只有您一個人需要,那就乾脆別把它暴露出去。透過您已有的 SSH 埠轉發即可:
ssh -p 20123 -L 8080:localhost:8080 root@host
然後在自己電腦上開啟 http://localhost:8080。這是 NAT 伺服器上最被低估的技巧,而且無論如何都比把面板放到公用上更安全。
我的真實看法:IPv6 和 SSH 通道都是好工具。但如果一個長期對外的服務只是因為伺服器沒有 IPv4 才走通道,通常說明 NAT 已經不夠您用了。
不重灌,換成獨立 IPv4
什麼都不用重建。在控制面板裡開啟伺服器,選擇「更換方案」,再選一個同等或更大規格的獨立 IP 方案。伺服器會重新啟動一次,回來時就有了自己的公用 IPv4,磁碟和您裝過的一切都還在。80、443 以及您在防火牆裡開放的埠都能從外部存取,SSH 也會改回常規的 22 埠。詳情見 更換方案。
點下去之前,有幾件事值得知道:
- 您需要從餘額中按比例支付目前週期剩餘時間的差價。Nano-IP 每月 8 美元,Nano 是 3 美元;Small-IP 每月 16 美元,Small 是 8 美元。
- 伺服器所在地點需要有空閒位址。如果暫時沒有,控制面板會在扣費之前告訴您。
- 如果您在伺服器裡手動改過網路設定,重新啟動後請檢查一下。使用標準映像時會自動生效。
- 先做一次備份。雖然只是重新啟動一次,但資料畢竟是您的。
NAT 不合適的地方,以及 IPv4 也不合適的地方
對所有公開服務、所有需要接收 Webhook 的東西、所有需要一個固定位址讓別人加入白名單的場景,NAT 都是錯誤的選擇。別花好幾天去繞開它。Nano 和 Nano-IP 的差價每月只有 5 美元。
但獨立 IPv4 也不是魔法。它不會讓一個遮蔽資料中心位址的網站放您進去,也救不了被限速的爬蟲,因為這些判斷依據的是您所在的網路,而不是還有誰用過這個位址。如果您的整個專案只是幾個機器人加一個代理,買一個永遠不會有人連進來的 IPv4 純屬浪費錢。
如果您本來就打算換到更大的設定,不停機遷移 VPS 講了操作順序,如何看懂 VPS 規格 能幫您比較方案。
評論
目前還沒有評論。歡迎成為第一位。