05. Ubuntu Server 網路基礎:全面指南

網路是伺服器管理的一個基本方面,尤其是在使用 Ubuntu Server 時。無論你是在雲端環境中搭建伺服器,還是在管理地端基礎架構,了解如何設定網路介面、指派靜態 IP 位址、管理網路服務和疑難排解連線問題都至關重要。在本指南中,我們將介紹 Ubuntu Server 網路的基礎知識,包括使用Netplan(Ubuntu 22.04 中的預設網路設定工具)、處理cloud-init 產生的設定、管理網路服務以及疑難排解常見問題。


上一篇文章:

01. Ubuntu Server 簡介 – SysOSX: AI & Cloud

02. 如何搭建你的第一台 Ubuntu Server:初學者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令列 – SysOSX: AI & Cloud

04. Ubuntu Server 使用者與權限管理:全面指南 – SysOSX: AI & Cloud



1. Ubuntu Server 網路簡介

Ubuntu Server 使用Netplan作為其預設網路設定工具(自 Ubuntu 17.10 起)。Netplan 簡化了使用 YAML 檔案定義網路設定的過程。在 Ubuntu Server 22.04 中,systemd-networkd是管理網路的預設後端服務,而NetworkManager通常用於桌面環境或需要進階網路管理的特定伺服器設定。

預設網路後端

  • Ubuntu Server 22.04:使用systemd-networkd作為預設網路服務。
  • Ubuntu Desktop 22.04:使用NetworkManager作為預設網路服務。

如果你使用的是 Ubuntu Desktop,或者已在 Ubuntu Server 上手動安裝了NetworkManager,可以使用它管理網路介面。但是,NetworkManager預設情況下並未安裝在 Ubuntu Server 版本中。


2. 使用 Netplan 設定網路介面(Cloud-Init 更新)

在雲端環境中,Netplan 設定檔通常名為/etc/netplan/50-cloud-init.yaml。此檔案由cloud-init產生;除非停用 cloud-init 的網路設定功能,否則對它的變更在執行個體重新啟動後不會保留。

停用 Cloud-Init 網路設定

要停用 cloud-init 的網路設定功能,請在下列位置建立檔案/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg:

sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

新增下列內容:

network: {config: disabled}

停用 cloud-init 的網路設定後,你可以手動建立和管理持續性的 Netplan 設定檔。


範例:使用 Netplan 設定靜態 IP 位址

如果你的 Netplan 設定檔是/etc/netplan/50-cloud-init.yaml,你可以直接修改它或建立新的設定檔(例如,/etc/netplan/01-netcfg.yaml),以實現持續性設定。

  • 開啟 Netplan 設定檔:
sudo nano /etc/netplan/50-cloud-init.yaml
  • 修改內容以設定靜態 IP 位址:
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
  • eth0:將其取代為你的網路介面名稱(使用ip a列出介面)。
  • addresses:指派靜態 IP 位址。
  • routes:
    • to: default:指定預設路由。
    • via: 192.168.1.1:定義閘道位址。
  • nameservers:指定 DNS 伺服器。
  • 套用設定:
sudo netplan apply
  • 驗證設定:
ip a

3. 設定靜態 IP 位址

雖然 Netplan 是建議的工具,但你也可以在/etc/network/interfaces(用於較舊的 Ubuntu 版本)中手動設定靜態 IP 位址,或透過命令列工具進行設定。

使用ip命令

ip命令是管理網路介面的多功能工具。下面是暫時指派靜態 IP 位址的範例:

sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1
  • ip addr add: 為網路介面指派 IP 位址。
  • ip route add:設定預設閘道。

注意:這些變更都是暫時的,重新啟動後會遺失。持續性設定請使用 Netplan。


4. 管理網路服務

Ubuntu 使用systemd-networkd作為伺服器環境的預設網路服務。有效管理此服務對於確保穩定的網路連線至關重要。

檢查網路服務的狀態

要檢查網路服務的狀態,請使用下列命令:

sudo systemctl status systemd-networkd

這將顯示目前狀態以及與systemd-networkd服務相關的任何錯誤。

重新啟動網路服務

如果在變更設定後需要重新啟動網路服務:

sudo systemctl restart systemd-networkd

啟用或停用網路服務

要使網路服務在啟動時自動啟動,請啟用它:

sudo systemctl enable systemd-networkd

要停用網路服務:

sudo systemctl disable systemd-networkd

使用 NetworkManager(選用)

如果你使用的是NetworkManager而不是systemd-networkd,可以按如下方式管理該服務:

  • 檢查狀態:
sudo systemctl status NetworkManager
  • 重新啟動服務:
sudo systemctl restart NetworkManager
  • 啟用或停用 NetworkManager:
sudo systemctl enable NetworkManager 
sudo systemctl disable NetworkManager

5. Netplan 中的已知問題和警告

在 Ubuntu 22.04 伺服器上使用 Netplan 設定靜態 IP 時,你可能會遇到下列警告:

警告:Cannot call Open vSwitch: ovsdb-server.service is not running

出現此警告是因為 Netplan 嘗試偵測 Open vSwitch,這是一種常用於雲端環境和虛擬化環境的虛擬網路交換器。如果未安裝 Open vSwitch,Netplan 會產生此警告。

解決警告

如果你不使用 Open vSwitch,可以安全地忽略此警告。但是,要消除它,可以安裝openvswitch-switch-dpdk軟體套件,它提供 Open vSwitch 所需的元件。

執行下列命令:

sudo apt install openvswitch-switch-dpdk

安裝後,Netplan 將偵測到 Open vSwitch 的存在並停止產生警告。

已知錯誤參考

此問題已正式報告為 Netplan 中的錯誤。
https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/2041727


6. 網路管理命令列工具

Ubuntu 提供了多種用於管理和疑難排解網路設定的工具。以下是一些最常用的工具:

6.1 ip 命令

ip命令取代了較舊的ifconfig工具,功能更強大、更靈活。

  • 檢視網路介面: ip a
  • 檢查路由: ip route
  • 啟用/停用介面:
sudo ip link set eth0 up 
sudo ip link set eth0 down

6.2 ping 命令

ping命令用於測試與另一台主機的連線。

ping google.com

6.3 traceroute 命令

traceroute命令用於識別到達目標的網路路徑。

sudo apt install traceroute
traceroute google.com

6.4 Curl 命令

curl命令用於測試 HTTP 連線。

curl http://example.com


7. 疑難排解常見網路問題

網路問題在伺服器環境中很常見。以下是一些案例和疑難排解步驟:

案例 1:網路介面無法運作

  • 檢查介面的狀態:
ip a
  • 啟用介面:
sudo ip link set eth0 up

    案例 2:無法 Ping 外部主機

    1. 驗證預設閘道:ip route
    2. 檢查 DNS 解析:nslookup google.com 如果 DNS 無法解析,請更新 Netplan 設定中的名稱伺服器。

    案例 3:Netplan 設定問題

    1. 驗證 Netplan YAML 檔案:sudo netplan try 這會在不永久套用設定的情況下測試設定。
    2. 重新套用設定:sudo netplan apply

    案例 4:檢查網路服務

    如果網路連線問題仍然存在,請檢查網路服務的狀態:

    sudo systemctl status systemd-networkd
    
    

    如果報告了錯誤,請重新啟動服務:

    sudo systemctl restart systemd-networkd
    
    

    案例 5:防火牆封鎖流量

    • 檢查防火牆規則:
    sudo ufw status
    
    • 允許必要的流量:
    sudo ufw allow 22/tcp sudo ufw allow 80/tcp
    

      案例 6:封包遺失或延遲問題

      • 使用ping檢查封包遺失:
      ping -c 10 google.com
      
      • 使用traceroute識別網路瓶頸:
      traceroute google.com
      

        8. 結論

        網路是 Ubuntu Server 管理員的一項關鍵技能。本指南介紹了設定網路介面、管理網路服務、處理 Netplan 警告、設定靜態 IP、使用命令列工具和疑難排解常見問題的基礎知識。透過掌握 Netplan、ip和ping等工具,你可以高效地管理和解決伺服器上與網路相關的挑戰。

        如需進一步閱讀,請參閱 Ubuntu 官方文件中關於Netplan和網路基礎.

        後續步驟:修補、軟體套件管理和安全性

        在本系列的下一部分中,我們將深入探討 Ubuntu Server 管理的關鍵方面,重點關注修補、軟體套件管理和安全性。這些主題對於維護安全、穩定、高效的伺服器環境至關重要。

        1. 安裝和管理軟體

        掌握在 Ubuntu Server 上使用apt和其他軟體套件管理工具安裝、更新和管理軟體的基礎知識。學習如何高效地管理相依性套件和儲存庫,以確保伺服器配備必要的軟體。

        2. 修補和更新 Ubuntu Server

        • 為什麼修補對於安全和穩定性至關重要。
        • 使用apt更新和升級伺服器。
        • 理解下列命令之間的區別:apt update, apt upgrade和apt full-upgrade.
        • 實現更新自動化,使用unattended-upgrades.
        • 處理核心更新並優雅重新啟動,借助reboot-required.

        3. 保護你的 Ubuntu Server

        • 保護伺服器的實用步驟,包括設定防火牆(ufw)、安全地設定 SSH,以及使用fail2ban等工具來防範攻擊。
        • 學習如何強化伺服器以防範弱點和未授權存取。

        4. Ubuntu Server 上的稽核和記錄

        • 系統稽核簡介和記錄的重要性。
        • 使用auditd追蹤和記錄系統事件。
        • 設定記錄輪替,使用logrotate.
        • 監控/var/log目錄中的關鍵事件,以確保主動進行伺服器管理。

        4 thoughts on “05. Networking Basics for Ubuntu Server: A Comprehensive Guide”

        發表留言