技術文章 · 網路與網通建置

固定 IP、DHCP 與 IP 衝突:小型網路的 IP 規劃實務

設備時好時壞、印表機突然連不到,多半是 IP 規劃沒做好或位址衝突。本文從 ARP 與 DHCP 租約的底層機制講起,說明網段切割、DHCP 保留、rogue DHCP 排查與工程判斷準則,附實際案例與排查步驟。

作者 Steve Chen · 發布  · 更新  · 約 9 分鐘閱讀

網路與網通建置 — 廷皓技術專欄插圖

「印表機昨天還好好的,今天就連不到」、「監視器偶爾掉線、過一陣子又自己好」:這種抓不到規律、時好時壞的毛病,十有八九不是設備壞了,而是IP 沒規劃好,或兩台設備搶到同一個位址。我們在高雄、台南的現場修過太多這種案子。最典型的一個:某間工廠辦公室新買一台網路印表機,工程師圖方便,直接在面板上手動填了 192.168.1.150,剛好落在路由器 DHCP 的發放範圍裡;過了兩週,某位同事的筆電開機拿到同一個位址,印表機就開始「隨機」連不到。這種故障最惱人的地方,是你趕到現場時它往往又好了,很難重現。要真正根治,得先搞懂底下兩套機制該怎麼運作:不然你每次都只是在猜。

先搞懂「時好時壞」的元凶:ARP 與位址搶佔

很多人以為 IP 衝突就是「兩台機器不能同時上線」,其實沒那麼單純。真正決定一個封包送到哪一台的,是比 IP 更底層的一層:ARP(位址解析協定)。同一個區網裡,交換器和每台電腦其實不認 IP,它們認的是網卡出廠就寫死的 MAC 位址。當你的電腦要跟 192.168.1.150 講話,它會先在區網裡廣播問一句「誰是 .150?」,對方回一個 MAC,之後所有封包就照這張對照表(ARP 快取)往那個 MAC 送。

問題來了:如果有兩台設備都自稱是 .150,它們各自的網卡在開機、或每隔一段時間,都會主動廣播一次「我是 .150,我的 MAC 是某某」(這叫 gratuitous ARP,白話講就是「自報家門」)。誰最後喊的那一聲,就會把別人 ARP 快取裡的紀錄蓋掉。於是封包一下送到 A、一下送到 B,完全看誰剛剛廣播過:這就是「時好時壞、抓不到規律」的物理成因。它不是壞掉,是兩台設備在互搶同一個門牌,而郵差(交換器)只認最後一張貼上去的地址條。

好消息是,現代作業系統有一層自保機制。依 RFC 5227 的位址衝突偵測(ACD),一台設備在正式啟用某個 IP 之前,會先送出 ARP 探測封包試探「這個位址有人用了嗎」;若收到回應,就知道撞號了。Windows 偵測到時,系統匣會直接跳出「IP 位址衝突」的黃色警告,有些網路設備則會乾脆自動放棄該位址。看到這個警告別當它是小事,它其實是在替你點名兇手。

DHCP 怎麼發位址:DORA 交握與看不見的租約時鐘

要理解為什麼常常是「過兩週才出事」,得看 DHCP 的發放流程。設備開機要位址時,走的是俗稱 DORA 的四步交握:Discover(設備廣播「有沒有人能給我 IP」)、Offer(DHCP 伺服器回「這個 .150 給你」)、Request(設備說「好,我要這個」)、Acknowledge(伺服器確認「成交」)。整個過程零點幾秒就跑完,平常你根本不會察覺。

關鍵在於 DHCP 發出去的不是「送你」,而是「租你」:每個位址都帶一個租約期限(lease),家用路由器常見設 24 小時,商用環境可能設好幾天。設備不會拖到到期才處理,它有兩個內建鬧鐘:租約走到一半(T1)時,會先私下找原本那台伺服器續約;若拖到八分之七(T2,約 87.5%)還沒續成,才會改用廣播對整個網段喊「誰來幫我續約」。這套時鐘,正是為什麼你手動硬設的印表機能安穩跑上一兩週:那段時間剛好沒有新設備來要位址,DHCP 池還沒把 .150 發出去;直到某天有人開機、剛好輪到 .150,衝突才引爆。所以故障看起來是「突然」發生,其實是租約時鐘早就埋好的伏筆。

第一步永遠是把網段與用途分配好

講完機制,回到規劃本身。第一步不是急著設 IP,而是先把「誰用哪一段」寫下來,而不是先到先用、隨手撿一個號碼。以一個常見的 /24 私有網段(例如 192.168.1.0,扣掉網路與廣播位址後共 254 個可用)為例,我們通常這樣切:

  • .1 或 .254:閘道(路由器/防火牆),固定不動。預設值要看機型:常見是 .1,但不少電信商和商用路由器用 .254,先確認自己的閘道落在哪,再規劃後面的區段。
  • .2~.20:網路骨幹設備固定用(交換器、無線基地台、NAS、伺服器),這些是整個網路的地基,要好記、好查。
  • .21~.99:需要固定位址的終端(網路印表機、NVR 主機、IP 監視器、門禁、考勤機)。
  • .100~.200:DHCP 動態發給來來去去的電腦、手機、訪客裝置。
  • .201~.253:預留,日後擴充或臨時測試用(若閘道剛好是 .254,這段就把尾巴讓給它)。

這裡有個常被忽略的工程判斷:/24 給你 254 個位址,聽起來很多,但一段網路能塞多少設備,真正的天花板不是位址數,而是廣播網域的雜訊。同一個網段裡每一次 ARP 詢問、每一次 DHCP 廣播,全網設備都要收、都要處理。業界的經驗法則是把單一廣播網域壓在 250 到 500 台活躍設備以內;再往上疊,廣播流量會開始拖慢反應,也讓任何故障都變得更難查。所以一間三十人上下的辦公室,/24 綽綽有餘;但如果攝影機幾十支,再加上員工手機、訪客 Wi-Fi 全擠在同一段,位址很快見底,這時該做的不是硬塞,而是切 VLAN、分網段:把監控、辦公、訪客各自關進獨立的廣播網域,彼此的雜訊互不干擾,出事也好縮小範圍。反過來也提醒一句:別為了省位址把網段開太小,一段網路用到接近爆滿,DHCP 會開始發不出位址,屆時緊急重新編址的痛,遠比當初多留一點空間昂貴。

固定 IP 別用「手動硬設」,改用 DHCP 保留

很多人習慣把印表機、NVR 直接在裝置面板上手動打一個 IP,這做法有兩個地雷。第一,那個位址常常沒從 DHCP 範圍排除,哪天伺服器把同一個號碼發給別人就撞號:前面印表機的案例就是這樣來的。第二,設定散落在各台設備裡,沒人記得哪台設過什麼,日後維護像在拆地雷。

更穩的做法是用 DHCP 保留(reservation,有些品牌叫位址綁定):在路由器或伺服器上,把該設備的 MAC 位址綁死一個固定 IP,設備本身維持「自動取得 IP」就好。這樣位址既固定又不會衝突,而且好處遠不只如此:

  • 設定集中在一處管理:所有固定配置都躺在 DHCP 伺服器的清單裡,查一眼就知道全貌,不必逐台登入設備翻設定。
  • 閘道、DNS 一起發、一起改:保留會把閘道、DNS 這些參數一併下發;哪天要換 DNS、或做網段搬遷,只改伺服器一處,全網跟著更新,不用一台一台重設。
  • 換設備零痛感:印表機壞了換同型新機,只要把保留清單裡的舊 MAC 換成新 MAC,IP 不動、列印服務照舊,使用者完全無感。

要做保留之前,記得先把 DHCP 的動態發放範圍縮到「固定區」之外(例如只發 .100~.200),把整段固定區讓給保留與少數必要的手動位址。這一步沒做,保留和動態池還是可能在邊界上打架。

IP 衝突的三個常見來源與排查手法

  • 兩台設備手動設了同一個固定 IP:常見於不同時間、不同人各自施工,彼此不知情:牆上一台監視器、機房一台伺服器,號碼就這麼撞上了。
  • 手動固定的 IP 落在 DHCP 發放範圍內,被重複發出:就是前面那台印表機。
  • 網路上多了一台不該存在的 DHCP(rogue DHCP):最頭痛的一種,下一段細講。

排查衝突,最直接的三招:在受影響的電腦上敲 arp -a,看同一個 IP 是不是對應到兩個不同的 MAC;翻路由器的 DHCP 用戶端清單,比對哪個號碼被誰佔著;再不然就等 Windows 那個「IP 位址衝突」警告自己跳出來點名。把肇事那台揪出來,改成保留或關掉它多餘的功能,問題多半就解了。

最陰的一種:自己接的家用路由器變成「野生 DHCP」

rogue DHCP 之所以難纏,是因為它通常不是惡意,而是好心辦壞事。最典型的情境:某個部門嫌網路孔不夠,自己買一台家用無線路由器接上去當分享器,而且接在錯的孔(LAN 對 LAN)。這台路由器的 DHCP 預設是開著的,於是它也開始對整段網路發 IP:而且發的是「它自己」當閘道、指向錯誤 DNS 的設定。結果就是:有人拿到正確設定能上網,有人拿到這台野生路由器發的錯設定上不了網,整段網路一半正常一半癱瘓,症狀還會隨著誰先搶到而漂移,比單純撞號更難抓。

要揪它,可以用封包側錄或網管工具,盯 UDP 67 埠(DHCP 伺服器回應所用的埠):只要看到你核可名單以外的設備在這個埠上回話,兇手就是它。更根本的預防,是在具備網管能力的交換器上開啟 DHCP snooping:把真正該發 IP 的那個上聯埠設為「信任埠」,其餘所有埠一律「不信任」,任何從不信任埠冒出來的 DHCP 回應,交換器直接丟掉。這等於在硬體層面立了一條規矩:只有你指定的那台伺服器有資格發位址,別人接什麼進來都當它沒發。對於容易被員工亂接設備的環境,這是一勞永逸的做法。

幾個一定要記住的判斷準則

  • 「設備現在 ping 不到」不等於「這個位址沒人用」:指派某個 IP 之前先 ping 一下看有無回應,是好習慣,但那台設備當下若剛好關機或休眠,就會 ping 不到,讓你誤以為位址是空的、放心設下去,等它一開機就撞號。ping 只能證明「有人在」,不能證明「沒人用」。
  • 手動設固定 IP,一定要同步從 DHCP 池排除:這兩件事是一組的,只做一半等於埋雷。能用保留就別用手動,正是為了免掉這道容易漏掉的人工步驟。
  • 家用路由器要當交換器用,先把它的 DHCP 關掉、網路線接 LAN 埠:否則它就是一台現成的 rogue DHCP,還會多套一層 NAT,讓內網互連出一堆莫名其妙的問題。
  • 網段留三成空間:規劃時別把位址配到滿,成長、臨時設備、活動訪客都要空間,留餘裕永遠比事後重編便宜。

對照指令

聯絡廷皓討論 看更多文章