Gateway 是什麼?網路閘道器完整教學
Gateway(閘道器)是網路通訊中負責「跨網段轉發封包」的關鍵設備。當你的電腦要連上網際網路,或是與不同子網路的設備通訊,封包都必須先經過 Gateway。本文用白話解說 Gateway 的定義、運作原理、查看與設定方式,並示範常見問題排查。
更多網路基礎概念,請參考 IP、Subnet Mask、Gateway 完整教學。
什麼是 Gateway?
Gateway 的定義
Gateway(閘道器,也稱為預設閘道,Default Gateway)是一台在不同網路之間轉發封包的設備,通常就是你家裡或公司的路由器(Router)。
用生活中的例子來比喻:假設你住在台北,要寄一封信給高雄的朋友。你不會直接跑去高雄投遞,而是先把信投進附近的郵筒(Gateway),再由郵局系統(網際網路路由)一站一站地把信送到目的地。Gateway 扮演的就是這個「第一個郵筒」的角色——你只需要知道它在哪裡,剩下的路由工作交給它處理。
Default Gateway(預設閘道)
在實際設定中,我們通常設定的是 Default Gateway(預設閘道)。它的意思是:當設備的路由表中找不到更精確的路由規則時,就把封包送到這個預設的 Gateway,由它決定下一步怎麼走。
家用環境中,Default Gateway 幾乎都是你的 Wi-Fi 路由器,常見 IP 為:
192.168.1.1(最常見)192.168.0.110.0.0.1
你可以把 Default Gateway 理解成你的網路「出口」:所有要離開你的區域網路的流量,都要先經過它。
Gateway 的運作原理
封包轉發的決策步驟
當你的電腦(假設 IP 為 192.168.1.100/24)要發送一個封包到目標 IP,以下是系統的判斷流程:
步驟 1:判斷目標是否在同一個網段
電腦會用自己的 Subnet Mask(255.255.255.0)對自己的 IP 和目標 IP 各做一次 AND 位元運算:
自己的網路位址:
192.168.1.100 AND 255.255.255.0 = 192.168.1.0
目標 IP 142.250.185.78 的網路位址:
142.250.185.78 AND 255.255.255.0 = 142.250.185.0
兩個結果不同 → 不在同一個網段
步驟 2:同網段 — 直接 ARP 查詢
如果目標 IP 和自己在同一個網段(例如目標是 192.168.1.200),電腦會發送 ARP(Address Resolution Protocol)廣播,詢問「誰的 IP 是 192.168.1.200?請告訴我你的 MAC Address」,然後直接在區域網路內傳送。
步驟 3:不同網段 — 送往 Gateway
如果目標不在同一個網段,電腦查詢路由表,找到 Default Gateway(192.168.1.1),用 ARP 查出路由器的 MAC Address,然後把封包的目標 MAC Address 填成路由器的 MAC,將封包送給路由器。
步驟 4:Gateway 查詢路由表繼續轉發
路由器收到封包後,查詢自己的路由表,決定下一個 hop(跳點)是哪裡,再往前傳。這個過程在網際網路上會重複多次,直到封包抵達目的地。
路由表(Routing Table)
路由表是每台設備(包含路由器和一般電腦)都有的一份清單,記錄了「要到達某個網段,應該往哪個方向送」。
# Linux 查看路由表
ip route show
# 典型輸出
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100
# ↑ default = 所有找不到精確路由的封包,都送到 192.168.1.1(Gateway)
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
# ↑ 目標是 192.168.1.0/24 網段的封包,直接從 eth0 介面送出(不需要 Gateway)
路由表的匹配規則是最長前綴匹配(Longest Prefix Match):越精確的路由規則優先級越高,只有在所有規則都不符合時,才會落到 default 那條(也就是送往 Gateway)。
如何查看你的 Gateway
Linux(使用 ip route)
# 方法一:查看完整路由表
ip route show
# 方法二:只看預設路由(Gateway)
ip route show default
# 輸出範例
# default via 192.168.1.1 dev eth0
# 方法三:舊版指令(部分系統仍支援)
route -n
# 輸出範例
# Destination Gateway Genmask Flags Metric Ref Use Iface
# 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
# 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
# Destination 為 0.0.0.0(代表 default),Gateway 欄位就是 192.168.1.1
macOS(使用 netstat -nr)
# 查看路由表,-n 不解析主機名稱,-r 顯示路由
netstat -nr
# 或者只看 IPv4 預設路由
netstat -nr | grep default
# 輸出範例
# default 192.168.1.1 UGScg en0
# 第二欄 192.168.1.1 就是 Gateway
# macOS 也可以用
route get default
# 輸出範例
# route to: default
# destination: default
# mask: default
# gateway: 192.168.1.1 ← 這就是 Gateway
# interface: en0
Windows(使用 ipconfig)
# 查看網路設定,包含 Gateway
ipconfig
# 輸出範例
# 無線區域網路介面卡 Wi-Fi:
# 連線特定 DNS 尾碼 . . . . . .:
# IPv4 位址 . . . . . . . . . . : 192.168.1.100
# 子網路遮罩 . . . . . . . . . . : 255.255.255.0
# 預設閘道 . . . . . . . . . . . : 192.168.1.1
# ↑ 「預設閘道」就是 Gateway
如何設定 Gateway
臨時設定(重開機後失效)
這種方式適合臨時測試,重開機或重啟網路服務後設定就會消失。
# 新增預設路由(設定 Gateway)
sudo ip route add default via 192.168.1.1 dev eth0
# 如果已有預設路由,需要先刪除再新增
sudo ip route del default
sudo ip route add default via 192.168.1.1 dev eth0
# 驗證
ip route show default
永久設定(Ubuntu,使用 Netplan)
Ubuntu 18.04 以後使用 Netplan 管理網路設定,設定為永久生效。
# 找到 Netplan 設定檔
ls /etc/netplan/
# 通常是 01-netcfg.yaml 或 00-installer-config.yaml
# 編輯設定檔
sudo nano /etc/netplan/01-netcfg.yaml
設定靜態 IP 和 Gateway 的範例:
network:
version: 2
ethernets:
eth0:
dhcp4: false # 關閉自動取得 IP
addresses:
- 192.168.1.100/24 # 靜態 IP(CIDR 格式)
routes:
- to: default
via: 192.168.1.1 # 設定 Gateway
nameservers:
addresses:
- 8.8.8.8 # DNS 伺服器
# 套用設定(立即生效)
sudo netplan apply
# 驗證
ip route show
永久設定(CentOS/RHEL,使用 nmcli)
# 查看目前連線名稱
nmcli connection show
# 設定 Gateway
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
# 重新連線套用設定
nmcli connection up eth0
# 驗證
ip route show
Gateway 需要搭配 Subnet Mask 使用,詳見 Subnet Mask 是什麼?。
Gateway 常見問題排查
問題 1:無法連上網際網路
當你無法上網時,先確認 Gateway 是否可達:
# 步驟 1:先確認自己有 IP 位址
ip addr show
# 步驟 2:查看 Gateway IP
ip route show default
# 記下 via 後面的 IP(例如 192.168.1.1)
# 步驟 3:ping Gateway,確認區域網路通訊正常
ping -c 4 192.168.1.1
# 如果有回應:Gateway 可達,問題可能在 Gateway 以外(ISP 或 DNS)
# 如果沒有回應:Gateway 不可達,問題在區域網路層面
問題 2:ping Gateway 沒有回應
# 確認自己的 IP 和 Gateway 在同一個網段
ip addr show eth0
# 例如 IP 是 192.168.1.100/24,那 Gateway 應該是 192.168.1.x
# 確認路由表正確
ip route show
# 如果 Gateway 設定錯誤,重新設定
sudo ip route del default
sudo ip route add default via 192.168.1.1 # 替換成正確的 Gateway IP
問題 3:使用 traceroute 追蹤封包路徑
traceroute 可以顯示封包從你的電腦出發,每經過一個路由器(hop)的 IP 和延遲:
# Linux/macOS
traceroute google.com
# Windows
tracert google.com
# 輸出範例(簡化)
# traceroute to google.com (142.250.185.78), 30 hops max
# 1 192.168.1.1 (192.168.1.1) 2.345 ms ← 第一跳就是你的 Gateway
# 2 10.20.30.1 (10.20.30.1) 15.234 ms ← ISP 的路由器
# 3 ...
# 10 142.250.185.78 30.123 ms ← 目標伺服器
第一個 hop 通常就是你的 Gateway(家用路由器)。如果第一跳就逾時(* * *),代表 Gateway 有問題。
問題 4:「No route to host」錯誤
這個錯誤通常代表路由表中沒有可以到達目標 IP 的路由:
# 查看路由表確認有 default 路由
ip route show
# 如果沒有 default 路由,新增它
sudo ip route add default via 192.168.1.1
# 確認 Gateway 本身可達
ping -c 2 192.168.1.1
常見問題(FAQ)
Q1: 路由器和 Gateway 是同一件事嗎?
在家用環境中,兩者通常指的是同一台設備。路由器(Router)是設備名稱,Gateway(閘道器)是功能描述。你家的路由器同時承擔了 Gateway(對外連線的出口)、DHCP 伺服器(分配 IP 給區域網路設備)、DNS 轉發等多種功能。在企業網路中,Gateway 可能是獨立的防火牆設備,和一般的路由器分開。
Q2: 為什麼需要 Default Gateway?直接連網際網路不行嗎?
你的電腦連接的是區域網路(LAN),區域網路使用的是私有 IP(如 192.168.1.100),這個 IP 在網際網路上是無效的。Default Gateway(路由器)負責:
- 把你的私有 IP 透過 NAT 轉換成公有 IP
- 在你的封包和網際網路之間做橋接
- 管理進出的流量(防火牆功能)
如果沒有設定 Default Gateway,你的電腦就像一個沒有出口的房間,只能和同一個房間(同一個網段)裡的設備通訊。
Q3: 可以設定多個 Gateway 嗎?
可以,但需要搭配路由規則(Policy Routing)管理。一般情況下,一台設備只設定一個 Default Gateway(預設所有流量走這條)。如果有多條網路連線(例如同時接了兩個 ISP),可以透過路由表設定不同目標網段走不同的 Gateway,或是使用 ip rule 設定更進階的策略路由。這在企業或伺服器環境中較常見,家用環境幾乎不需要。