192.168.x.x是什麼?
DHCP、Subnet、Gateway與NAT
ESP32顯示「Wi-Fi connected,IP=192.168.1.119」之後,這串數字代表什麼?它如何知道誰在同一個網路、誰必須交給Gateway,又如何透過NAT走向Internet?
192.168.1.119不是Internet上的地址嗎?
當ESP32、手機或電腦連上家中、學校或展場Wi-Fi後,常會得到192.168.x.x。它是區域網路中的「私有IPv4位址」,可以在內部重複使用,但不會直接在全球Internet上被路由。
192.168.1.119只說明ESP32在目前LAN中的位置;要前往Django網站,仍需知道Subnet、Gateway、DNS,並由Router執行NAT。學習目標
區分私有IP、公網IP、Network Address、Host Address與Broadcast。
使用Subnet Mask判斷目的地在同一LAN,還是必須交給Gateway。
說明DHCP給了什麼,以及NAT/PAT如何讓多台裝置共用一個公網IP。
先看一個智慧場域網路
在這個例子中,三台終端裝置都位於192.168.1.0/24。它們彼此通訊時留在LAN內;要連Django、DNS或其他外部服務時,則把封包交給192.168.1.1。
一、192.168.x.x是私有IPv4位址
IPv4位址由32個bit組成,通常用四個0~255的十進位數字表示。IANA保留三段IPv4範圍供私有網路使用:
| 私有範圍 | CIDR | 常見場景 |
|---|---|---|
10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/8 | 大型組織、雲端VPC、校園網路 |
172.16.0.0 ~ 172.31.255.255 | 172.16.0.0/12 | 企業、容器與內部服務 |
192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 | 家庭、教室、小型場域與IoT |
私有IP
只在內部網路使用,可由不同家庭或場域重複使用。例如很多人的Router都可能是192.168.1.1。
公網IP
在Internet上具有全球可路由性,通常由ISP提供給Router或雲端伺服器。
二、DHCP:自動發放網路設定
ESP32加入Wi-Fi後,通常不必手動輸入IP。DHCP Server(多半位於Router)透過DORA流程協助裝置取得租約。
DHCP不只給IP
| DHCP提供 | 範例 | 功能 |
|---|---|---|
| IP Address | 192.168.1.119 | ESP32在目前LAN中的位址 |
| Subnet Mask | 255.255.255.0 | 分辨Network與Host部分 |
| Default Gateway | 192.168.1.1 | 通往其他網路的預設出口 |
| DNS Server | 192.168.1.1或外部DNS | 把Domain解析成IP |
| Lease Time | 例如24小時 | 這組設定可使用多久 |
#include <WiFi.h>
void printNetworkInfo() {
Serial.println("===== NETWORK INFO =====");
Serial.print("IP : "); Serial.println(WiFi.localIP());
Serial.print("MASK : "); Serial.println(WiFi.subnetMask());
Serial.print("GATEWAY : "); Serial.println(WiFi.gatewayIP());
Serial.print("DNS : "); Serial.println(WiFi.dnsIP());
Serial.print("RSSI : "); Serial.println(WiFi.RSSI());
}
三、Subnet:誰和我在同一個網路?
IPv4位址同時包含「Network部分」與「Host部分」。Subnet Mask用1標示Network bit,用0標示Host bit。最常見的:
| 項目 | 192.168.1.119/24的結果 | 用途 |
|---|---|---|
| Network Address | 192.168.1.0 | 代表整個Subnet,不分配給一般Host |
| 可用Host範圍 | 192.168.1.1 ~ 192.168.1.254 | Router、ESP32、手機與電腦可使用 |
| Broadcast Address | 192.168.1.255 | 傳送給該Subnet內的所有Host |
| 總位址數 | 256 | 2^(32-24) |
| 一般可用Host數 | 254 | 扣除Network與Broadcast |
用AND運算找Network Address
設備會把自己的IP或目的IP與Subnet Mask做bitwise AND:
IP: 192.168.1.119 Mask: 255.255.255.0 AND: 192.168.1.0 ← Network Address
若ESP32與目的設備計算出的Network Address相同,就在同一個Subnet;不同則交給Gateway。
| ESP32 | 目的位址 | /24判斷 | 下一步 |
|---|---|---|---|
192.168.1.119 | 192.168.1.50 | 同為192.168.1.0 | 留在LAN,先用ARP找目的MAC |
192.168.1.119 | 192.168.2.50 | Network不同 | 交給Default Gateway |
192.168.1.119 | Django公網IP | Network不同 | 交給Default Gateway |
四、Gateway:通往其他網路的出口
Default Gateway通常是Router的LAN位址,例如192.168.1.1。ESP32要連Django時,IP Packet的目的IP仍是Django Server;但目前這一跳的Wi-Fi/Ethernet Frame會先送到Gateway的MAC。
ARP在這裡做什麼?
ESP32知道Gateway的IP,卻還不知道它在目前LAN中的MAC,因此發出ARP Request詢問:「誰是192.168.1.1?」Router回覆MAC後,ESP32才能建立這一跳的Frame。
五、NAT/PAT:讓私有IP走向Internet
私有IP不能直接在Internet上被路由。Router執行Source NAT,並常搭配Port Address Translation,讓多台內部裝置共用一個公網IP。
上例的203.0.113.20是文件示意用公網IP。Router建立一張暫時對照表,讓Django回應到達後,可以交回正確的ESP32或手機。
| 位置 | 來源 | 目的 |
|---|---|---|
| ESP32送往Router前 | 192.168.1.119:49152 | Django-IP:443 |
| Router送往Internet後 | Public-IP:62001 | Django-IP:443 |
| Django回應 | Django-IP:443 | Public-IP:62001 |
| Router交回LAN | Django-IP:443 | 192.168.1.119:49152 |
NAT不等於Port Forwarding
一般出站NAT讓內部設備主動連出去;Port Forwarding則把外部進站連線轉交給指定內部設備,風險與用途不同。
NAT不等於防火牆
NAT改寫位址;防火牆依規則允許或阻擋流量。兩者常在同一台Router上,但功能不同。
六、DHCP與固定IP如何選?
| 方式 | 優點 | 風險/注意 | 適合情境 |
|---|---|---|---|
| 一般DHCP | 設定簡單、自動避免多數衝突 | 租約更新後IP可能改變 | 手機、筆電、一般ESP32 Client |
| DHCP Reservation | 由Router依MAC固定發同一IP | 需管理MAC與Router設定 | 場域Gateway、Dashboard、Home Assistant |
| 裝置手動Static IP | 不依賴DHCP租約 | 容易設定錯Mask/Gateway/DNS或造成IP衝突 | 封閉、受管理且有完整清冊的網路 |
七、常見錯誤與分層診斷
| 現象 | 可能原因 | 取得證據 |
|---|---|---|
IP顯示0.0.0.0 | 尚未連線、DHCP失敗或狀態讀取太早 | WiFi.status、連線時間、DHCP Server |
IP是169.254.x.x | 未取得正常DHCP租約,設備使用Link-local | Router DHCP服務、租約數量與網路阻擋 |
| 同LAN裝置無法互通 | Mask錯誤、AP Isolation、防火牆或IP衝突 | IP/Mask比較、ARP、Router無線隔離設定 |
| 能連Gateway,不能用Domain | DNS設定或解析失敗 | DNS IP、Domain解析結果 |
| 能解析Domain但無法連Django | Internet、Routing、Port、TLS或Server問題 | 目的IP、TCP連線、TLS錯誤與HTTP狀態 |
| 偶爾換一個IP後系統失效 | 程式依賴動態IP或租約改變 | DHCP Lease、Router紀錄、是否應用Reservation |
| 兩台設備時好時壞 | IP衝突 | 裝置清冊、ARP表、Router租約與MAC |
八、場域網路規劃範例
水井三寶展覽、智慧養殖或慢食平台若逐步增加設備,建議先建立網路與裝置清冊。
| 類型 | 建議位址方式 | 範例 | 管理重點 |
|---|---|---|---|
| Router/Gateway | 固定 | 192.168.10.1 | 管理密碼、韌體、防火牆、備份 |
| 本地Server/Home Assistant | DHCP Reservation | 192.168.10.10 | 服務Port、備份、健康檢查 |
| ESP32感測節點 | DHCP | 192.168.10.101~150 | Device ID、MAC、場域位置、韌體版本 |
| 管理者手機/筆電 | DHCP | 192.168.10.51~100 | 帳號、權限與訪客網路分離 |
| 訪客 | 獨立Guest Network | 192.168.20.0/24 | 禁止直接存取IoT與管理設備 |
三項學生任務
記錄電腦或ESP32的IP、Mask、Gateway、DNS,計算Network、Broadcast與可用Host範圍。
讓AI協助判斷哪些位於同Subnet,再由學生用AND運算驗證並修正AI解釋。
教師設定錯誤Mask、錯誤Gateway、錯誤DNS或重複IP,學生依證據定位並完成修復報告。
學習檢核
| 問題 | 應回答的核心 |
|---|---|
為什麼不同家庭都能使用192.168.1.1? | 它是私有IP,只在各自LAN內有意義,可重複使用。 |
| DHCP只負責分配IP嗎? | 還提供Mask、Gateway、DNS、Lease等設定。 |
192.168.1.119/24的Network與Broadcast是什麼? | 192.168.1.0與192.168.1.255。 |
| 為什麼連Django要交給Gateway? | Django的目的IP不在本機Subnet。 |
| NAT改變什麼? | 出站封包的私有來源IP/Port被轉成公網IP/Port,並建立回程對照。 |
| NAT是否等於防火牆? | 不是;NAT做位址轉換,防火牆依安全規則管控流量。 |
192.168.x.x,是智慧場域走向Internet的起點
DHCP讓裝置取得設定;Subnet決定目的地是否在同一個LAN;Gateway提供通往其他網路的出口;NAT/PAT則把私有位址轉換成可在Internet上回應的連線。
看懂IP,不是記住四個數字,而是能判斷「我是誰、誰和我同網、下一跳要交給誰、如何走到雲端」。
203.0.113.20屬文件示意用途,不代表實際服務位址。
沒有留言:
張貼留言