systemd-networkd 的 *.network 配置文件詳解 筆記250323

systemd-networkd 的 *.network 配置文件詳解 筆記250323

查看官方文檔可以用 man systemd.network命令, 或訪問: https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html

名稱

systemd.network — 網絡配置

概要

network.network

描述

一個純 INI 風格的文本文件,用于為匹配的網絡接口編碼網絡配置,由 systemd-networkd(8) 使用。關于語法的一般描述,請參閱 systemd.syntax(7)

主網絡配置文件必須以 .network 為擴展名;其他擴展名會被忽略。網絡配置會在匹配的鏈路(接口)出現時立即生效。

.network 文件從以下系統網絡目錄中讀取:

  • /usr/lib/systemd/network
  • /usr/local/lib/systemd/network [1]
  • 臨時運行時網絡目錄 /run/systemd/network
  • 本地管理網絡目錄 /etc/systemd/network

所有配置文件按字母數字順序統一排序和處理,無論其位于哪個目錄。但同名文件會相互覆蓋。建議每個文件名以小于 “70” 的數字開頭(例如 10-eth0.network)。否則,默認的 .network 文件或由 systemd-network-generator.service(8) 生成的文件可能會優先于用戶配置文件。

  • /etc/ 中的文件優先級最高。
  • /run/ 中的文件會覆蓋 /usr/ 下的同名文件。
  • 特殊情況下,空文件(大小為 0)或指向 /dev/null 的同名符號鏈接會完全禁用該配置文件(即“屏蔽”)。

對于名為 foo.network 的配置文件,可以存在一個名為 foo.network.d/ 的“附加配置”目錄。該目錄中所有以 .conf 結尾的文件會按字母數字順序合并,并在主文件解析后解析。這可用于修改或添加配置,而無需改動主文件。每個附加文件必須包含正確的節頭(如 [Match][Network])。

除了 /etc/systemd/network,附加的 .d 目錄也可放置在 /usr/lib/systemd/network/run/systemd/network 中。優先級規則為:

  • /etc/ 中的附加文件優先于 /run/
  • /run/ 中的優先于 /usr/lib/
  • 所有附加文件優先于主配置文件(無論主文件位置)。

[Match] 節選項

.network 文件包含一個 [Match] 節(用于確定該文件是否適用于某個接口)和一個 [Network] 節(指定接口配置方式)。系統會按字母數字順序應用第一個匹配接口的配置文件,后續文件即使匹配也會被忽略。

注意:若網絡接口設置了 ID_NET_MANAGED_BY= udev 屬性,則任何 .network 文件均不會匹配該接口,除非屬性值為字符串 "io.systemd.Network"。此機制可用于將特定接口排除在 systemd-networkd 管理之外,同時保持 [Match] 節的通用性。ID_NET_MANAGED_BY= 屬性聲明了設備的預期所有者,確保并發的網絡管理實現不會爭奪設備控制權。

當滿足 [Match] 節中所有條件時,配置文件才會匹配接口。[Match] 節未包含有效設置,則該文件會匹配所有接口,此時 systemd-networkd 會發出警告。
提示:為避免警告并明確匹配所有接口,可添加以下內容:

[Match]  
Name=*  

翻譯說明

  1. 術語保留:如 systemd-networkdudev/dev/null 等專有名詞和技術路徑未翻譯。
  2. 格式對齊:保留代碼塊、目錄路徑和命令行示例的原始格式,確保技術細節清晰。
  3. 邏輯強調:使用加粗和分段突出優先級規則、警告和關鍵機制。
  4. 注釋補充:在“[Match] 節選項”中添加注釋,解釋技術行為的實際影響。










另一個解說

以下是 systemd-networkd.network 配置文件的詳細解析,涵蓋核心概念、語法規則及實際應用場景:


1. 配置文件基礎

文件位置與優先級
  • 系統默認配置
    /usr/lib/systemd/network/
    /usr/local/lib/systemd/network/
  • 運行時配置
    /run/systemd/network/(臨時配置,重啟后丟失)
  • 用戶自定義配置
    /etc/systemd/network/(優先級最高)

優先級規則

  1. 文件名格式為 <數字>-<名稱>.network(如 10-wired.network)。
  2. 數字越小優先級越高(如 00-main.network 優先于 20-backup.network)。
  3. /etc/ 目錄下的文件覆蓋 /run//usr/ 的同名文件。
  4. 空文件或指向 /dev/null 的符號鏈接會屏蔽(禁用)對應配置。

2. 核心配置塊

(1) [Match] 節:接口匹配規則

定義哪些網絡接口(鏈路)會應用此配置。
常用匹配條件

[Match]
Name=eth0                # 按接口名稱匹配(支持通配符 eth*)
MACAddress=00:11:22:33:44:55  # 按 MAC 地址匹配
Driver=igb               # 按驅動名稱匹配(如 igb、e1000e)
Type=ether                # 按接口類型匹配(ether, wlan, bridge)
Host=my-server            # 按主機名匹配(需 systemd-hostnamed 服務)
Virtualization=no         # 僅在非虛擬化環境生效

注意事項

  • 所有條件需同時滿足(邏輯與)。
  • 若未定義 [Match] 節或條件無效,配置文件會匹配所有接口,并觸發警告。
  • 排除非托管設備:若接口的 ID_NET_MANAGED_BY udev 屬性未設為 io.systemd.Networksystemd-networkd 將忽略該接口。

(2) [Network] 節:網絡參數配置

定義接口的基礎網絡參數。

常見配置項

[Network]
# 靜態 IP 配置(IPv4/IPv6)
Address=192.168.1.10/24       # IPv4 地址
Address=2001:db8::1/64        # IPv6 地址(可多行)
Gateway=192.168.1.1           # 默認網關
DNS=8.8.8.8 1.1.1.1          # DNS 服務器(空格分隔)
Domains=example.com           # DNS 搜索域# DHCP 配置
DHCP=yes                      # 同時啟用 IPv4/IPv6 DHCP
DHCP=ipv4                     # 僅 IPv4
DHCP=ipv6                     # 僅 IPv6
LinkLocalAddressing=yes       # 啟用鏈路本地地址(如 169.254.x.x)# IPv6 擴展功能
IPv6AcceptRA=yes              # 接受 IPv6 路由器通告(RA)
IPv6PrivacyExtensions=yes     # 啟用 IPv6 隱私擴展(臨時地址)# 綁定其他服務
LLDP=yes                      # 啟用 LLDP 協議(需 systemd-networkd 編譯支持)
BindCarrier=eth1              # 綁定到另一接口的狀態(依賴其網絡連接)

沖突處理

  • DHCP=yes 與靜態 Address= 沖突時,DHCP 優先(需明確注釋靜態配置)。
  • 多 DNS 服務器按順序生效。

(3) [Route] 節:自定義路由規則

定義接口的特定路由表項。

[Route]
Destination=10.0.0.0/8        # 目標網絡(0.0.0.0/0 表示默認路由)
Gateway=192.168.1.1           # 下一跳網關
Metric=100                    # 路由優先級(數值越小優先級越高)
PreferredSource=192.168.1.10  # 指定源 IP
Table=123                     # 自定義路由表(需預先定義)

多路由配置
每個 [Route] 塊定義一條獨立路由,可重復多次。


3. 高級配置場景

(1) VLAN 配置
  1. 創建 VLAN 接口(需 .netdev 文件):
    # /etc/systemd/network/vlan10.netdev
    [NetDev]
    Name=eth0.10
    Kind=vlan[VLAN]
    Id=10
    
  2. 配置 VLAN 接口網絡
    # /etc/systemd/network/10-vlan.network
    [Match]
    Name=eth0.10[Network]
    Address=192.168.10.10/24
    Gateway=192.168.10.1
    
(2) 橋接網絡
  1. 創建橋接接口
    # /etc/systemd/network/br0.netdev
    [NetDev]
    Name=br0
    Kind=bridge
    
  2. 將物理接口加入橋接
    # /etc/systemd/network/br0-slave-eth0.network
    [Match]
    Name=eth0[Network]
    Bridge=br0  # 將此接口綁定到橋接接口 br0
    
  3. 配置橋接接口 IP
    # /etc/systemd/network/br0.network
    [Match]
    Name=br0[Network]
    DHCP=yes
    

4. 調試與驗證

關鍵命令
# 重新加載配置(不重啟服務)
sudo networkctl reload# 查看接口狀態
networkctl status eth0# 檢查所有接口列表
networkctl list# 查看 IP 和路由
ip addr show eth0
ip route show# 實時查看日志
journalctl -u systemd-networkd -f
配置文件語法檢查
systemd-analyze verify /etc/systemd/network/*.network

5. 常見問題排查

  1. 配置未生效

    • 檢查文件名優先級(如 00- 是否被 70- 覆蓋)。
    • 確認 [Match] 條件是否匹配目標接口。
    • 查看日志:journalctl -u systemd-networkd
  2. DHCP 失敗

    • 確保 DHCP=yesDHCP=ipv4 已啟用。
    • 檢查防火墻是否阻塞 DHCP 請求(UDP 67/68 端口)。
  3. 路由沖突

    • 使用 ip route show 確認路由優先級(Metric 值)。
    • 通過 [Route] 塊顯式定義更具體的路由規則。

總結

  • 核心邏輯:通過 [Match] 精確匹配接口,[Network] 定義基礎網絡參數,[Route] 控制高級路由。
  • 優先級管理:文件名和目錄優先級決定配置生效順序。
  • 擴展性:支持 VLAN、橋接、多路由等復雜場景,需結合 .netdev 文件使用。
  • 調試優先:善用 networkctljournalctl 工具快速定位問題。










另一個解說

systemd-networkd.network 配置文件中,[Network][Address] 節中均可能出現 Address 配置項,但它們的用途和上下文有所不同。以下是詳細區別:

1. [Network] 節中的 Address

  • 用途
    這是 主配置節,用于為網絡接口分配 靜態 IP 地址
    支持為同一接口配置 多個 IP 地址(通過重復使用 Address 鍵)。

  • 語法示例

    [Network]
    Address=192.168.1.100/24
    Address=10.0.0.1/8  # 第二個靜態 IP
    Gateway=192.168.1.1
    DNS=8.8.8.8
    
  • 特點

    • 是靜態 IP 配置的主要方式。
    • 可直接定義網關 (Gateway) 和 DNS (DNS) 等全局參數。
    • 支持 IPv4/IPv6 雙棧配置(如 Address=2001:db8::1/64)。

2. [Address] 節中的 Address

  • 用途
    屬于 子配置節,通常與 [DHCPServer][IPv6AcceptRA] 等節配合使用,用于 細化特定 IP 地址的配置
    例如,為 DHCP 分配的地址段設置廣播地址 (Broadcast),或定義 IPv6 無狀態自動配置(SLAAC)的行為。

  • 語法示例

    [Address]
    Address=192.168.1.0/24
    Broadcast=192.168.1.255  # 定義廣播地址[DHCPServer]
    PoolOffset=10
    PoolSize=20
    
  • 特點

    • 提供 更細粒度的控制(如廣播地址、DHCP 地址池)。
    • 常用于定義 DHCP 服務器的地址池范圍。
    • 在 IPv6 配置中,可結合 DuplicateAddressDetection 等參數使用。

關鍵區別總結

配置項位置用途典型場景支持參數
[Network] 節的 Address靜態 IP 主配置為接口分配多個靜態 IPGateway, DNS 等全局參數
[Address] 節的 Address細化特定地址段的配置定義 DHCP 池、IPv6 SLAAC 行為Broadcast, PreferredLifetime

何時使用哪個?

  • 靜態 IP 配置 → 優先使用 [Network] 節的 Address
  • 動態 IP 或細化地址行為 → 使用 [Address] 節配合其他子節(如 [DHCPServer])。

通過靈活組合這些配置,可以實現從簡單靜態 IP 到復雜 DHCP/IPv6 混合網絡的多樣化需求。










另一個解說

systemd-networkd 是一個強大的網絡管理工具,它允許用戶通過配置文件來定義和控制網絡接口的行為。這些配置文件通常位于 /etc/systemd/network/ 目錄下,并以 .network 為擴展名。每個 .network 文件可以包含多個部分,每個部分定義了不同的配置選項。下面是對 .network 配置文件的詳細解釋。

基本結構

.network 文件的基本結構由幾個主要部分組成:

  • [Match]:用于匹配特定網絡設備的標準。
  • [Network]:用于定義網絡接口的網絡設置。
  • 其他可選部分如 [Link], [Address], [Route] 等,根據需要添加。
[Match] 部分

這部分用于指定哪些網絡設備應該應用此配置。常見的選項包括:

  • Name=:指定網絡接口名稱(例如 eth0 或者通配符 eth*)。
  • MACAddress=:基于MAC地址匹配。
  • Driver=:基于驅動程序名稱匹配。
  • Host=:基于主機名匹配。

示例:

[Match]
Name=enp3s0

這表示僅當網絡接口名稱為 enp3s0 時應用該配置。

[Network] 部分

這部分定義了具體的網絡設置。常見的選項有:

  • DHCP=:啟用或禁用DHCP(值可以是 yesno)。
  • Address=:靜態IP地址(格式為 IP/掩碼長度)。
  • Gateway=:默認網關。
  • DNS=:DNS服務器地址。
  • Domains=:搜索域列表。

示例:

[Network]
DHCP=yes

或者對于靜態配置:

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
其他部分

除了上述兩個核心部分外,還有其他部分可以根據需求添加:

  • [Link]:用于設置鏈路層屬性,比如MTU大小等。
  • [Address]:為接口添加額外的IP地址。
  • [Route]:添加路由規則。

使用步驟

  1. 創建配置文件:在 /etc/systemd/network/ 下創建一個新的 .network 文件。
  2. 編輯配置文件:根據你的網絡需求填寫相應的 [Match][Network] 部分。
  3. 啟用服務:確保 systemd-networkd 已經啟用并啟動。
    sudo systemctl enable systemd-networkd
    sudo systemctl start systemd-networkd
    
  4. 重啟服務:如果修改了現有配置文件,需要重啟 systemd-networkd 使更改生效。
    sudo systemctl restart systemd-networkd
    

注意事項

  • 如果系統中同時運行了 NetworkManager 或 Netplan,它們可能會與 systemd-networkd 發生沖突。在這種情況下,你可能需要禁用其他網絡管理工具。
  • 配置文件按照字母順序加載,因此可以通過前綴數字來控制加載順序和優先級。

通過以上步驟和說明,你可以利用 systemd-networkd.network 配置文件靈活地管理和配置Linux系統的網絡環境。希望這些信息對你有所幫助!










另一個解說

systemd-networkdsystemd 系統和服務管理器的一部分,用于管理網絡設備、配置網絡接口等。*.network 配置文件用于定義網絡接口的行為和屬性,以下為你詳細介紹其各部分內容:

文件基礎信息

  • 文件位置:通常存放在 /etc/systemd/network/ 目錄下,文件名可以自定義,但需以 .network 結尾。
  • 文件格式:采用 INI 格式,由多個節(section)構成,每個節以 [節名] 開頭,下面跟著一系列鍵值對。

常見節及其配置項

[Match] 節

此節用于指定哪些網絡接口會應用該配置文件,可依據多種條件匹配網絡接口。

  • Name:按網絡接口名稱匹配。例如:
[Match]
Name=enp0s3

這會讓配置文件應用到名為 enp0s3 的網絡接口。

  • MACAddress:按 MAC 地址匹配。示例:
[Match]
MACAddress=00:11:22:33:44:55
  • Driver:按網絡驅動程序名稱匹配。示例:
[Match]
Driver=e1000
[Network] 節

用于設置網絡的通用配置。

  • DHCP:決定是否啟用 DHCP,值可以是 yesnoipv4ipv6。示例:
[Network]
DHCP=yes
  • Address:設置靜態 IP 地址和子網掩碼。可多次使用以設置多個地址。示例:
[Network]
Address=192.168.1.100/24
Address=2001:db8::1/64
  • Gateway:設置默認網關地址。示例:
[Network]
Gateway=192.168.1.1
  • DNS:設置 DNS 服務器地址。可多次使用以設置多個 DNS 服務器。示例:
[Network]
DNS=8.8.8.8
DNS=8.8.4.4
  • Domains:設置搜索域。示例:
[Network]
Domains=example.com
[Address] 節

用于詳細設置 IP 地址,可存在多個 [Address] 節以設置多個 IP 地址。

  • Address:設置 IP 地址和子網掩碼。示例:
[Address]
Address=192.168.1.101/24
  • Label:設置地址標簽。示例:
[Address]
Address=192.168.1.101/24
Label=secondary
[Route] 節

用于設置路由規則。

  • Destination:設置目標網絡地址。示例:
[Route]
Destination=192.168.2.0/24
  • Gateway:設置網關地址。示例:
[Route]
Destination=192.168.2.0/24
Gateway=192.168.1.1
  • Metric:設置路由度量值。示例:
[Route]
Destination=192.168.2.0/24
Gateway=192.168.1.1
Metric=100
[Link] 節

用于設置網絡接口的通用屬性。

  • MTU:設置最大傳輸單元。示例:
[Link]
MTU=9000
  • MACAddress:設置網絡接口的 MAC 地址。示例:
[Link]
MACAddress=00:11:22:33:44:55

配置生效與檢查

  • 配置生效:修改配置文件后,需重新加載 systemd-networkd 服務使配置生效,命令如下:
sudo systemctl restart systemd-networkd
  • 檢查狀態:可使用以下命令檢查 systemd-networkd 服務狀態:
sudo systemctl status systemd-networkd
  • 查看網絡配置:使用 networkctl 命令查看網絡接口的配置信息:
sudo networkctl status

完整示例

下面是一個完整的 .network 文件示例,為 enp0s3 網絡接口設置靜態 IP 地址:

[Match]
Name=enp0s3[Network]
DHCP=no
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8[Address]
Address=192.168.1.101/24[Route]
Destination=192.168.2.0/24
Gateway=192.168.1.1[Link]
MTU=9000

通過上述配置,enp0s3 網絡接口會使用靜態 IP 地址 192.168.1.100192.168.1.101,網關為 192.168.1.1,DNS 服務器為 8.8.8.8,同時設置了一條發往 192.168.2.0/24 網絡的路由規則,并且將 MTU 設置為 9000。










另一個解說

以下是對 systemd-networkd 的 *.network 配置文件的詳細解釋:

配置文件結構

*.network 配置文件主要由以下幾個部分組成:

[Match] 小節

用于指定該配置文件適用的網絡接口,通過匹配條件來確定哪些接口會應用該配置文件中的設置。常見的匹配條件包括:

  • Name:指定接口名稱,可以使用通配符,如 eth* 表示匹配所有以 eth 開頭的接口。
  • MACAddress:指定接口的 MAC 地址。
  • Driver:指定接口的驅動程序名稱。
  • Type:指定接口類型,如 ether(以太網)、wifi 等。

示例:

[Match]
Name=eth0

該配置表示該配置文件僅適用于名稱為 eth0 的網絡接口。

[Network] 小節

包含具體的網絡配置參數,用于定義接口的網絡設置。常見的配置項包括:

  • Address:設置靜態 IP 地址,格式為 IP地址/子網掩碼長度,如 192.168.0.2/24
  • Gateway:指定網關地址,如 192.168.0.1
  • DNS:設置 DNS 服務器地址,可多次使用以設置多個 DNS 服務器。
  • DHCP:啟用 DHCP,可設置為 yesipv4ipv6,如 DHCP=yes 表示同時啟用 IPv4 和 IPv6 的 DHCP。
  • Domains:設置搜索域,可多次使用以設置多個搜索域。
  • MTUBytes:設置最大傳輸單元(MTU)的大小。

示例:

[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=192.168.0.1
DNS=8.8.8.8
[Route] 小節

用于配置靜態路由,可以定義多條路由規則。常見的配置項包括:

  • Destination:目標網絡地址,格式為 IP地址/子網掩碼長度
  • Gateway:指定該路由的網關地址。
  • Via:指定該路由經過的中間節點(可選)。
  • Metric:設置該路由的優先級,數值越小優先級越高。

示例:

[Route]
Destination=10.0.0.0/8
Gateway=192.168.0.1
Metric=100
[DHCP] 小節

用于配置 DHCP 客戶端的行為,當接口通過 DHCP 獲取 IP 地址時使用。常見的配置項包括:

  • UseDNS:是否使用 DHCP 服務器提供的 DNS 信息,可設置為 yesno
  • UseDomains:是否使用 DHCP 服務器提供的搜索域信息,可設置為 yesno
  • SendHostname:是否向 DHCP 服務器發送主機名,可設置為 yesno

示例:

[DHCP]
UseDNS=yes
UseDomains=yes
SendHostname=yes
[Bridge] 小節

當接口作為橋接設備時使用,用于配置橋接相關的參數。常見的配置項包括:

  • STP:是否啟用生成樹協議(Spanning Tree Protocol),可設置為 yesno
  • ForwardDelaySec:設置生成樹協議的轉發延遲時間,單位為秒。

示例:

[Bridge]
STP=yes
ForwardDelaySec=15

配置文件示例

靜態 IP 配置
[Match]
Name=eth0[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=192.168.0.1
DNS=8.8.8.8
DHCP 配置
[Match]
Name=eth0[Network]
DHCP=yes
多塊網卡配置(使用通配符)
[Match]
Name=eth*[Network]
DHCP=yes
靜態路由配置
[Match]
Name=eth0[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1[Route]
Destination=10.0.0.0/8
Gateway=192.168.0.1
Metric=100

注意事項

  • 配置文件優先級/etc/systemd/network/ 目錄中的配置文件優先級高于 /usr/lib/systemd/network/ 中的同名文件。如果存在同名文件,/etc/systemd/network/ 中的配置會覆蓋 /usr/lib/systemd/network/ 中的配置。
  • 應用配置:在修改或創建配置文件后,需要重啟 systemd-networkd 服務以使配置生效。可以使用以下命令:
    systemctl restart systemd-networkd
    
  • 配置沖突:如果在一個配置文件中使用通配符匹配了多塊網卡,但其中某些網卡需要特殊的配置,可能會導致配置沖突。因此,需要仔細規劃網絡配置,確保每塊網卡都能正確應用所需的設置。

通過以上詳細的解釋和示例,可以全面了解 systemd-networkd 的 *.network 配置文件的結構和使用方法,從而根據實際需求靈活配置網絡接口。










另一個解說

以下是對systemd-networkd中.network配置文件的詳細解析,按功能模塊分層說明:

. n e t w o r k 文件路徑: / e t c / s y s t e m d / n e t w o r k / ? . n e t w o r k 或 / u s r / l i b / s y s t e m d / n e t w o r k / ? . n e t w o r k .network文件路徑:/etc/systemd/network/*.network \quad 或 \quad /usr/lib/systemd/network/*.network .network文件路徑:/etc/systemd/network/?.network/usr/lib/systemd/network/?.network


一、核心配置節

1. [Match] 節

匹配網絡接口的條件:

[Match]
Name=en*             # 匹配接口名以"en"開頭(如enp0s3)
MACAddress=00:11:22:33:44:55  # 按MAC地址匹配
Driver=igb           # 匹配驅動類型
Type=ether           # 接口類型(ether/wireless等)

*支持通配符(和?),多條件時為"與"關系


2. [Link] 節

配置鏈路層參數:

[Link]
MTUBytes=1500        # 設置MTU值
MACAddress=aa:bb:cc:dd:ee:ff  # 強制修改MAC地址
WakeOnLan=magic      # 啟用魔術包喚醒
MACAddressPolicy=persistent  # MAC地址生成策略

3. [Network] 節

定義網絡層配置:

[Network]
DHCP=yes             # 啟用DHCP(yes/ipv4/ipv6)
DNS=8.8.8.8 2001:4860::8888  # 指定DNS服務器
Domains=example.com  # 搜索域
Address=192.168.1.10/24  # 靜態IP(需配合[Address]節)
Gateway=192.168.1.1  # 默認網關
IPv6PrivacyExtensions=yes  # 啟用臨時IPv6地址

二、擴展配置節

4. [Address] 節

靜態IP配置(可多實例):

[Address]
Address=192.168.1.10/24
Peer=10.0.0.1/32     # 點對點地址
Broadcast=192.168.1.255

5. [Route] 節

自定義路由配置:

[Route]
Gateway=10.0.0.1
Destination=192.168.2.0/24
Metric=1024          # 路由優先級

6. [DHCP] 節

精細控制DHCP行為:

[DHCP]
UseDNS=yes           # 是否接受DNS配置
UseMTU=yes           # 是否應用DHCP提供的MTU
RouteMetric=100      # 路由度量值
UseTimezone=no       # 是否接受時區信息

三、IPv6專用配置

7. [IPv6AcceptRA] 節
[IPv6AcceptRA]
UseDNS=yes           # 是否使用RA提供的DNS
UseDomains=yes       # 是否應用域名

四、配置示例

靜態IP配置
[Match]
Name=enp0s3[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DHCP配置
[Match]
Name=en*[Network]
DHCP=ipv4

五、重要注意事項

  1. 優先級規則
    /etc/systemd/network/ 中的配置會覆蓋 /usr/lib/systemd/network/
    文件按字母順序加載,后加載的會覆蓋先前的同名配置

  2. 生效方法

    sudo systemctl restart systemd-networkd
    
  3. 調試命令

    networkctl status      # 查看接口狀態
    journalctl -u systemd-networkd  # 查看日志
    

注意:修改配置后需重啟 s y s t e m d ? n e t w o r k d 服務才能生效 注意:修改配置后需重啟systemd-networkd服務才能生效 注意:修改配置后需重啟systemd?networkd服務才能生效










另一個解說

以下是對 systemd-networkd*.network 配置文件的全面詳解,涵蓋其核心功能、配置語法、高級場景及調試方法:


一、配置文件基礎

1. 文件作用

? 核心功能:定義網絡接口的匹配規則、IP 地址分配(靜態/DHCP)、路由、DNS、VLAN、綁定接口等。
? 適用場景:服務器、容器、虛擬機、復雜網絡拓撲(如多網卡、VPN、隧道)。

2. 文件位置與優先級

? 路徑
? /etc/systemd/network/:管理員手動配置(持久化,優先級最高)。
? /run/systemd/network/:臨時配置(重啟失效,優先級次之)。
? /usr/lib/systemd/network/:系統默認配置(避免修改,優先級最低)。
? /usr/local/lib/systemd/network/:系統默認配置(避免修改,優先級最低)。
? 命名規則<優先級>-<描述>.network(如 10-wired.network),數字越小優先級越高

3. 文件結構

INI 格式,分段(Section)管理,支持以下關鍵塊:
? [Match]:匹配接口的條件。
? [Link]:物理/虛擬接口參數(如 MAC 地址、MTU)。
? [Network]:全局網絡配置(IP、DNS、DHCP)。
? [Address]:精細 IP 地址參數(如廣播地址、點對點)。
? [Route]:自定義路由規則。
? [DHCP]:DHCP 客戶端行為控制。
? [IPv6AcceptRA]:IPv6 路由器通告設置。


二、核心配置塊詳解

1. [Match] 塊:接口匹配規則

定義哪些接口應用此配置,支持多條件組合(邏輯 AND)。

參數示例說明
Name=Name=enp0s3按接口名匹配(支持通配符 *?
MACAddress=MACAddress=00:11:22:33:44:55按 MAC 地址匹配
Driver=Driver=e1000e按網卡驅動類型匹配
Type=Type=ether按接口類型(如 etherwlan
Property=Property=ID_VENDOR_ID=8086按 udev 屬性匹配(支持復雜邏輯)
SSID=SSID=MyWiFi按無線網絡 SSID 匹配(支持通配符)

示例

[Match]
Name=enp0s3
MACAddress=00:11:22:33:44:55
Driver=rtl8169

2. [Link] 塊:接口物理層參數

控制接口的物理特性(如 MAC 地址、MTU)。

參數示例說明
MACAddress=MACAddress=00:11:22:33:44:aa強制設置接口 MAC 地址
MTUBytes=MTUBytes=1500設置最大傳輸單元(MTU)
Promiscuous=Promiscuous=yes啟用混雜模式(捕獲所有流量)
RequiredForOnline=RequiredForOnline=yes接口在線狀態是否影響系統網絡就緒

示例

[Link]
MACAddress=00:11:22:33:44:aa
MTUBytes=9000  # 支持巨型幀(Jumbo Frame)

3. [Network] 塊:全局網絡配置

定義接口的基礎網絡參數。

參數示例說明
DHCP=DHCP=ipv4啟用 DHCP(yes/no/ipv4/ipv6
DNS=DNS=8.8.8.8 1.1.1.1指定 DNS 服務器(空格分隔)
Domains=Domains=example.com設置 DNS 搜索域
Address=Address=192.168.1.10/24靜態 IP 地址(可重復定義多個地址)
IPv6PrivacyExtensions=IPv6PrivacyExtensions=yes啟用 IPv6 隱私擴展(隨機化地址)

示例

[Network]
DHCP=no
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
Domains=example.com

4. [Address] 塊:高級 IP 配置

為接口添加額外 IP 或精細控制。

參數示例說明
Address=Address=10.0.0.1/24IP 地址及子網掩碼
Peer=Peer=10.0.0.2/24點對點鏈路遠端地址(如 VPN)
Broadcast=Broadcast=192.168.1.255手動覆蓋默認廣播地址
PreferredLifetime=PreferredLifetime=1hIPv6 地址首選生命周期

示例

[Address]
Address=192.168.1.10/24
Broadcast=192.168.1.255[Address]
Address=10.0.0.1/24
Peer=10.0.0.2/24

5. [Route] 塊:自定義路由

定義靜態路由規則(支持 IPv4/IPv6)。

參數示例說明
Destination=Destination=0.0.0.0/0目標子網(默認路由)
Gateway=Gateway=192.168.1.1下一跳網關地址
Metric=Metric=100路由優先級(數值越小優先級越高)
Type=Type=blackhole特殊路由類型(如黑洞路由)

示例

[Route]
Destination=10.8.0.0/24
Gateway=192.168.1.2
Metric=200

6. [DHCP] 塊:DHCP 客戶端行為

控制 DHCP 客戶端細節(需在 [Network] 中啟用 DHCP)。

參數示例說明
UseDNS=UseDNS=no是否使用 DHCP 提供的 DNS
UseDomains=UseDomains=yes是否使用 DHCP 提供的搜索域
RouteMetric=RouteMetric=100為 DHCP 路由設置躍點數
ClientIdentifier=ClientIdentifier=macDHCP 客戶端標識(macduid

示例

[DHCP]
UseDNS=no
RouteMetric=100

三、高級配置場景

1. VLAN 配置
# 創建 VLAN 接口 enp0s3.100
[Match]
Name=enp0s3[Network]
VLAN=enp0s3.100# VLAN 子接口配置
[Match]
Name=enp0s3.100[Network]
Address=10.0.100.2/24
Gateway=10.0.100.1
2. 綁定接口(Bonding)
# 創建綁定接口 bond0
[Match]
Name=bond0[Network]
Bond=slave1 slave2  # 指定從屬接口# 從屬接口配置
[Match]
Name=slave1[Network]
Bond=bond0
3. IPv6 隱私擴展
[Network]
IPv6PrivacyExtensions=yes

四、調試與驗證

1. 檢查接口狀態
networkctl status enp0s3  # 查看接口詳細狀態
networkctl list           # 列出所有接口
2. 查看日志
journalctl -u systemd-networkd --since "5 minutes ago"  # 查看近期日志
journalctl -u systemd-networkd -f                       # 實時跟蹤日志
3. 手動觸發重載
systemctl restart systemd-networkd  # 重啟服務使配置生效

五、常見問題與解決方案

1. 配置未生效

? 原因:文件名優先級錯誤、語法錯誤、接口未匹配。
? 解決

networkctl status <接口名>      # 檢查配置是否加載
systemd-analyze verify *.network  # 驗證語法
2. DHCP 獲取失敗

? 原因:防火墻阻塞、DHCP 服務未響應。
? 解決

[DHCP]
UseDNS=no           # 禁用 DHCP DNS(排除干擾)
RouteMetric=100     # 調整路由優先級
3. 多網卡沖突

? 解決:通過 [Match] 精確匹配接口,或調整文件名優先級。


六、最佳實踐

  1. 命名規范:文件名以數字開頭(如 10-wired.network),確保優先級。
  2. 避免手動修改:若使用 NetPlan,優先通過 YAML 配置。
  3. 測試配置:使用 netplan try 或備份文件后再修改。
  4. 日志監控:實時跟蹤日志快速定位問題。

通過靈活組合上述配置塊,可高效管理從簡單家用網絡到企業級復雜拓撲的網絡環境。










systemd.network 部分文檔翻譯

Index · Directives

索引 · 指令

systemd devel

systemd 開發

Name

名稱

systemd.network - 網絡配置

Synopsis

概要

network.network

Description

描述

一種純 INI 風格的文本文件,用于編碼與匹配網絡接口相關的網絡配置,供 systemd-networkd(8) 使用。語法的一般描述請參見 systemd.syntax(7)

主網絡文件必須使用 .network 擴展名;其他擴展名將被忽略。當鏈接出現時,網絡配置會被應用到對應的鏈接上。

.network 文件從位于系統網絡目錄 /usr/lib/systemd/network/usr/local/lib/systemd/network [1]、易失的運行時網絡目錄 /run/systemd/network 以及本地管理網絡目錄 /etc/systemd/network 中讀取。無論文件位于哪個目錄,所有配置文件會按字母數字順序排序并處理。然而,文件名相同的文件會互相覆蓋。建議每個文件名以小于 “70” 的數字開頭(例如 10-eth0.network)。否則,默認的 .network 文件或由 systemd-network-generator.service(8) 生成的文件可能會優先于用戶配置的文件。/etc/ 中的文件具有最高優先級,/run/ 中的文件會覆蓋同名但位于 /usr/ 下的文件。如有需要,這可以用于用本地文件覆蓋系統提供的配置文件。特殊情況下,空文件(文件大小為 0)或指向 /dev/null 的同名符號鏈接會完全禁用該配置文件(即 “masked”)。

與網絡文件 foo.network 一起,可能存在一個 “drop-in” 目錄 foo.network.d/。該目錄中所有以 .conf 結尾的文件將按字母數字順序合并,并在主文件本身解析后解析。這對于在不修改主配置文件的情況下更改或添加配置設置非常有用。

除了 /etc/systemd/network 外,drop-in “.d” 目錄也可以放在 /usr/lib/systemd/network/run/systemd/network 目錄中。/etc/ 下的 drop-in 文件優先于 /run/ 下的文件,而后者又優先于 /usr/lib/ 下的文件。無論位于何處,這些 drop-in 文件都優先于主網絡文件。


[Match] 段選項

網絡文件包含一個 [Match] 段,用于確定給定的網絡文件是否適用于給定的接口;以及一個 [Network] 段,指定應如何配置接口。按字母數字順序排列的第一個匹配給定接口的網絡文件會被應用,所有后續文件即使匹配也會被忽略。

注意:任何設置了 ID_NET_MANAGED_BY= udev 屬性的網絡接口將不會被任何 .network 文件匹配——除非該屬性的值是字符串 "io.systemd.Network"——即使 [Match] 段中的其他條件匹配。這可以用于將特定網絡接口排除在 systemd-networkd 的管理之外,同時保持 [Match] 段的通用性。ID_NET_MANAGED_BY= 屬性聲明了設備的預期所有權,并確保并發的網絡管理實現不會爭相對特定設備進行管理。

[Match] 段中的所有條件都滿足時,網絡文件被稱為與網絡接口匹配。如果網絡文件的 [Match] 段中沒有有效設置,則文件將匹配所有接口,并且 systemd-networkd 會發出警告。提示:為避免警告并明確匹配所有接口,可添加以下內容:

Name=*

以下鍵值被接受:

MACAddress=

硬件地址的空白分隔列表。可接受的格式包括:
? 冒號分隔的十六進制(例如 "12:34:56:78:90:ab"
? 連字符分隔的十六進制(例如 "12-34-56-78-90-ab"
? 點分隔的十六進制(例如 "1234.5678.90ab"
? IPv4 地址格式(例如 "127.0.0.1"
? IPv6 地址格式(例如 "2001:db8::8a2e:370:7334"

每個 MAC 地址的總長度必須為 4(IPv4 隧道)、6(以太網)、16(IPv6 隧道)或 20(InfiniBand)。此選項可多次出現,此時列表會被合并。若賦值為空字符串,則重置先前定義的硬件地址列表。默認為未設置。

(添加于版本 211)

PermanentMACAddress=

硬件永久地址的空白分隔列表。MACAddress= 匹配設備的當前 MAC 地址,而此選項匹配設備的永久 MAC 地址(可能與當前不同)。使用全冒號、連字符或點分隔的十六進制,或 IPv4/IPv6 地址格式。此選項可多次出現,此時列表會被合并。若賦值為空字符串,則重置先前定義的硬件地址列表。默認為未設置。

(添加于版本 245)

Path=

匹配持久路徑的 shell 風格通配符列表,由 udev 屬性 ID_PATH 暴露。

(添加于版本 211)

Driver=

綁定到設備的當前驅動的 shell 風格通配符列表,由父設備的 udev 屬性 ID_NET_DRIVER 或設備本身的 ethtool -i 暴露。若列表前綴為 "!",則測試取反。

(添加于版本 211)

Type=

設備類型的 shell 風格通配符列表,由 networkctl list 暴露。有效值包括 "ether""loopback""wlan""wwan"。若列表前綴為 "!",則測試取反。

(添加于版本 211)

Kind=

設備類型的 shell 風格通配符列表,由 networkctl status INTERFACEip -d link show INTERFACE 暴露。有效值包括 "bond""bridge""gre""tun""veth"。若列表前綴為 "!",則測試取反。

(添加于版本 251)

Property=

帶值的 udev 屬性名的空白分隔列表。多個屬性時,測試結果為邏輯與。若列表前綴為 "!",則測試取反。值包含空格時需用引號包裹,引號用 "\" 轉義。

示例:

Property=ID_MODEL_ID=9999 "ID_VENDOR_FROM_DATABASE=vendor name" "KEY=with \"quotation\""

(添加于版本 243)

Name=

設備名稱或替代名稱的 shell 風格通配符列表,由 udev 屬性 "INTERFACE" 暴露。若列表前綴為 "!",則測試取反。

(添加于版本 211)

WLANInterfaceType=

無線網絡類型的空白分隔列表。支持值:"ad-hoc""station""ap" 等。若列表前綴為 "!",則測試取反。

(添加于版本 244)

SSID=

當前連接的無線 LAN 的 SSID 的 shell 風格通配符列表。若列表前綴為 "!",則測試取反。

(添加于版本 244)

BSSID=

當前連接的無線 LAN 的硬件地址列表。格式同 MACAddress=

(添加于版本 244)

Host=

匹配主機名或機器 ID。參見 systemd.unit(5) 中的 ConditionHost=

(添加于版本 211)

Virtualization=

檢查是否在虛擬化環境中運行。參見 systemd.unit(5) 中的 ConditionVirtualization=

(添加于版本 211)

KernelCommandLine=

檢查特定內核命令行選項。參見 systemd.unit(5) 中的 ConditionKernelCommandLine=

(添加于版本 211)

KernelVersion=

檢查內核版本。參見 systemd.unit(5) 中的 ConditionKernelVersion=

(添加于版本 237)

Credential=

檢查是否傳遞了指定憑證給 systemd-udevd.service。參見系統和服務憑證。

(添加于版本 252)

Architecture=

檢查系統架構。參見 systemd.unit(5) 中的 ConditionArchitecture=

(添加于版本 211)

Firmware=

檢查固件信息。參見 systemd.unit(5) 中的 ConditionFirmware=

(添加于版本 249)



[Link] 段配置選項

以下是 [Link] 段支持的配置參數及詳細說明:


MACAddress=

指定設備的硬件地址(MAC 地址)。
示例

[Link]  
MACAddress=00:11:22:33:44:55  

自版本 218 起添加。


MTUBytes=

設置設備的 最大傳輸單元(MTU),單位為字節。支持后綴 KMG(以 1024 為基數)。
注意

  • 如果接口啟用 IPv6 且 MTU 低于 1280(IPv6 的最小 MTU),系統會自動將其調整為 1280。
    示例
[Link]  
MTUBytes=1500  

自版本 218 起添加。


ARP=

控制是否啟用 IPv4 ARP(地址解析協議)和 IPv6 NDP(鄰居發現協議)。

  • 類型:布爾值(true/false)。
  • 默認:未設置(遵循內核默認行為)。
    用途
  • 在創建多個 MACVLAN 或 VLAN 虛擬接口時,禁用 ARP 可防止底層物理接口參與網絡通信。

Multicast=

啟用或禁用設備的組播功能。

  • 類型:布爾值。
  • 默認:未設置。
    自版本 239 起添加。

AllMulticast=

控制設備是否接收所有組播包(常用于組播路由場景)。

  • 類型:布爾值。
  • 默認:未設置。
    自版本 239 起添加。

Promiscuous=

啟用或禁用接口的 混雜模式(接收所有網絡流量)。

  • 類型:布爾值。
  • 默認:未設置。
    特殊場景
  • 若在 MACVLAN/MACVTAP 的底層鏈接中設置為 false,虛擬接口將以 nopromisc 標志創建。
    自版本 248 起添加。

Unmanaged=

控制是否由 systemd-networkd 管理該接口。

  • 類型:布爾值(yes/no)。
  • 默認no
    用途
  • 設置為 yes 時,systemd-networkd 不會嘗試配置或啟用該接口,避免與其他應用程序管理的接口沖突。
    自版本 233 起添加。

Group=

將接口加入指定組(類似交換機中的端口組),便于批量操作。

  • 類型:無符號整數(范圍 0–2147483647)。
  • 默認:未設置。
    自版本 246 起添加。

RequiredForOnline=

定義接口是否被視為系統在線狀態的必要條件。

  • 類型:布爾值、最小操作狀態(如 carrier)或狀態范圍(如 degraded:routable)。
  • 默認
    • 若未設置 ActivationPolicy= 或設置為 up/always-up/bound,默認為 yes
    • ActivationPolicy= 設為 manual/down,默認為 no
      特殊邏輯
  • 對于 CAN 設備,布爾值 yes 對應 carrier 狀態;
  • 對于主設備(如網橋或綁定接口),對應 degraded-carrier
  • 對于其他接口,對應 degraded
    自版本 236/256 起添加。

RequiredFamilyForOnline=

指定在線狀態所需的地址族(IPv4/IPv6)。

  • 可選值:ipv4ipv6bothany
  • 默認no(僅在 RequiredForOnline=no 時生效)。
    自版本 249 起添加。

ActivationPolicy=

控制 systemd-networkd 如何管理接口的 管理狀態(即 IFF_UP 標志)。

  • 可選值:
    • up(默認):接口配置時自動啟用。
    • always-up:始終強制啟用(即使接口狀態變化)。
    • manual:由管理員手動控制啟用/禁用。
    • always-down:始終禁用。
    • bound:與 BindCarrier= 配合使用。
      注意
  • 設置為 always-up 時,IgnoreCarrierLoss= 會被強制設為 true,以避免因物理連接中斷導致配置失敗。
    自版本 248 起添加。

[Network] 段選項

[Network] 段接受以下鍵值配置:

Description=
  • 描述:設備的描述信息,僅用于顯示用途。
  • 版本:v211 新增。

DHCP=
  • 描述:啟用 DHCPv4 和/或 DHCPv6 客戶端支持。可選值:yesnoipv4ipv6,默認為 no
  • 注意
    • 若啟用了 IPv6 的路由通告接收(IPv6AcceptRA=),無論此參數如何設置,DHCPv6 默認會被觸發。
    • 顯式啟用 DHCPv6 時,客戶端會按 [DHCPv6] 段的 WithoutRA= 模式運行,無論鏈路上是否存在路由器。
    • 默認不將 DHCP 提供的域名用于解析,需通過 UseDomains= 配置。
  • 版本:v211 新增。

DHCPServer=
  • 描述:啟用 DHCPv4 服務器(布爾值,默認為 no)。更多配置在 [DHCPServer] 段。
  • 注意:需配合 RelayTarget=PersistLeases=no 才能在存儲就緒后自動啟動。
  • 版本:v215 新增。

LinkLocalAddressing=
  • 描述:啟用鏈路本地地址自動配置。可選值:布爾值、ipv4ipv6
    • yesipv6:配置 IPv6 鏈路本地地址。
    • yesipv4:在 DHCPv4 失敗后配置 IPv4 鏈路本地地址。
  • 默認:若啟用 KeepMaster=Bridge= 或使用 passthru 模式的 MACVLAN/MACVTAP,則為 no;否則為 ipv6
  • 版本:v219 新增。

IPv6LinkLocalAddressGenerationMode=
  • 描述:指定 IPv6 鏈路本地地址生成模式。可選值:eui64nonestable-privacyrandom
    • 默認:若指定了 IPv6StableSecretAddress=,則為 stable-privacy;否則為 eui64
  • 版本:v246 新增。

IPv6StableSecretAddress=
  • 描述:指定用于生成 IPv6 鏈路本地地址的穩定密鑰地址。若設置此參數且未指定 IPv6LinkLocalAddressGenerationMode=,則隱式啟用 stable-privacy 模式。
  • 版本:v249 新增。

IPv4LLStartAddress=
  • 描述:指定嘗試的第一個 IPv4 鏈路本地地址(如 169.254.1.2)。若未設置,自動選擇隨機地址。
  • 版本:v252 新增。

IPv4LLRoute=
  • 描述:是否為非 IPv4LL 主機設置與僅 IPv4LL 主機通信的路由(布爾值,默認為 false)。
  • 版本:v216 新增。

DefaultRouteOnDevice=
  • 描述:在接口上綁定 IPv4 默認路由(布爾值,默認為 false)。適用于點對點接口。
  • 示例
    [Route]
    Gateway=0.0.0.0
    Table=1234
    
  • 版本:v243 新增。

LLMNR=
  • 描述:啟用鏈路本地多播名稱解析(LLMNR)。可選值:布爾值或 resolve(僅解析不注冊)。默認 true
  • 版本:v216 新增。

MulticastDNS=
  • 描述:啟用多播 DNS(mDNS)。可選值:布爾值或 resolve(僅解析不注冊)。默認 false
  • 版本:v229 新增。

DNSOverTLS=
  • 描述:啟用 DNS-over-TLS。可選值:布爾值或 opportunistic(兼容非 TLS 服務器)。默認繼承全局配置。
  • 版本:v239 新增。

DNSSEC=
  • 描述:啟用 DNSSEC 驗證。可選值:布爾值或 allow-downgrade(兼容非 DNSSEC 網絡)。默認繼承全局配置。
  • 版本:v229 新增。

LLDP=
  • 描述:控制以太網 LLDP 數據包接收。可選值:布爾值或 routers-only(僅收集路由器信息)。默認 routers-only
  • 版本:v219 新增。

EmitLLDP=
  • 描述:控制 LLDP 數據包發送。可選值:布爾值或特定橋接模式。默認 false
  • 版本:v230 新增。

BindCarrier=
  • 描述:綁定到指定接口的載波狀態。若所有綁定接口無載波,則當前接口關閉。
  • 版本:v220 新增。

Address=
  • 描述:靜態 IPv4/IPv6 地址(格式:地址/前綴長度)。可多次指定。
    • 特殊值 0.0.0.0:: 會從系統池自動分配地址范圍。
    • IPv4 鏈路本地地址(169.254.0.0/16)默認啟用地址沖突檢測(RFC 5227),需通過 [Address] 段禁用。
  • 版本:v211 新增。

DNS=
  • 描述:DNS 服務器地址(支持端口、接口和 SNI)。示例:
    • IPv4:111.222.333.444:9953%eth0#example.com
    • IPv6:[1111:2222::3333]:9953%eth0#example.com
  • 版本:v211 新增。

Domains=
  • 描述:空格分隔的域名列表,指定通過此接口 DNS 解析的域。
    • ~ 前綴表示“僅路由域”(如 ~. 表示所有未匹配的查詢路由到此接口)。
  • 版本:v216 新增。

NTP=
  • 描述:NTP 服務器地址(IP 或主機名)。可多次指定。
  • 版本:v216 新增。

IPMasquerade=
  • 描述:啟用 IP 偽裝(NAT)。可選值:ipv4ipv6bothno。默認 no
    • 啟用時會自動設置 IPv4Forwarding=IPv6Forwarding=
  • 版本:v219 新增。

IPv6PrivacyExtensions=
  • 描述:啟用 IPv6 隱私擴展(RFC 4941)。可選值:布爾值、prefer-publickernel。默認繼承全局配置。
  • 版本:v222 新增。

IPv6AcceptRA=
  • 描述:是否接受 IPv6 路由通告(RA)。默認對橋接設備或啟用 IPv6 轉發時為 false
  • 注意:內核的 RA 實現被禁用,使用用戶空間實現。
  • 版本:v231 新增。

[Address] 段選項

[Address] 段用于配置單個地址,支持以下鍵值:

Address=
  • 描述:必填,格式同 [Network] 段。
  • 版本:v211 新增。

Peer=
  • 描述:點對點連接的對端地址。
  • 版本:v216 新增。

DuplicateAddressDetection=
  • 描述:地址沖突檢測類型。可選值:ipv4ipv6bothnone
    • 默認:IPv4 鏈路本地地址用 ipv4,IPv6 用 ipv6
  • 版本:v232 新增。

NFTSet=
  • 描述:將地址信息集成到 NFT 防火墻集。格式:source:family:table:set
    • 示例:prefix:netdev:filter:eth_ipv4_prefix
  • 版本:v255 新增。

[Route] 段選項

[Route] 段接受以下配置項。可通過定義多個 [Route] 段來配置多條路由。

Gateway=
接受網關地址或特殊值 “_dhcp4” 與 “_ipv6ra”。若設置為 “_dhcp4” 或 “_ipv6ra”,則使用 DHCPv4 或 IPv6 RA 提供的網關地址。
自版本 211 起添加。

GatewayOnLink=
接受布爾值。若設為 true,內核無需檢查網關是否可直接到達(即位于本地網絡),從而允許將路由插入內核表而不觸發告警。默認為 “no”。
自版本 234 起添加。

Destination=
路由的目標前綴。可后接斜杠及前綴長度。若省略,則假定為完整的主機路由。
自版本 211 起添加。

Source=
路由的源前綴。可后接斜杠及前綴長度。若省略,則假定為完整的主機路由。
自版本 218 起添加。

Metric=
路由的度量值。接受 0…4294967295 范圍內的無符號整數。默認為未設置,使用內核默認值。
自版本 216 起添加。

IPv6Preference=
指定 RFC 4191 中定義的路由優先級(用于路由器發現消息)。可選值:“low”(最低優先級)、“medium”(默認優先級)或 “high”(最高優先級)。
自版本 234 起添加。

Scope=
IPv4 路由的作用域,可選值:“global”、“site”、“link”、“host” 或 “nowhere”:

  • “global”:路由可到達多跳外的設備。
  • “site”:本地自治系統內部路由。
  • “link”:僅能到達本地網絡設備(單跳)。
  • “host”:路由不離開本機(用于 127.0.0.1 等內部地址)。
  • “nowhere”:目標不存在。

對于 IPv4 路由,若 Type= 為 “local” 或 “nat”,則默認為 “host”;若為 “broadcast”、“multicast”、“anycast” 或 “unicast”,則默認為 “link”;其他情況默認為 “global”。此選項不用于 IPv6。
自版本 219 起添加。

PreferredSource=
路由的首選源地址。地址格式需符合 inet_pton(3) 規范。
自版本 227 起添加。

Table=
路由表標識符。可選預定義名稱 “default”、“main”、“local”,或 networkd.conf(5) 中 RouteTable= 定義的名稱,或 1…4294967295 間的數字。可通過 ip route show table num 查看路由表。若未設置且 Type= 為 “local”、“broadcast”、“anycast” 或 “nat”,則使用 “local”;其他情況默認為 “main”。
自版本 230 起添加。

HopLimit=
配置每路由跳數限制。接受 1…255 間的整數。另見 IPv6HopLimit=。
自版本 255 起添加。

Protocol=
路由協議標識符。接受 0…255 間的數字或特殊值 “kernel”、“boot”、“static”、“ra”、“dhcp”。默認為 “static”。
自版本 234 起添加。

Type=
指定路由類型。可選值:“unicast”、“local”、“broadcast”、“anycast”、“multicast”、“blackhole”、“unreachable”、“prohibit”、“throw”、“nat”、“xresolve”。

  • “unicast”:常規路由(指向目標網絡的路徑)。
  • “blackhole”:靜默丟棄匹配路由的數據包。
  • “unreachable”:丟棄數據包并生成 ICMP “Host Unreachable” 消息。
  • “prohibit”:丟棄數據包并生成 ICMP “Communication Administratively Prohibited” 消息。
  • “throw”:當前路由表查找失敗,返回至路由策略數據庫 (RPDB)。

默認為 “unicast”。
自版本 235 起添加。

InitialCongestionWindow=
TCP 初始擁塞窗口(用于連接建立階段)。客戶端請求資源時,服務器的初始擁塞窗口決定在未等待確認前可發送的初始數據包數量。接受 1…1023 間的數值(注:100 被視為極大值)。未設置時使用內核默認值(通常為 10)。
自版本 237 起添加。

InitialAdvertisedReceiveWindow=
TCP 初始通告接收窗口(以字節為單位),表示連接初始可緩沖的接收數據量。發送方需等待接收方確認及窗口更新后才能繼續發送。接受 1…1023 間的數值(注:100 被視為極大值)。未設置時使用內核默認值。
自版本 237 起添加。

QuickAck=
接受布爾值。為 true 時啟用該路由的 TCP 快速確認模式。未設置時使用內核默認值。
自版本 237 起添加。

FastOpenNoCookie=
接受布爾值。為 true 時在路由層面啟用無需 Cookie 的 TCP 快速打開。未設置時使用內核默認值。
自版本 243 起添加。

MTUBytes=
設置路由的最大傳輸單元(字節)。支持后綴 K、M、G(基數為 1024)。
自版本 239 起添加。

TCPAdvertisedMaximumSegmentSize=
指定 TCP 層的路徑 MSS(最大報文段大小,字節)。支持后綴 K、M、G(基數為 1024)。接受 1…4294967294 間的無符號整數。未設置時使用內核默認值。
自版本 248 起添加。

TCPCongestionControlAlgorithm=
指定路由的 TCP 擁塞控制算法(如 “bbr”、“dctcp”、“vegas”)。未設置時使用內核默認值。
自版本 252 起添加。

TCPRetransmissionTimeoutSec=
指定路由的 TCP 重傳超時時間(秒)。定義存活 TCP 連接在重傳未確認時的超時值。未設置時使用內核默認值。
自版本 255 起添加。

MultiPathRoute=地址[@接口名] [權重]
配置多路徑路由(通過多條路徑傳輸數據)。接受網關地址,可選附加:

  • 以 “@” 分隔的網絡接口名或索引
  • 以空格分隔的權重值(1…256)

此選項可多次指定。若賦值為空字符串,則清除之前所有配置。
自版本 245 起添加。

NextHop=
指定下一跳 ID。接受 1…4294967295 間的無符號整數。若設置,需配置對應的 [NextHop] 段。默認為未設置。
自版本 248 起添加。

[Route] 段配置選項 2

以下是 [Route] 段支持的參數及其詳細說明:


Gateway=

指定路由的 網關地址。特殊值 _dhcp4_ipv6ra 表示從 DHCPv4 或 IPv6 RA 動態獲取網關地址。
示例

[Route]  
Gateway=192.168.1.1  

自版本 211 起添加。


GatewayOnLink=

控制是否允許網關不在直接連接的網絡上。類型:布爾值(true/false)。默認值false(需驗證網關可達性)。
用途

  • 若設為 true,即使網關不在本地網絡,仍可強制添加路由(例如用于 VPN 場景)。
    自版本 234 起添加。

Destination=

路由的 目標網絡前綴(格式:IP/前綴長度)。若省略,默認為全長度主機路由。
示例

[Route]  
Destination=10.0.0.0/24  

自版本 211 起添加。


Source=

路由的 源地址前綴(格式:IP/前綴長度)。若省略,默認為全長度主機路由。
自版本 218 起添加。


Metric=

路由的 度量值(優先級),范圍 0–4294967295。默認:繼承內核設置。
注意:度量值越小,優先級越高。
自版本 216 起添加。


IPv6Preference=

定義 IPv6 路由的優先級(RFC 4191)。可選值:

  • low(最低優先級)
  • medium(默認)
  • high(最高優先級)
    自版本 234 起添加。

Scope=

IPv4 路由的 作用域,可選值:

  • global(跨多跳可達)
  • site(本地自治系統內部)
  • link(僅本地網絡)
  • host(僅本機內部,如 127.0.0.1)
  • nowhere(目標不存在)
    默認邏輯
  • Type=localnat,默認為 host
  • Type=broadcastmulticast 等,默認為 link
  • 其他情況默認為 global
    自版本 219 起添加。

PreferredSource=

指定路由的 首選源地址(格式:IPv4/IPv6 地址)。
示例

[Route]  
PreferredSource=192.168.1.100  

自版本 227 起添加。


Table=

路由表標識符。可選值:

  • 預定義名稱:defaultmainlocal
  • 自定義名稱(通過 networkd.confRouteTable= 定義)
  • 數字 1–4294967295
    默認
  • Type=localbroadcast 等,默認為 local
  • 其他情況默認為 main
    自版本 230 起添加。

Type=

路由類型,控制數據包處理方式。可選值:

  • unicast(常規路由)
  • blackhole(靜默丟棄數據包)
  • unreachable(丟棄并返回 “Host Unreachable”)
  • prohibit(丟棄并返回 “Administratively Prohibited”)
  • throw(路由查找失敗,返回 RPDB)
  • nat(網絡地址轉換)
    默認值unicast
    自版本 235 起添加。

Type=

  • 接受值
    • unicast:常規路由
    • local:本地路由
    • broadcast:廣播路由
    • anycast:任播路由
    • multicast:組播路由
    • blackhole:靜默丟棄數據包
    • unreachable:丟棄并返回「主機不可達」ICMP消息
    • prohibit:丟棄并返回「通信被管理禁止」ICMP消息
    • throw:終止當前路由表查詢,返回 RPDB
    • nat:NAT路由
    • xresolve:需解析的路由
  • 默認值:“unicast”
  • 版本:自版本 235 起添加

MultiPathRoute=

配置 多路徑路由(支持多個網關負載均衡)。格式:地址@接口名 權重
示例

[Route]  
MultiPathRoute=192.168.1.1@eth0 100  
MultiPathRoute=192.168.2.1@eth1 200  

自版本 245 起添加。


NextHop=

關聯的下一跳配置(需配合 [NextHop] 段使用)。范圍:1–4294967295。
自版本 248 起添加。


高級網絡參數

TCP 優化相關
  • InitialCongestionWindow=:TCP 初始擁塞窗口大小(1–1023)。默認值通常為 10。
  • TCPCongestionControlAlgorithm=:指定擁塞控制算法(如 bbrdctcp)。
  • TCPRetransmissionTimeoutSec=:TCP 重傳超時時間(秒)。
MTU 控制
  • MTUBytes=:路由的最大傳輸單元(支持 KM 后綴)。
  • TCPAdvertisedMaximumSegmentSize=:TCP 路徑 MSS 提示值。

參考

: 根據 systemd.network(5) 手冊,路由配置文件的優先級由 /etc/systemd/network > /run/systemd/network > /usr/lib/systemd/network 決定,按字典順序加載首個匹配的 .network 文件。



















本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74281.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74281.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74281.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自定義mavlink 生成wireshark wlua插件錯誤(已解決)

進入正題 python3 -m pymavlink.tools.mavgen --langWLua --wire-protocol2.0 --outputoutput/develop message_definitions/v1.0/development.xml 編譯WLUA的時候遇到一些問題 1.ERROR:SCHEMASV:SCHEMAV_CVC_ENUMERATION_VALID 3765:0:ERROR:SCHEMASV:SCHEMAV_CVC_ENUMERAT…

計算機操作系統(四) 操作系統的結構與系統調用

計算機操作系統&#xff08;四&#xff09; 操作系統的結構與系統調用 前言一、操作系統的結構1.1 簡單結構1.2 模塊化結構1.3 分層化結構1.4 微內核結構1.5 外核結構 二、系統調用1.1 系統調用的基本概念1.2 系統調用的類型 總結&#xff08;核心概念速記&#xff09;&#xf…

深入解析 Spring IOC AOP:原理、源碼與實戰

深入解析 Spring IOC & AOP&#xff1a;原理、源碼與實戰 Spring 框架的核心在于 IOC&#xff08;控制反轉&#xff09; 和 AOP&#xff08;面向切面編程&#xff09;。今天&#xff0c;我們將深入剖析它們的原理&#xff0c;結合源碼解析&#xff0c;并通過 Java 代碼實戰…

LLM之RAG理論(十四)| RAG 最佳實踐

RAG 的過程很復雜&#xff0c;包含許多組成部分。我們如何確定現有的 RAG 方法及其最佳組合&#xff0c;以確定最佳 RAG 實踐&#xff1f; 論文 《Searching for Best Practices in Retrieval-Augmented Generation》給出了回答。 本文將從以下三方面進行介紹&#xff1a; 首先…

利用knn算法實現手寫數字分類

利用knn算法實現手寫數字分類 1.作者介紹2.KNN算法2.1KNN&#xff08;K-Nearest Neighbors&#xff09;算法核心思想2.2KNN算法的工作流程2.3優缺點2.4 KNN算法圖示介紹 3.實驗過程3.1安裝所需庫3.2 MNIST數據集3.3 導入手寫數字圖像進行分類3.4 完整代碼3.5 實驗結果 1.作者介…

C語言-適配器模式詳解與實踐

文章目錄 C語言適配器模式詳解與實踐1. 什么是適配器模式&#xff1f;2. 為什么需要適配器模式&#xff1f;3. 實際應用場景4. 代碼實現4.1 UML 關系圖4.2 頭文件 (sensor_adapter.h)4.3 實現文件 (sensor_adapter.c)4.4 使用示例 (main.c) 5. 代碼分析5.1 關鍵設計點5.2 實現特…

Rust函數、條件語句、循環

文章目錄 函數**語句與表達式**條件語句循環 函數 Rust的函數基本形式是這樣的 fn a_func(a: i32) -> i32 {}函數名是蛇形風格&#xff0c;rust不在意函數的聲明順序&#xff0c;只需要有聲明即可 函數參數必須聲明參數名稱和類型 語句與表達式 這是rust非常重要的基礎…

maptalks圖層交互 - 模擬 Tooltip

maptalks圖層交互 - 模擬 Tooltip 圖層交互-模擬tooltip官方文檔 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>圖層交互 - 模擬 Tooltip</title><style typet…

好吧好吧,看一下達夢的模式與用戶的關系

單憑個人感覺&#xff0c;模式在達夢中屬于邏輯對象合集&#xff0c;回頭再看資料 應該是一個用戶可以對應多個模式 問題來了&#xff0c;模式的ID和用戶的ID一樣嗎&#xff1f; 不一樣 SELECT USER_ID,USERNAME FROM DBA_USERS WHERE USERNAMETEST1; SELECT ID AS SCHID, NA…

python socket模塊學習記錄

python黑馬程序員 通過python內置socket模塊&#xff0c;在電腦本地開發一個服務器&#xff0c;一個客戶端&#xff0c;連接后進行連續的聊天。服務器和客戶端均可輸入exit&#xff0c;主動退出連接。 服務器開發.py import socket# 創建Socket對象 socket_server socket.s…

7-2 sdut-C語言實驗-逆序建立鏈表

7-2 sdut-C語言實驗-逆序建立鏈表 分數 20 全屏瀏覽 切換布局 作者 馬新娟 單位 山東理工大學 輸入整數個數N&#xff0c;再輸入N個整數&#xff0c;按照這些整數輸入的相反順序建立單鏈表&#xff0c;并依次遍歷輸出單鏈表的數據。 輸入格式: 第一行輸入整數N;&#xff…

針對永磁電機(PMM)的d軸和q軸電流,考慮交叉耦合補償,設計P1控制器并推導出相應的傳遞函數

電流控制回路:針對永磁電機(PMM)的d軸和q軸電流&#xff0c;考慮交叉耦合補償&#xff0c;設計P1控制器并推導出相應的傳遞函數。 1. 永磁電機&#xff08;PMM&#xff09;的數學模型 在同步旋轉坐標系&#xff08; d ? q d - q d?q 坐標系&#xff09;下&#xff0c;永磁同…

ROS多機通信(四)——Ubuntu 網卡 Mesh 模式配置指南

引言 使用Ad-hoc加路由協議和直接Mesh模式配置網卡實現的網絡結構是一樣的&#xff0c;主要是看應用選擇&#xff0c; Ad-Hoc模式 B.A.T.M.A.N. / OLSR 優點&#xff1a;靈活性高&#xff0c;適合移動性強或需要優化的復雜網絡。 缺點&#xff1a;配置復雜&#xff0c;需手動…

chap1:統計學習方法概論

第1章 統計學習方法概論 文章目錄 第1章 統計學習方法概論前言章節目錄導讀 實現統計學習方法的步驟統計學習分類基本分類監督學習無監督學習強化學習 按模型分類概率模型與非概率模型 按算法分類按技巧分類貝葉斯學習核方法 統計學習方法三要素模型模型是什么? 策略損失函數與…

爬蟲案例-爬取某站視頻

文章目錄 1、下載FFmpeg2、爬取代碼3、效果圖 1、下載FFmpeg FFmpeg是一套可以用來記錄、轉換數字音頻、視頻&#xff0c;并能將其轉化為流的開源計算機程序。 點擊下載: ffmpeg 安裝并配置 FFmpeg 步驟&#xff1a; 1.下載 FFmpeg&#xff1a; 2.訪問 FFmpeg 官網。 3.選擇 Wi…

車載以太網網絡測試-22【傳輸層-DOIP協議-5】

目錄 1 摘要2 DoIP時間參數2.1 ISO 13400定義的時間參數2.2 參數示例 3 DoIP節點內部狀態機4 UDSonIP概述5 總結 1 摘要 本文繼續對DOIP協議進行介紹&#xff0c;主要是DOIP相關的時間參數、時間參數定義以及流程示例。推薦大家對上文專題進行回顧&#xff0c;有利于系統性學習…

(論文總結)思維鏈激發LLM推理能力

研究背景&動機 背景:擴大模型規模已被證實具有提升模型性能和模型效率的功效&#xff0c;但是LLM對于完成推理、算術任務仍有較大不足。 動機:從之前的應用和研究中得知&#xff0c;可以用生成自然語言解釋、使用神經符號等形式語言的方法來提高大模型的算術推理能力&…

前后端開發概述:架構、技術棧與未來趨勢

一、前后端開發的基本概念 1.1 什么是前后端開發&#xff1f; 前后端開發是 Web 開發的兩個核心部分&#xff0c;各自承擔不同的職責&#xff1a; 前端&#xff08;Frontend&#xff09; 負責網頁的用戶界面&#xff08;UI&#xff09;和用戶體驗&#xff08;UX&#xff09;…

anythingLLM結合searXNG實現聯網搜索

1、docker-compose 部署searXNG GitHub - searxng/searxng-docker: The docker-compose files for setting up a SearXNG instance with docker. cd /usr/local git clone https://github.com/searxng/searxng-docker.git cd searxng-docker 2、修改 .env文件 # By default…

人形機器人科普

人形機器人&#xff08;Humanoid Robot&#xff09;是一種模仿人類外形和行為的機器人&#xff0c;通常具有頭部、軀干、雙臂和雙腿等結構。它們的設計目標是與人類環境無縫交互&#xff0c;執行復雜的任務&#xff0c;甚至在某些領域替代人類工作。 1. 人形機器人的定義與特點…