2026年8月22日 星期六

192.168.x.x是什麼? DHCP、Subnet、Gateway與NAT

封包旅行記 EP02|區域網路配置

192.168.x.x是什麼?
DHCP、Subnet、Gateway與NAT

ESP32顯示「Wi-Fi connected,IP=192.168.1.119」之後,這串數字代表什麼?它如何知道誰在同一個網路、誰必須交給Gateway,又如何透過NAT走向Internet?

Private IPDHCPSubnetGatewayARPNAT/PAT

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。

先看一個智慧場域網路

ESP32-A192.168.1.119
ESP32-B192.168.1.120
手機192.168.1.50
RouterLAN:192.168.1.1
InternetDjango Cloud

在這個例子中,三台終端裝置都位於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.25510.0.0.0/8大型組織、雲端VPC、校園網路
172.16.0.0 ~ 172.31.255.255172.16.0.0/12企業、容器與內部服務
192.168.0.0 ~ 192.168.255.255192.168.0.0/16家庭、教室、小型場域與IoT

私有IP

只在內部網路使用,可由不同家庭或場域重複使用。例如很多人的Router都可能是192.168.1.1

公網IP

在Internet上具有全球可路由性,通常由ISP提供給Router或雲端伺服器。

私有IP不等於安全。即使裝置不能直接從Internet被路由,區域網路內仍可能有未授權存取;Router設定、Wi-Fi密碼、服務驗證、防火牆與更新仍然必要。

二、DHCP:自動發放網路設定

ESP32加入Wi-Fi後,通常不必手動輸入IP。DHCP Server(多半位於Router)透過DORA流程協助裝置取得租約。

Discover有人可以給我IP嗎?
Offer可以使用這組設定
Request我要接受這個租約
Acknowledge租約成立

DHCP不只給IP

DHCP提供範例功能
IP Address192.168.1.119ESP32在目前LAN中的位址
Subnet Mask255.255.255.0分辨Network與Host部分
Default Gateway192.168.1.1通往其他網路的預設出口
DNS Server192.168.1.1或外部DNS把Domain解析成IP
Lease Time例如24小時這組設定可使用多久
ESP32輸出網路設定
#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());
}
教學建議:每一篇ESP32連網文章都應固定輸出IP、Mask、Gateway、DNS與RSSI。這五項資訊是分層診斷的起點。

三、Subnet:誰和我在同一個網路?

IPv4位址同時包含「Network部分」與「Host部分」。Subnet Mask用1標示Network bit,用0標示Host bit。最常見的:

255.255.255.0 = /24 = 前24個bit是Network,後8個bit是Host
Network:192.168.1
Host:119
項目192.168.1.119/24的結果用途
Network Address192.168.1.0代表整個Subnet,不分配給一般Host
可用Host範圍192.168.1.1 ~ 192.168.1.254Router、ESP32、手機與電腦可使用
Broadcast Address192.168.1.255傳送給該Subnet內的所有Host
總位址數2562^(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.119192.168.1.50同為192.168.1.0留在LAN,先用ARP找目的MAC
192.168.1.119192.168.2.50Network不同交給Default Gateway
192.168.1.119Django公網IPNetwork不同交給Default Gateway

四、Gateway:通往其他網路的出口

取得目的IP套用Subnet Mask比較Network同Subnet:直接傳不同Subnet:交給Gateway

Default Gateway通常是Router的LAN位址,例如192.168.1.1。ESP32要連Django時,IP Packet的目的IP仍是Django Server;但目前這一跳的Wi-Fi/Ethernet Frame會先送到Gateway的MAC。

常見誤解:ESP32不是把「目的IP改成Gateway」。IP目的地仍是遠端伺服器;Gateway只是下一跳的設備。

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。

192.168.1.119:49152→ NAT/PAT →203.0.113.20:62001
192.168.1.120:49153→ NAT/PAT →203.0.113.20:62002
192.168.1.50:51000→ NAT/PAT →203.0.113.20:62003

上例的203.0.113.20是文件示意用公網IP。Router建立一張暫時對照表,讓Django回應到達後,可以交回正確的ESP32或手機。

位置來源目的
ESP32送往Router前192.168.1.119:49152Django-IP:443
Router送往Internet後Public-IP:62001Django-IP:443
Django回應Django-IP:443Public-IP:62001
Router交回LANDjango-IP:443192.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衝突封閉、受管理且有完整清冊的網路
場域建議:ESP32主動向Django送資料時,多半不需要固定IP;若其他設備要主動連回ESP32或本地Server,優先考慮DHCP Reservation,較方便集中管理。

七、常見錯誤與分層診斷

Wi-FiDHCPIPMaskGatewayDNSNAT/Internet
現象可能原因取得證據
IP顯示0.0.0.0尚未連線、DHCP失敗或狀態讀取太早WiFi.status、連線時間、DHCP Server
IP是169.254.x.x未取得正常DHCP租約,設備使用Link-localRouter DHCP服務、租約數量與網路阻擋
同LAN裝置無法互通Mask錯誤、AP Isolation、防火牆或IP衝突IP/Mask比較、ARP、Router無線隔離設定
能連Gateway,不能用DomainDNS設定或解析失敗DNS IP、Domain解析結果
能解析Domain但無法連DjangoInternet、Routing、Port、TLS或Server問題目的IP、TCP連線、TLS錯誤與HTTP狀態
偶爾換一個IP後系統失效程式依賴動態IP或租約改變DHCP Lease、Router紀錄、是否應用Reservation
兩台設備時好時壞IP衝突裝置清冊、ARP表、Router租約與MAC
不要只寫「網路不通」。診斷紀錄至少要包含:本機IP、Mask、Gateway、DNS、RSSI、目的Domain、解析IP、失敗時間與錯誤碼。

八、場域網路規劃範例

水井三寶展覽、智慧養殖或慢食平台若逐步增加設備,建議先建立網路與裝置清冊。

類型建議位址方式範例管理重點
Router/Gateway固定192.168.10.1管理密碼、韌體、防火牆、備份
本地Server/Home AssistantDHCP Reservation192.168.10.10服務Port、備份、健康檢查
ESP32感測節點DHCP192.168.10.101~150Device ID、MAC、場域位置、韌體版本
管理者手機/筆電DHCP192.168.10.51~100帳號、權限與訪客網路分離
訪客獨立Guest Network192.168.20.0/24禁止直接存取IoT與管理設備
網路規劃不是只分IP:還要處理SSID、頻段、訊號覆蓋、訪客隔離、裝置身分、更新、金鑰、資料回傳、離線機制與維運責任。

三項學生任務

No-AI|找出我的網路

記錄電腦或ESP32的IP、Mask、Gateway、DNS,計算Network、Broadcast與可用Host範圍。

AI Pair|比較三個目的IP

讓AI協助判斷哪些位於同Subnet,再由學生用AND運算驗證並修正AI解釋。

Challenge|網路故障闖關

教師設定錯誤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.0192.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,不是記住四個數字,而是能判斷「我是誰、誰和我同網、下一跳要交給誰、如何走到雲端」。

系列定位:《封包旅行記》EP02。建議先閱讀EP01《一個封包如何從ESP32走到Django?》。本文適用於大學部網際網路應用、物聯網與智慧生活、ESP32聯網、Django雲端平台及USR場域專題。文中的公網IP 203.0.113.20屬文件示意用途,不代表實際服務位址。

沒有留言:

張貼留言