新手必看!自架服務之前,你需要知道的那些事
你也試過把
127.0.0.1:8080分享給朋友嗎? 為什麼明明查到自己的IP了朋友還是訪問不到我寫的網站呢?
在我第一次嘗試寫出網頁的時候,很興奮地把 127.0.0.1:8080 貼給朋友們試玩,結果卻發現他們都連不上。這個經驗帶我進入了網際網路的世界,讓我認識到要讓別人連到自己架設的服務,其實沒有想像中簡單。
認識IP位址:網路世界的門牌號碼
在開始談論複雜的網路概念之前,我們先來認識IP位址。想像IP就像是網路世界的門牌號碼,每台連上網路的設備都需要一個IP位址,這樣其他設備才能找到它。
IP位址分為兩種:
公有IP (Public IP)
- 可以被全世界存取的IP
- 例如:Google的DNS服務器(8.8.8.8)
- 每個IP都是獨一無二的
私有IP (Private IP)
- 只能在內部網路使用的IP
- 例如:192.168.1.2(你家的電腦)
- 不同的內部網路可以使用相同的IP
就像一棟大樓,公有IP就像是大樓的門牌號碼(台北市信義區信義路五段7號),而私有IP就像是大樓內的房號(8樓A室)。不同大樓可以有相同的房號,但不能有相同的門牌號碼。
為什麼需要私有IP?
看完上面提到的公有IP和私有IP之後你可能會想:「既然公有IP可以被全世界存取,那為什麼不乾脆讓每個設備都使用公有IP就好了?」
這是因為IP位址的數量限制。目前最常用的IPv4位址系統,總共只能提供約42億個不同的IP位址。聽起來很多?但想想看:
- 全球已有超過100億台連網設備
- 每個人平均擁有2-3個連網設備(手機、電腦、平板…)
- 未來連網設備只會更多
如果每個設備都要用公有IP,早就不夠用了!這就是為什麼我們需要私有IP:它允許不同的內部網路重複使用相同的IP範圍。就像每棟大樓都可以有自己的1樓、2樓、3樓,不會互相衝突。
那動態IP又是怎麼回事?
了解了IP位址不夠用的問題,我們就能理解為什麼會有動態IP了。
想像網路公司(ISP)就像一家租車公司:
- 租車公司有100輛車,但有1000個客戶
- 不是每個客戶都會同時租車
- 所以租車公司可以靈活調配這100輛車給有需要的客戶
同樣地:
- ISP擁有一定數量的公有IP
- 但客戶數量比IP還多
- 不是每個客戶都會同時上網
這就是為什麼家用網路通常是動態IP:
- ISP不需要準備太多公有IP
- 可以彈性分配IP給正在使用的用戶
- 對一般使用者來說影響不大
但這也帶來了一個問題:如果你想要架設網站或服務,讓別人連進來,就會遇到困難,因為:
你的IP位址會不定時改變
別人無法知道你最新的IP是多少
這就是為什麼自架服務會遇到困難的第一個原因。
接下來,我們還會談到另一個重要的概念:NAT(網路位址轉換)。
NAT 又是什麼?
NAT:私有IP與公有IP之間的轉換器
前面我們提到了私有IP的概念,讓我們可以在內部網路重複使用相同的IP範圍(例如192.168.0.x)。但這樣帶來一個新問題:這些使用私有IP的設備要怎麼連上網際網路?
這就是NAT(Network Address Translation,網路位址轉換)的用途。
NAT的運作就像一個轉接器:
當內網設備(使用私有IP)要連上網際網路時
NAT會把這個私有IP轉換成公有IP
讓設備可以正常連上網際網路
這樣的設計帶來一個重要的特性:單向性
內網設備可以正常連到外網
但外網無法直接連到內網設備
這對自架服務有什麼影響?
當你在家裡的電腦上架設了一個網站:
你的電腦使用私有IP(例如192.168.1.2)
你的路由器有一個公有IP(例如1.2.3.4)
當朋友想要連到你的網站時:
他們知道你的公有IP(1.2.3.4)
但NAT不知道要把連線轉發給哪台內網設備
結果就是:連不上你的網站
並且你的公有IP 還是動態的! 可能三天兩頭就換一個
這就是要自架服務會遇到的第二個問題。
三種不同情境的解決方案
這邊先簡單介紹三個針對這兩個問題的解決方案,在下一篇文章中會分別針對這三種該如何實作做詳細的介紹!
| 解決方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| Ngrok | - 快速設置 - 自動配置 SSL |
- 免費版有限制 - 連線不穩定 - URL 較長且隨機 |
- 臨時展示作品 - 開發測試階段 - 短期使用 |
| Cloudflare Tunnel | - 完全免費 - 自帶 HTTPS - 設定簡單 - 穩定可靠 |
- 需要 Cloudflare 帳號 - 域名需轉入 Cloudflare |
- 長期穩定運作 - 要求安全性高 - 不想處理複雜設定 |
| DDNS + NAT | - 完全控制 - 學習價值高 - 無需依賴第三方 |
- 設定較複雜 - 需要路由器支援 - 需要自行維護 |
- 想深入學習網路 - 需要完全控制 - 自架 DNS 服務 |
💡 Hint:如果想要長期穩定運作的服務,建議使用 Cloudflare Tunnel 方案。
結語
相信讀到這裡,你已經了解為什麼在家中架設服務會遇到連線問題了。這些問題聽起來很複雜,但別擔心!每個架設過網路服務的人都曾經遇到過這些挑戰:
- 因為動態IP而煩惱服務位置一直改變
- 被NAT擋住而讓外部連不進來
- 嘗試了很多次卻總是失敗
但正是這些問題讓我們更了解網路的運作原理。就像學習任何新技術一樣,一開始總會遇到障礙,但克服這些障礙的過程正是最寶貴的學習機會。
在下一篇文章中,我們會介紹具體的解決方案,一步一步學習如何自架穩定的對外服務。無論你是想要架設個人網站、分享自己的作品,還是純粹想要學習網路技術,這些網路知識都會是很好的基礎。