当前位置: 首页 > news >正文

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服务才能生效 注意:修改配置后需重启systemdnetworkd服务才能生效










另一个解说

以下是对 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 文件。



















相关文章:

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 描述 一个纯…...

Axure项目实战:智慧城市APP(四)医疗信息(动态面板、选中交互应用)

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;智慧城市APP医疗信息模块 主要内容&#xff1a;医疗信息模块原型设计与交互 应用场景&#xff1a;医疗信息行业 案例展示&#xff1a; 案例视频&…...

机器学习正则化技术:Ridge、Lasso与ElasticNet全解析

机器学习中的正则化技术 在机器学习中&#xff0c;正则化技术&#xff08;如 Ridge 和 Lasso&#xff09;主要用于解决过拟合问题&#xff0c;通过限制模型复杂度提高泛化能力。以下是详细说明及实例代码&#xff1a; 一、正则化解决的问题 过拟合&#xff1a;模型在训练集表…...

【汽车传感系统架构:借助传感获取安全】

为了将车辆自动化提升到一个新的水平&#xff0c;设计人员研究了 LiDAR 等传感器选项的权衡&#xff0c;并着眼于传感系统架构。 本文引用地址&#xff1a;https://www.eepw.com.cn/article/202503/468584.htm 每年&#xff0c;约有 120 万人死于道路交通事故&#xff0c;还有…...

3.25-2request库

request库 一、介绍request库 &#xff08;1&#xff09;requests是用python语言编写的简单易用的http库&#xff0c;用来做接口测试的库&#xff1b; &#xff08;2&#xff09;接口测试自动化库有哪些&#xff1f; requests、urllib 、urllib2、urllib3、 httplib 等&…...

LangChain4j(1):初识LangChain4j

1 什么是LangChain和LangChain4j LangChain是一个大模型的开发框架&#xff0c;使用LangChain框架&#xff0c;程序员可以更好的利用大模型的能力&#xff0c;大大提高编程效率。如果你是一个lava程序员&#xff0c;那么对LangChain最简单直观的理解就是&#xff0c;LangChain…...

UMI-OCR Docker 部署

额外补充 Docker 0.前置条件 部署前&#xff0c;请检查主机的CPU是否具有AVX指令集 lscpu | grep avx 输出如下即可继续部署 Flags: ... avx ... avx2 ... 1.下载dockerfile wget https://raw.githubusercontent.com/hiroi-sora/Umi-OCR_runtime_linux/main/Do…...

python每日十题(9)

外存储器的容量一般都比较大&#xff0c;而且大部分可以移动&#xff0c;便于在不同计算机之间进行信息交流。外存储器中数据被读入内存储器后&#xff0c;才能被CPU读取&#xff0c;CPU不能直接访问外存储器。本题答案为A选项。 进程是指一个具有一定独立功能的程序关于某个数…...

Jenkins最新版,配置Gitee私人令牌和Gitee凭证

jenkins 配置Gitee私人令牌和凭证 jenkins 版本&#xff1a;Jenkins 2.492.2 Gitee配置 Jenkins配置gitee插件&#xff0c;需要先申请gitee私钥。 安装gitee插件 申请Gitee私人令牌&#xff0c;后面还需要添加凭证。 测试链接&#xff0c;并保存 配置凭证...

AI 生成内容(AIGC):从文本到视频的完整流程

近年来&#xff0c;AI 生成内容&#xff08;AIGC, AI-Generated Content&#xff09; 迅速发展&#xff0c;从文本、图片到音频、视频&#xff0c;AI 在创意内容生成方面展现出了惊人的能力。AIGC 不仅提升了内容创作效率&#xff0c;还降低了成本&#xff0c;使得普通用户也能…...

【漏洞复现】Apache Tomcat partial PUT文件上传反序列化漏洞复现(CVE-2025-24813)

❤️博客主页&#xff1a; iknow181 &#x1f525;系列专栏&#xff1a; 网络安全、 Python、JavaSE、JavaWeb、CCNP &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 0x00 免责声明 本文所述漏洞复现方法仅供安全研究及授权测试使用&#xff1b;任何个人/组织须在合法合规…...

Spring JDBC Template与事务管理:基于XML与注解的实战指南

摘要 本文深入解析Spring JDBC Template与事务管理的核心技术&#xff0c;结合XML配置与注解方式两种主流方案&#xff0c;通过转账案例完整演示数据库操作与事务管理的最佳实践。文章涵盖JDBC Template的核心用法、事务配置语法、常见问题及性能优化建议&#xff0c;帮助开发…...

自动化测试selenium(Java版)

1.准备工作 1.1.下载浏览器 自动化测试首先我们要准备一个浏览器,我们这里使用谷歌(chrome)浏览器. 1.2.安装驱动管理 每一个浏览器都是靠浏览器驱动程序来启动,但是浏览器的版本更新非常快,可能我们今天测试的是一个版本,第二天发布了一个新的版本,那么我们就要重构代码,很…...

【13】Ajax爬取案例实战

目录 一、准备工作 二、爬取目标 三、初步探索&#xff1a;如何判断网页是经js渲染过的&#xff1f; 四、爬取列表页 4.1 分析Ajax接口逻辑 4.2 观察响应的数据 4.3 代码实现 &#xff08;1&#xff09;导入库 &#xff08;2&#xff09;定义一个通用的爬取方法…...

tar包部署rabbitMQ

部署erlang&#xff1a; 有网使用&#xff1a; sudo apt-get update sudo apt-get install libncurses5-dev libncursesw5-dev sudo yum install ncurses-devel 无网使用 tar zxvf ncurses.tar.gz mkdir ncurses cd ncurses-6.3/ ./configure --with-shared --without-debu…...

SpringMVC请求与响应深度解析:从核心原理到高级实践

一、SpringMVC架构与核心组件剖析 SpringMVC是基于Java的MVC设计模型实现的轻量级Web框架&#xff0c;其核心架构围绕前端控制器模式构建。以下是核心组件及其作用&#xff1a; DispatcherServlet 作为前端控制器&#xff0c;所有请求首先到达此处。它负责请求分发、协调组件协…...

CentOS 8 安装 Redis 全流程指南:从基础部署到远程安全配置

一、环境准备 本文以 CentOS 8.5 为例&#xff0c;演示 Redis 的安装、密码设置及远程连接配置。在开始前&#xff0c;请确保&#xff1a; 已通过 SSH 连接至服务器&#xff08;建议使用 Root 权限&#xff09;系统已联网基础工具包已安装&#xff1a;sudo dnf update -y &am…...

【机器学习】使用Python Spark MLlib进行预测模型训练

Spark MLlib 是 Spark 的机器学习 (ML) 库。它的目标是使实用的机器学习变得可扩展且易于使用。从高层次上讲&#xff0c;它提供了以下工具&#xff1a; ML 算法&#xff1a;常见的学习算法&#xff0c;如分类、回归、聚类和协同过滤特征化&#xff1a;特征提取、转换、降维和…...

简单聊聊Oracle和MySQL数据库的区别和使用场景

对于IT的技术人员&#xff0c;MySQL是非常熟悉的开源数据库&#xff0c;在各个行业被广泛应用。但是对于Oracle数据库&#xff0c;很多专业的IT从业人员不太了解&#xff0c;今天就来聊一聊Oracle和MySQL的一些区别。 1. 使用场景 首先MySQL是在各种IT公司或者非IT公司广泛应用…...

qt QOffscreenSurface详解

1、概述 QOffscreenSurface 是 Qt 中用于离屏渲染的一个类。它允许在不直接与屏幕交互的情况下进行 OpenGL 渲染操作&#xff0c;常用于生成纹理、预渲染场景等。通过 QOffscreenSurface&#xff0c;可以在后台创建一个渲染表面&#xff0c;进行绘制操作&#xff0c;并将结果捕…...

【软件测试】:软件测试实战

1. ⾃动化实施步骤 1.1 编写web测试⽤例 1.2 ⾃动化测试脚本开发 common public class AutotestUtils {public static EdgeDriver driver;// 创建驱动对象public static EdgeDriver createDriver(){// 驱动对象已经创建好了 / 没有创建if( driver null){driver new EdgeDr…...

springboot使用netty做TCP客户端

1、服务端文档说明 ## 1. 概述本文档描述了Socket模拟器的通信协议实现细节&#xff0c;包括数据包格式、字节序、编码方式等信息。## 2. 通信基础### 2.1 连接方式 - 协议类型&#xff1a;TCP - 网络层&#xff1a;IPv4 (AddressFamily.InterNetwork) - 传输方式&#xff1a;流…...

【NLP 49、提示工程 prompt engineering】

目录 一、基本介绍 语言模型生成文本的基本特点 提示工程 prompt engineering 提示工程的优势 使用注意事项 ① 安全问题 ② 可信度问题 ③ 时效性与专业性 二、应用场景 能 ≠ 适合 应用场景 —— 百科知识 应用场景 —— 写文案 应用场景 —— 解释 / 编写…...

Axure RP设计软件中的各种函数:包括数字、数学、字符串、时间及中继器函数,详细解释了各函数的用途、参数及其应用场景。

文章目录 引言函数分类数字函数数学函数字符串函数时间函数函数中继器函数引言 在axure交互设计时,函数可以用在条件公式和需要赋值的地方,其基本语法是用双方括号包含,变量值和函数用英文句号连接。 在交互事件编辑器中通过fx按钮插入函数表达式,例如设置文本内容为: …...

Logback使用和常用配置

Logback 是 Spring Boot 默认集成的日志框架&#xff0c;相比 Log4j&#xff0c;它性能更高、配置更灵活&#xff0c;并且天然支持 Spring Profile 多环境配置。以下是详细配置步骤及常用配置示例。 一、添加依赖&#xff08;非 Spring Boot 项目&#xff09; 若项目未使用 Sp…...

赛季7靶场 -- Code -- HTB writeup(Just hint)

本系列仅说明靶场的攻击思路&#xff0c;不会给出任何的详细代码执行步骤&#xff0c;因为个人觉得找到合适的工具以实现攻击思路的能力也非常重要。 1.首先我们对靶场进行了Nmap扫描&#xff0c;很快我们发现了Web应用端口何SSH端口 2.显然我们无法直接突破ssh&#xff0c;因为…...

第十三届蓝桥杯单片机省赛程序设计试题

目录 试题 各程序块代码 init.c main.c other.h other.c key.c seg.c onewire.c部分 ds1302.c部分 试题 各程序块代码 init.c #include "other.h"void init74hc138(unsigned char n){P2(P2&0x1f)|(n<<5);P2&0x1f; } void init(){P00x00;in…...

【QT】Qt creator快捷键

Qt creator可以通过以下步骤快捷键査看调用关系&#xff1a; 1.打开代码文件。 2.将光标放在你想要查看调用关系的函数名上。 3.按下键盘快捷键 CtrlshiftU。 4.弹出菜单中选择“调用路径”或“被调用路径” 5.在弹出的窗口中可以查看函数的调用关系 折叠或展开代码快捷键&…...

Flask接口开发--GET接口

安装Flask 1.安装命令&#xff1a; pip3 install Flask2.查看Flask版本&#xff1a; pip3 show flask如图我的Flask版本号是2.0.3 项目创建 1、在PyCharm中&#xff0c;我们点击左上方的 file&#xff0c;选择 New Project&#xff0c;创建一个Flask项目。&#xff08;Py…...

爬虫豆瓣电影

以下是一个简单的使用 requests 和 BeautifulSoup 库来爬取网页标题的 Python 爬虫示例代码&#xff0c;以爬取豆瓣电影 Top250 首页为例&#xff08;注意遵守网站的 robots.txt 协议&#xff0c;不要过度爬取给网站造成负担&#xff09;&#xff1a; 首先确保你已经安装了 re…...

[ ] 前后端连接 结合常见故障场景和解决

调试流程图&#xff1a; 一、基础网络检查 IP与端口验证 确认前端请求的URL与后端实际运行的IP和端口完全一致&#xff08;如http://192.168.1.100:8080/api&#xff09;使用ping命令测试网络连通性&#xff0c;telnet检查端口是否开放&#xff1a; telnet 192.168.1.100 80…...

MyBatis-Plus 的加载及初始化

在 Spring Boot 启动过程中&#xff0c;MyBatis-Plus 的加载和初始化涉及多个阶段的工作。这些工作包括 MyBatis-Plus 自身的配置解析、Mapper 接口的扫描与注册、SQL 语句的动态注入以及底层 MyBatis 的初始化等。以下是对整个过程的详细分析&#xff1a; 1. Spring Boot 启动…...

LangChain开发(九)基于Rag实现文档问答

文章目录 关联阅读Rag是什么&#xff1f;Rag工作流索引&#xff08;Indexing&#xff09;检索和生成&#xff08;Retrieval and generation&#xff09; 文档问答实现流程代码实现 源码地址参考资料 关联阅读 LangChain开发&#xff08;一&#xff09;LangChain介绍和对话demo…...

Netty——TCP 粘包/拆包问题

文章目录 1. 什么是 粘包/拆包 问题&#xff1f;2. 原因2.1 Nagle 算法2.2 滑动窗口2.3 MSS 限制2.4 粘包的原因2.5 拆包的原因 3. 解决方案3.1 固定长度消息3.2 分隔符标识3.3 长度前缀协议3.3.1 案例一3.3.2 案例二3.3.3 案例三 4. 总结 1. 什么是 粘包/拆包 问题&#xff1f…...

探索抓包利器ProxyPin,实现手机APP请求抓包,支持https请求

以下是ProxyPin的简单介绍&#xff1a; - ProxyPin是一个开源免费HTTP(S)流量捕获神器&#xff0c;支持 Windows、Mac、Android、IOS、Linux 全平台系统- 可以使用它来拦截、检查并重写HTTP(S)流量&#xff0c;支持捕获各种应用的网络请求。ProxyPin基于Flutter开发&#xff0…...

【例3.5】位数问题(信息学奥赛一本通-1313)

【题目描述】 在所有的N位数中&#xff0c;有多少个数中有偶数个数字3?由于结果可能很大&#xff0c;你只需要输出这个答案对12345取余的值。 【输入】 读入一个数N(N≤1000)。 【输出】 输出有多少个数中有偶数个数字3。 【输入样例】 2 【输出样例】 73 【题解代码】 #incl…...

python之selenium中的窗口切换

前提&#xff1a;触发一个事件打开一个新的窗口 1&#xff0c;先获取所有的句柄&#xff1a; handles driver.windowhandlers2&#xff0c;获取当前窗口 cururl driver.current_url3&#xff0c;循环遍历所有句柄 for handle in handles:driver.switch_to.window(handle)i…...

青少年编程与数学 02-011 MySQL数据库应用 20课题、连接与ORM

青少年编程与数学 02-011 MySQL数据库应用 20课题、连接与ORM 一、数据库连接基本概念连接过程连接状态连接池技术 二、Go语言连接MySQL数据库安装MySQL驱动导入相关包建立数据库连接检查连接状态执行SQL操作查询操作插入操作更新操作删除操作 完整示例 三、Python语言连接MySQ…...

Java 大视界 -- 基于 Java 的大数据分布式系统的监控与运维实践(155)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

三维空间中点、线、面的关系

三维空间中点、线、面的关系 点相对于平面的位置关系直线相对于平面的位置关系1.根据三点计算平面方程 //根据3点计算平面方程#include <iostream> #include <cmath> #include <vector>...

Spring JdbcTemplate 万字详解(通俗易懂)

目录 Δ前言 一、什么是JdbcTemplate&#xff1f; 1.定义&#xff1a; 2.作用&#xff1a; 3.环境搭建&#xff1a; 二、JdbcTemplate的简单使用 1.通过JdbcTemplate实现数据的添加&#xff1a; 2.通过JdbcTemplate实现数据的修改&#xff1a; 三、JdbcTemplate的进阶使用 …...

centos 7 搭建ftp 基于虚拟用户用shell脚本搭建

#!/bin/bash# 步骤1: 更新系统并安装vsftpd yum update -y yum install vsftpd -y# 步骤2: 创建虚拟用户信息文件并转换为数据库文件 cat << EOF > /etc/vsftpd/virtual_users.txt ftpvuser 123456 EOFdb_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsft…...

《Android低内存设备性能优化实战:深度解析Dalvik虚拟机参数调优》

1. 痛点分析&#xff1a;低内存设备的性能困局 现象描述&#xff1a;大应用运行时频繁GC导致卡顿 根本原因&#xff1a;Dalvik默认内存参数与硬件资源不匹配 解决方向&#xff1a;动态调整堆内存参数以平衡性能与资源消耗 2. 核心调优参数全景解析 关键参数矩阵&#xff1…...

【AI学习】概念了解

1,GPU 专门用于处理图形相关运算任务的微处理器,它起初主要聚焦于加速图形渲染,让计算机能够快速、流畅地显示高质量的图像、视频以及 3D 场景等内容,在电脑游戏、影视特效制作、动画设计等领域有着至关重要的作用。 与传统的中央处理器(CPU)相比,GPU 有着数量众多的核…...

WPF InkCanvas 控件详解

1. InkCanvas 是什么? InkCanvas 是 WPF 提供的一个手写绘图控件,它允许用户使用鼠标、触摸屏或手写笔在界面上进行绘图、标注等操作。 核心特点: ✅ 具备笔迹存储和管理功能。 ✅ 提供 Children 和 Strokes 两个集合,分别用于管理子控件和绘制的笔迹。 ✅ 通过 EditingM…...

数据库三级选择题(2)

C) 分布式数据库的事务管理包括恢复控制和并发控制&#xff0c;恢复控制一般采用的策略是基于两阶段提交协议 采用一定的计算方法定位数据的有 Ⅳ&#xff0e;散列&#xff08;哈希&#xff09;索引 下列提供逻辑独立性的是外模式/模式映像 UML所有活动有关判断的部分要用菱形表…...

ShapeCrawler:.NET开发者的PPTX操控魔法

引言 在当今的软件开发领域&#xff0c;随着数据可视化和信息展示需求的不断增长&#xff0c;处理 PPTX 文件的场景日益频繁。无论是自动化生成报告、批量制作演示文稿&#xff0c;还是对现有 PPT 进行内容更新与格式调整&#xff0c;开发者都需要高效的工具来完成这些任务。传…...

CAS(Compare And Swap)

CAS核心原理 操作流程 CAS 包含三个参数&#xff1a;内存值&#xff08;V&#xff09;、预期值&#xff08;E&#xff09;和新值&#xff08;N&#xff09;。执行步骤如下&#xff1a; 比较&#xff1a;检查当前内存值 V 是否等于预期值 E。 交换&#xff1a;如果相等&#…...

熔断降级(Sentinel解决)

问题概述 在微服务架构中一定要预防微服务雪崩问题&#xff0c;微服务雪崩问题就是指在微服务架构中&#xff0c;当一个服务出现故障时&#xff0c;由于服务之间的依赖关系&#xff0c;故障可能会传播到其他服务&#xff0c;从而导致了大规模的服务失败&#xff0c;系统无法正…...

Deepseek API+Python 测试用例一键生成与导出 V1.0.4 (接口文档生成接口测试用例保姆级教程)

接口文档生成接口测试用例保姆级教程 随着测试需求的复杂性增加,测试用例的设计和生成变得愈发重要。Deepseek API+Python 测试用例生成工具在 V1.0.4 中进行了全方位的优化和功能扩展,特别是对接口测试用例设计的支持和接口文档的智能解析处理。本文将详细介绍 V1.0.4 版本…...