緯育 2026-0330

出自頂極製作所

Linux 環境管理與設定

本次課程聚焦於在 Linux 環境中使用文字編輯器管理主機的必要性與基本操作。講師指出,伺服器多半不具備圖形化使用者介面 (GUI),因此熟悉文字編輯器是管理 Linux 主機的核心技能。課程介紹兩款主流編輯器:Nano 與 Vim。對於 Nano,講師說明其易學易用的特性,並示範進入、退出、開啟檔案、儲存與另存新檔等基本操作。針對功能更強大的 Vim,講師重點解釋其核心概念——四種模式(一般模式、編輯模式、命令列模式、區塊模式)及切換方式,並示範基本進入與強制退出操作。此外,課程也提及 Linux 系統管理的常見流程,包括檔案比對、修改網路設定檔以設定固定 IP,以及未來如何透過編輯組態檔管理各種系統服務。

Linux 系統管理基礎

  • 檔案內容比對
    • 說明:需確認設定檔是否被修改時,應以工具比對兩個檔案(如備份檔與當前執行檔)的差異。
    • 工具:不建議以人工逐行比對大量設定檔,應使用專門的比較工具。
  • 網路組態設定
    • 目的:伺服器需固定 IP 以保障服務穩定,因此需將預設的動態 IP 改為固定 IP。
    • 方法:修改網路管理套件的組態檔(配置檔)。
    • 系統差異:不同 Linux 發行版(如 CentOS、Ubuntu)偏好不同的網路管理套件與指令工具,設定方式亦不同。
  • 以指令修改網路的缺點
    • 說明:直接以指令修改網路設定通常僅具暫時效果。
    • 問題:主機重新啟動後設定會消失,需重設;根本解法是修改組態檔。
  • Linux 服務與組態檔
    • 核心概念:在 Linux 中,多數功能或服務由一個或多個文字檔控制,稱為「組態檔」(配置檔)。
    • 修改方式:調整系統設定(如登入限制、主機名稱、網路掛載、網路組態、系統排程、遠端分享、防火牆規則等)最快方式是用文字編輯器直接修改對應組態檔。
    • 優點:簡單、快速。
    • 缺點:需學會編輯器的操作並記住指令與檔案位置。
  • Linux 管理工作流程
    • 流程:
   1. 依客戶需求比對並選擇合適軟體(如 Web 伺服器:Apache、Nginx 等)。
   2. 安裝所選軟體。
   3. 使用文字編輯器(如 Nano、Vim)開啟並編輯其組態檔。
   4. 參考官方文件,定位需修改的設定行並進行變更(如將 Web 伺服器 Buffer 由 64MB 改為 128MB)。
   5. 儲存檔案並重新啟動服務。
   6. 若服務有漏洞 (bug),需關注官方更新並及時升級。

文字編輯器 (Text Editor)

  • 學習文字編輯器的必要性
    • 原因:多數 Linux 伺服器(尤其雲端虛擬主機)僅提供文字終端連線,不提供 GUI。
    • 結論:因此必須熟悉文字編輯器;建議至少掌握一至兩套以備不時之需。
  • Nano 編輯器
    • 定位:操作單純、易學的文字編輯器。
    • 歷史:前身為 TIP (TIP Is not Pico),為自由軟體專案;後加入 GNU 專案並更名為 Nano。
    • 介面:主要指令提示顯示於畫面最下方,並隨狀態變化。
    • 基本操作:
    • 進入/退出:輸入 nano 進入;按 Ctrl + X 退出。若檔案有修改,退出時會提示是否儲存。
    • 開啟檔案:nano [檔案路徑/檔名]。
    • 儲存檔案 (WriteOut):按 Ctrl + O。輸入相同檔名為覆蓋儲存;輸入不同檔名即「另存新檔」。
    • 搜尋 (WhereIs):按 Ctrl + W。
    • 游標位置資訊:按 Ctrl + C 顯示目前行列位置。
    • 說明 (Help):按 Ctrl + G 顯示更多快速鍵說明。
  • Vim 編輯器
    • 定位:功能強大、廣泛使用但較複雜的編輯器。作者曾言:「文字編輯器只有兩種,一種叫 Vim,一種叫其他」。
    • 歷史:前身為 vi,而 vi 源自 UNIX 的 ex 編輯器;Vim 為眾多 vi 衍生版本中最流行者。
    • 特點:
    • 介面極簡,僅底部一行顯示訊息,無快速鍵提示。
    • 支援分割視窗,可同畫面開啟多個檔案。
    • 支援多次復原 (undo) 與重做 (redo)。
    • 內建超過 400 種程式語言語法高亮。
    • 支援中斷復原,可在意外關閉後還原未儲存內容。
    • Windows 上有 GUI 版本 gVim。
    • Vim 的模式 (Modes)
    • 核心概念:Vim 操作以模式為基礎,使用者需明確了解當前模式;若不確定,可按 ESC 回到「一般模式」。所有模式切換皆經由一般模式。
  • 1. 一般模式 (Normal Mode):
    • 進入方式:啟動 Vim 或按 ESC 即進入。
    • 功能:用於瀏覽內容(上下左右、PageUp/PageDown)與執行指令(如刪除、複製);在此模式下每個按鍵對應功能,不可隨意亂按。
  • 2. 編輯模式 (Insert Mode):
    • 進入方式:在一般模式下按 i, a, o 等(常見六種方式)。
    • 功能:輸入與編輯文字內容。
  • 3. 命令列模式 (Command-line Mode):
    • 進入方式:在一般模式下按冒號 : 或斜線 /。
    • 功能:
    • : 可執行存檔 (w)、退出 (q) 等命令。
    • / 可進行文字搜尋。
  • 4. 區塊模式 (Visual Mode):
    • 進入方式:在一般模式下按 v 或 Ctrl+v。
    • 功能:框選文字區域以進行複製、剪下等操作,較少使用。
    • Vim 基本操作:
    • 進入/退出:輸入 vim 進入。
    • 正常退出:在一般模式下輸入 :q (或 :quit)。
    • 強制退出(不儲存):若檔案已修改,輸入 :q! 強制退出。
    • 開啟檔案:vim [檔案路徑/檔名]。

2026-0330-04.png

基礎游標移動 (Part 1)

  • 使用方向鍵與 hjkl 移動
    • 可在 Vim 環境中使用上下左右方向鍵移動游標。
    • hjkl 鍵是傳統的替代方案,對應關係為 h(左), j(下), k(上), l(右)。
    • hjkl 的設計源於早期無獨立方向鍵的鍵盤,在現代伺服器機房等方向鍵易損壞或不存在的環境中仍非常實用。

行內移動 (Part 2)

  • 移動到行首與行尾
    • Home / End 鍵: 直觀的行首/行尾跳轉方式。
    • 0 / $ 鍵: 在一般模式下,按 0 移動到行首,$ (Shift + 4) 移動到行尾,在筆記型電腦上特別方便。
  • 跳過前置空白移動到程式碼起始處
    • ^ (Power/Caret) 符號: 按下 ^ (Shift + 6) 可將游標移動到該行第一個非空白字元處,適合編輯有縮排的程式碼。

畫面與檔案移動 (Part 3)

  • 畫面中的上、中、下快速跳轉
    • H / M / L: 在一般模式下,按大寫 H (High)、M (Middle)、L (Low) 可快速移動到目前畫面的頂部、中間或底部區域。
  • 文件級的快速跳轉
    • gg: 連續按兩次小寫 g,跳轉至檔案最開頭。
    • G: 按下大寫 G (Shift + g),跳轉至檔案最末尾。
  • 翻頁操作
    • PageUp / PageDown: 標準的翻頁按鍵。
    • Ctrl + B (Back): 等同於 PageUp,向上翻頁。
    • Ctrl + F (Forward): 等同於 PageDown,向下翻頁。

內容刪除 (Part 4 & 5)

  • 字元刪除
    • x: 刪除游標當前字元 (同 Delete)。
    • X (大寫): 刪除游標前一個字元 (同 Backspace)。
    • 數字組合: 可在指令前加數字重複執行,如 3x 表示刪除 3 個字元。
  • 進階刪除指令
    • dw (delete word): 刪除一個單詞。可搭配數字,如 3dw 刪除 3 個單詞。
    • dd (delete line): 刪除一整行,非常常用。可搭配數字,如 3dd 刪除 3 行。
  • 復原與重複操作
    • u (undo): 復原上一步操作。
    • Ctrl + R (redo): 重做(取消復原)上一步操作。
    • . (repeat): 重複上一次執行的指令。

複製與貼上操作

  • 複製指令 (Yank)
    • yl: 複製單一字元。
    • yw: 複製一個字詞 (word)。
    • yy: 複製游標所在的整行。
    • 數字組合: 以上指令皆可搭配數字前綴進行多次複製,如 5yl (5個字元)、2yw (2個字詞)、10yy (10行)。
  • 貼上指令 (Paste)
    • p (小寫): 將複製的內容貼在游標位置的「後面」。
    • P (大寫): 將複製的內容貼在游標位置的「前面」。

插入模式 (Insert Mode)

  • 進入插入模式的指令
    • i (insert): 在游標「之前」開始插入。
    • I (Insert): 在該行「最前端」開始插入。
    • a (append): 在游標「之後」開始插入。
    • A (Append): 在該行「最末端」開始插入。
    • o (open line): 在游標所在行的「下方」新增一空行並開始插入。
    • O (Open line): 在游標所在行的「上方」新增一空行並開始插入。
  • 退出插入模式: 按 ESC 鍵回到一般模式。

取代模式 (Replace Mode)

  • 取代指令 (Replace): 與插入模式不同,此模式會覆蓋原有字元。
    • r (replace): 取代游標所在的「單一」字元,執行後立即返回一般模式。
    • R (Replace): 進入「連續」取代模式,可連續輸入文字覆蓋原有內容,直到按 ESC 退出。

搜尋功能

  • 執行搜尋: 在一般模式下,輸入 / 進入搜尋狀態,接著輸入關鍵字後按 Enter。
  • 在搜尋結果中導航
    • n (next): 跳至下一個匹配的結果。
    • N (Next): 跳至上一個匹配的結果。

命令模式 (Command Mode)

  • 進入與操作: 在一般模式下按冒號 : 進入命令模式,可在畫面左下角輸入指令。
  • 檔案操作
    • :e 檔名: 在 Vim 內部編輯另一個檔案。
    • :r 檔名: 將指定檔案的內容讀取並插入到目前游標下方。
  • 存檔與離開
    • :w: 存檔。
    • :w 檔名: 另存新檔。
    • :w!: 強制存檔。
    • :q: 離開 (若有未存檔變更會失敗)。
    • :q!: 強制離開不存檔。
    • :wq 或 :x: 存檔並離開。
    • :wq!: 強制存檔並離開。
  • 環境設定 (:set)
    • 行號: :set nu (顯示), :set nonu (取消)。
    • Tab 寬度: :set ts=4 (設定 Tab 為 4 個空格寬)。
    • 搜尋高亮: :set hls (開啟), :set nohlsearch (關閉)。
    • 游標行標示: :set cursorline (開啟底線標示)。

Vim 個人化永久設定 (.vimrc 檔案)

  • 目的: 為了讓 set 指令等個人化設定永久生效,避免每次開啟 vim 都要重新設定。
  • 位置與原理: 在個人家目錄 (~/) 下建立一個名為 .vimrc 的隱藏檔案。vim 每次啟動時都會自動讀取並執行此檔案中的指令。
  • 建立與編輯: 使用 vim ~/.vimrc 建立檔案,並將常用指令(如 set number, set tabstop=4)逐行寫入後儲存即可。

2026-0330-05.png

檔案比較與差異分析(diff)

  • 對比兩檔案的基本概念與結果期望
    • 目標情境:懷疑伺服器主態檔(主設定檔)被更動時,不逐行用vi,而以指令比較兩份檔案(通常左為伺服器現況檔,右為備份或隨身碟副本)。
    • 期望結果:若兩檔完全一致,按Enter後終端不輸出;若有輸出表示存在差異。
    • 常見差異類型三種:A(增加,右相對左多內容或視角為其中一側「多」)、D(刪除,少了內容)、C(變更,兩邊皆有但內容不同,如大小寫不同)。
  • 讀取diff標記的範例與解讀
    • DOC1.A vs DOC1.B:示範「1c1」代表左1行 vs 右1行為change;左側小寫a、右側大寫A;中間分隔符僅為區隔左右並非內容。
    • 差異定位語法:「4d3」表示左第4行相對右第3行為刪除(左邊多、右邊無)、「3,5d2」表示左第3至5行相對右第2行為刪除;「6a4,6」表示左第6行相對右第4至6行為增加(右邊較多空白GH)。
  • 大型文件比較的挑戰(DOC3.A vs DOC3.B)
    • 大量差異輸出範例:「15,16d14」表示左第15到16行相對右第14行删減(右邊缺少這些段落);「14c14」表示兩邊第14行變更,可能只差幾字。
    • 觀察:整篇文章的diff輸出不易直覺閱讀,易造成困擾;若差異太大建議以備份覆蓋;多數情況僅有一兩行差異。
  • diff輸出模式與稀有用法
    • diff -c(上下文比較):列出雙方時間戳與區塊,使用「!」(不一致)、「-」(少)、「+」(多),可見左1-5行、右1-4行的差異呈現。
    • diff -u(統一格式):將兩檔合併標記左(-)與右(+)差異,資訊密集、閱讀較複雜;現場快速判讀較少使用。
  • 多檔比較
    • diff3:可同時比較三版本(如程式V1/V2/V3)。實務上程式開發常用Git等工具處理三方合併;本課不延伸示範。
  • 實務建議與流程
    • 對象與場景:現場排查伺服器問題(如Start Fail),優先檢查主態檔是否被改;以左為伺服器現況檔、右為備份檔比對。
    • 步驟:無差異則換下一檔;有差異則定位行號與內容,辨識是否非預期改動。差異小則手動修正;差異大則考慮以備份覆蓋。

視覺化差異工具(vimdiff)

  • 核心概念與優勢
    • 前提:系統裝有Vim;執行「vimdiff」以顏色呈現差異,較diff易讀,尤其對整篇文件(DOC3)非常實用。
    • 顏色意義:紅色代表變更(不一致),藍色代表多出的內容(另一側相對少),綠色代表少掉的內容(另一側相對多)。顏色可調整,示範為紅/藍/綠配置。
  • 操作示範與修正流程
    • 開啟方式:vimdiff 左側DOC1.A 右側DOC1.B;畫面分左右窗格,高亮差異。例:左1行 vs 右1行紅色突顯不同,將小a改為A即可消除差異。
    • 增加/刪除處理:左側顯示D為少、右側為多;在相應一側新增或刪除以同步。
    • 視窗切換:Ctrl+w 後按方向鍵切換窗格。
    • 離開::q 關閉當前窗格(需關兩次關全部);:qa 一次關閉全部。
    • 存檔::w 寫入保存;修正左側(伺服器現況)使與右側備份一致後存檔。
  • 應用於大型主態檔
    • 實例:快速定位差異行,如左第8行 vs 右第8行「x86 x32bit」,或第16行「x86 x17」等多餘/缺漏部分被清楚標示,便於迅速更正。
  • 現場可用性
    • 若無vimdiff,則退回使用diff;vimdiff更直觀但不保證所有環境預裝。

字元轉換與跨平台換行(TR、dos2unix/unix2dos)

  • TR指令用途
    • 將文字檔內字元或控制字元替換,例如將Tab轉空白,或處理不可見控制字符(換行符)。
    • 可處理一般字母(A、B、C、D)亦可替換控制字元(換行)。
  • 換行符差異與問題背景
    • Windows使用CRLF(\r\n),Linux/UNIX與現今Mac使用LF(\n)。
  • 跨平台編輯時:Linux檔在Windows開啟可能整檔成一行,因Windows期待CRLF而僅見LF;反向亦可能出現相容性問題。
  • 轉換工具與流程
    • 使用TR或專用工具:DOS→UNIX(dos2unix),UNIX→DOS(unix2dos);將檔案換行符轉成目標平台格式。
    • 歷史差異:早年Mac換行不同,現今與UNIX一致(LF),問題較少。
    • 實務辨識:若打開檔案變成一行,先確認來源/目的平台換行符,再用對應工具轉換。

網路管理套件

網路連通性測試(ping)

  • Linux ping的常用參數與行為
    • 連續運行:預設不自動停止,需Ctrl+C中止。
    • --help:查看選項;Linux選項較Windows豐富且語法不同。
    • -c 次數:指定發送次數(Windows對應 -n)。例:ping -c 4 8.8.8.8 模擬Windows行為。
    • -i 間隔:每次之間延遲,預設約1秒;可設為0.01進行高頻ping,短時間內發出數百至數千封包(機房高頻測試)。
    • -W 等待時間(秒):等待回覆的超時,預設5秒;可延長至10秒觀察延遲回覆。例:ping -c 1 -W 10 8.8.8.8。
  • 實務應用與建議
    • 常用模式:多半只需指定次數與目標IP;若回覆延遲或不穩定,再調整 -i 或 -W。
    • 排查順序:先測IP通(ping);若IP不通,DNS測試無意義(出不了網)。

5. 路由探測工具(tracepath與traceroute)

  • 工具差異與協定
    • Windows工具:tracert。Linux近年推tracepath;講者偏好traceroute,因支援多協定(ICMP/TCP/UDP),更通用。
    • tracepath行為:有時測不到(no reply),非未發送,而是對端不回;若抓封包可見實際封包行為差異。從路由器角度常用ICMP測路由。
    • traceroute優勢:支援ICMP/TCP/UDP,遇對端不回某協定時可切換,較不易測不到。
  • 實務觀察
    • 範例:至8.8.8.8途中節點不回應時,tracepath顯示 no reply;改用traceroute不同協定模式,可能獲得路徑。
    • 重點:測不到常因對方不回應特定封包類型,而非本端未發送。

DNS查詢與驗證(nslookup)

  • 正解與反解
    • 正解:查詢域名對應IP(如www.google.com的主機位址)。
    • 反解:查詢IP對應主機名(PTR)。
  • 使用情境與流程
    • 若ping 8.8.8.8可達但瀏覽www.google.com不通,懷疑DNS設定錯誤時,用nslookup確認解析是否正常。
    • 工具一致性:Windows與Linux的nslookup用法基本一致。
    • 範例輸出:顯示DNS伺服器為Google,說明正反解可用以驗證解析鏈。
  • 排查優先順序
    • 先測IP連通(ping),成功後再測DNS(nslookup);若IP不通,DNS測試無法進行(封路出不去)。

綜合實務:伺服器主態檔異動與網路設定

  • 常見情境
    • 伺服器啟動失敗(Start/Start Fail),先懷疑主態檔被改動。
    • 作業後習慣:將主態檔備份到客戶隨身碟或硬碟,日後可快速比對。
  • 實作目標
    • 今日最終目標:學會以文字編輯器將自身機器網路設定為固定IP;修改主態檔前先以ping確認網路連通。
  • 工具整合
    • 檔案層:diff/vimdiff檢視差異,修正主態檔與備份一致。
    • 字元層:必要時以TR或dos2unix/unix2dos處理跨平台換行問題。
    • 網路層:ping測IP、tracepath/traceroute測路由、nslookup測DNS解析。

800

Linux 網路管理指令介紹

  • 直接使用指令修改網路設定
    • 優點: 不依賴網路管理服務;下達指令後立即生效;無需重開機或重啟服務;可快速切換 IP 或閘道。
    • 缺點: 需學習指令;設定未寫入主態檔,重開機後會失效。
  • 兩套常見的網路管理工具
    • net-tools: 舊版套件,曾在 Ubuntu 等系統廣泛使用,包含 ifconfig 和 route;macOS 也內建。
    • iproute2 (IP LOG): 現行主流與未來趨勢;講師唯一推薦學習的工具。
    • 系統支援情況: net-tools 在 CentOS 7 與 Ubuntu 20.04 起預設不安裝,但近期 CentOS 又重新納入;目前多數系統兩者擇一或並存。

使用 net-tools(ifconfig 與 route)

  • 目標操作
    • 顯示目前的 IP 設定。
    • 顯示路由表(Gateway)。
    • 停用與啟用網路卡。
    • 使用指令修改 IP 與路由。
  • 顯示 IP 設定(ifconfig)
    • 基本用法: 輸入 ifconfig 顯示所有已啟用網卡資訊,包括 IP 位址、子網路遮罩、廣播位址、IPv6 位址與封包統計。
    • 指定網卡: ifconfig [網卡名稱](如 ifconfig ens160)顯示特定網卡資訊。
    • 顯示所有網卡: ifconfig -a 顯示包含停用中的所有網卡;若預設輸出看不到某網卡,可能表示該卡已停用。
  • 顯示路由表(route)
    • 基本用法: route;建議使用 route -n,以 IP 位址呈現而不解析主機名稱,速度較快。
    • 路由表欄位解讀:
    • Destination: 目的網段;0.0.0.0(或 default)代表所有外網流量。
    • Gateway: 閘道器 IP;0.0.0.0 表示該路由為內部網段,直接由網卡送出。
    • Genmask: 子網路遮罩。
    • Flags: U 表示路由啟用(Up),G 表示為閘道路由(Gateway)。
    • Iface: 該路由所使用的網路介面(網卡)。
  • 啟用與停用網路卡
    • 停用網卡: ifconfig [網卡名稱] down(如 ifconfig ens160 down);停用後該卡無法通訊,且在預設 ifconfig 輸出中消失。
    • 啟用網路卡: ifconfig [網卡名稱] up(如 ifconfig ens160 up);執行後網卡恢復運作。
    • 情境: 類似拔網路線;在伺服器遭入侵等緊急情況,此為比圖形介面更快速的斷網方式。
  • 使用指令修改網路設定
    • 修改 IP 位址: ifconfig [網卡名稱] [新 IP] netmask [子網路遮罩] 或 ifconfig [網卡名稱] [新 IP]/[遮罩位元](如 /24);例如 ifconfig ens160 192.168.10.10/24。
    • 清除路由:
    • 清除特定網段路由:route del -net [網段位址]/[遮罩]。
    • 清除預設閘道:route del default。
    • 新增路由:
    • 新增內部網段路由:route add -net [網段位址]/[遮罩]。
    • 新增預設閘道:route add default gw [閘道 IP 位址]。
    • 注意事項: 修改 IP 後路由可能被清除,導致無法連外;需手動重新新增預設閘道。

2026-0330-07.png

使用 ip 指令查看與管理網路

  • 介面與位址查詢
    • ip address show(可簡寫為 ip addr/ip add/ip as;僅 address 類別允許極短簡寫),可指定介面如 ENS33;輸出重點含 MAC、廣播、IPv4、CIDR/子網掩碼、廣播位址。
    • ip link show 顯示連結層資訊;表達與 address 類別不同。
    • ip route show(口訣:IPLOWSHOW)查看路由表;常見欄位含 default via、dev、source、metric 與 dhcp 標記(DHCP 發放時可能出現)。
  • 介面啟停
    • ip link set down/up;以 ping 8.8.8.8 驗證影響;指令需精準。
  • 位址新增/刪除與清空
    • 新增:ip address add / dev 。同介面可綁多個 IPv4。
    • 刪除:ip address delete / dev 。無「直接修改」,需刪舊加新。
    • 清空:ip address flush、ip route flush 需審慎使用。
  • 路由管理
    • 預設路由:ip route add default via ;刪除:ip route delete default。
    • 網段路由:ip route add/delete / dev 。
    • 故障判斷:同網段可通而外網不通,多為預設路由問題;多介面(ENS33/34/35)需分介面檢視與設置。

DNS 設定與 Ubuntu 的 systemd-resolved

  • 平台差異
    • Windows 將 IP/DNS/Gateway 整合於介面屬性;Linux/Unix/Mac 的 DNS 多由 /etc/resolv.conf 管控(Mac 格式亦同)。
  • /etc/resolv.conf
    • 主要為 nameserver 多組(理論上可非常多,優先使用第一組);可搭配 nslookup 的 server 指令確認使用中 DNS。
    • 常見測試:保留無效 DNS 會造成解析失敗;以 IP 連線可能仍通。
  • systemd-resolved
    • Ubuntu 常以 127.0.0.53 為本機快取/轉送;/etc/resolv.conf 指向該位址時,查詢由本機守護程式轉送外部。
    • 故障症狀:ping 8.8.8.8 通但網域解析失敗。可暫改 resolv.conf 指向外部 DNS(8.8.8.8/9.9.9.9),注意服務或開機流程可能覆寫。
    • 可用 systemctl status systemd-resolved 檢查服務與 PID。

會自動改寫 /etc/resolv.conf 的工具與發行版差異

  • DHCP 客戶端與網路管理工具
    • dhcpcd、dhclient 可在未知設定下臨時取得 IP/Gateway/DNS(前提需有 DHCP 伺服器)。流程:ip address flush 介面 → 執行 dhcpcd ens33 或 dhclient ens33 → 驗證 ip/ping。
    • NetworkManager(Red Hat/CentOS 系列偏好)搭配 nmcli/nmtui;語法與版本變動多,需查現行文件。
    • ifupdown(Ubuntu 舊版),現多由 Netplan 取代;多數工具可並存安裝,關鍵在會不會設定。
  • 文件與版本
    • 不同發行版/版本語法差異大;舊書常不適用,須以官方文件為準。
    • CentOS Stream 9 可能未預裝某些 DHCP 工具;Ubuntu 17.10 起預設改用 Netplan。

Netplan 的宣告式設定(YAML)

  • 性質與檔案
    • Netplan 是前端指令,不是服務;後端多為 systemd-networkd。設定位於 /etc/netplan/*.yaml(副檔名決定識別,檔名不重要)。
    • 嚴格縮排與階層,禁止使用 tab;欄位拼字需精確(如 addresses)。
  • 指令
    • netplan apply 重新套用;netplan try 測試;netplan status 查看狀態。舊寫法會出現警告,建議採用新版寫法(講者稱「右邊」)。
  • DHCPv4 與靜態 IP 切換
    • DHCPv4:在介面下設定 dhcp4: yes。
    • 靜態:將 dhcp4: no,加入 addresses(可多值,如 192.168.10.10/24 等)、routes(to: default、via: 192.168.10.2)、nameservers(8.8.8.8、9.9.9.9);可視情況停用 dhcp6。
    • 多 IP 很容易以 addresses 清單設定;生效後以 ip ... show 驗證、ping 8.8.8.8 測路由、nslookup 測解析。
  • 驗證與故障排除
    • 先確認 IP/閘道,再測 DNS,可快速定位問題;套用後可能需稍候片刻。
    • 若設定錯誤,netplan 會快速回報,應依訊息修正。

故障排除與操作心法

  • 驗證策略:區分同網段連通(鄰居 IP)與外網(8.8.8.8)、域名解析(nslookup/server),逐步定位是介面、IP、路由或 DNS 問題。
  • 設定混亂時可 reboot 清空暫時性配置,讓服務重新寫回預設;不同作業系統版本對路由清空行為略有差異。
  • 操作紀律:指令需精準;設定檔語法與縮排嚴謹;新舊工具與寫法並存時,優先採用新版語法與官方文件。

2026-0330-08.png

NetworkManager 概覽

  • NetworkManager 介紹
    • NetworkManager 是歷史悠久的 Linux 網路管理服務,常用於 CentOS(桌面與伺服器版)及 Ubuntu 桌面版。
    • Ubuntu 伺服器版採用 netplan。
    • NetworkManager 提供多種形式,包括圖形介面(UI)與文字服務管理機制。
    • 其架構曾多次重大變更,不同版本的操作方式與組態檔寫法差異很大。
  • NetworkManager 的組件與工具
    • 核心服務:背景執行的服務名稱為 NetworkManager。
    • 命令列工具(nmcli):nmcli 是操作 NetworkManager 的主要工具,可建立、修改、監控網路;講師強烈建議以 nmcli 設定網路,避免手動編輯組態檔。
    • 文字化圖形工具(nmtui):提供文字介面編輯網路設定,適合不偏好指令的使用者。
    • 組態檔:
    • 舊版設定位於 /etc/sysconfig/network-scripts/。
    • 現行(CentOS 8/9/Stream 9)連線組態檔位於 /etc/NetworkManager/system-connections/,檔名通常為 [連線名稱].nmconnection。
    • 建議以 nmcli 產生組態檔,避免手動編輯造成錯誤;檔案可相當複雜,許多未顯示者為預設值。
  • 安裝 NetworkManager
    • Ubuntu:apt install network-manager
    • CentOS:yum install NetworkManager(注意大小寫)
    • 重要提示:系統不應同時存在兩套網路管理工具,否則可能在開機時相互覆蓋 IP 設定、導致網路異常;更換工具前需先移除原本的一套。

使用 nmcli 進行網路設定

  • 查詢網路狀態
    • 查詢連線組態:nmcli connection show(或 nmcli c s)列出所有連線組態檔,含名稱(NAME)、UUID、類型(TYPE)、對應設備(DEVICE)。
    • 查詢網路設備:nmcli device status(或 nmcli d s)列出所有網路設備(網卡)狀態。
    • 顯示詳細資訊:
    • nmcli connection show [連線名稱]:顯示該連線的詳細參數(IP、閘道、DNS 等)。
    • nmcli device show [設備名稱]:顯示該網卡詳細資訊(MAC、MTU 等)。
  • 設定為 DHCP
    • 以 nmcli 將連線設定為自動取得 IP(DHCP)。
    • 指令:nmcli connection modify [連線名稱] ipv4.method auto
    • 套用變更:nmcli connection up [連線名稱]
  • 設定靜態 IP
    • 手動設定固定 IP、子網路遮罩、閘道與 DNS。
    • 步驟:
   1. 將方法改為手動:nmcli connection modify [連線名稱] ipv4.method manual
   2. 設定 IP 與遮罩:nmcli connection modify [連線名稱] ipv4.addresses "[IP位址]/[遮罩位數]"(例:192.168.10.20/24)
   3. 設定閘道:nmcli connection modify [連線名稱] ipv4.gateway [閘道IP]
   4. 設定 DNS:nmcli connection modify [連線名稱] ipv4.dns "[DNS1],[DNS2]"(多個以逗號分隔)
   5. 套用設定:nmcli connection up [連線名稱]
    • 驗證:以 ip a 檢視 IP 是否變更;用 ping 測試連通性(如 ping 8.8.8.8)與 DNS 解析(如 ping google.com)。
  • 啟用/停用網路
    • 控制網路設備(網卡):
    • 停用網卡:nmcli device disconnect [設備名稱]
    • 啟用網卡:nmcli device connect [設備名稱]
    • 控制網路連線(組態檔):
    • 停用連線:nmcli connection down [連線名稱](IP 會被移除)
    • 啟用連線:nmcli connection up [連線名稱](IP 會重新設定)

舊版與其他系統的網路設定

  • 舊版 CentOS(9 以前)
    • 組態檔位置:/etc/sysconfig/network-scripts/ifcfg-[網路卡名稱](例:ifcfg-ens160)。
    • 設定方式:直接編輯檔案(如 BOOTPROTO=dhcp 或 BOOTPROTO=none 靜態),並填寫 IPADDR、GATEWAY 等參數。
    • 服務重啟:systemctl restart NetworkManager 或舊式指令。
  • 舊版 Ubuntu(17.10 以前)
    • 使用 ifupdown。
    • 組態檔位置:/etc/network/interfaces。
    • 設定方式:檔案中設定 DHCP(iface [網卡名] inet dhcp)或靜態(address、netmask、gateway 等)。
    • 服務名稱:networking。
  • 文字化圖形工具(nmtui)
    • nmtui 提供文字介面進行網路設定。
    • CentOS 預設已安裝,Ubuntu 需手動安裝。
    • 功能包含編輯連線、啟用連線、設定主機名稱。
    • 操作以 Tab、方向鍵與 Enter 進行。
    • 注意:nmtui 最終仍修改組態檔;若工具版本與 NetworkManager 服務不匹配,可能產生服務無法讀取的組態檔而設定失敗。

2026-0331-01.png