Azure Linux 使用 systemd-networkd 作为其默认网络管理服务。
systemd-networkd 是一种轻型系统服务,通过配置文件以声明方式配置和管理网络接口。
本文介绍如何管理 systemd-networkd 服务、放置网络配置文件的位置、如何定义常见接口配置(如 DHCP 和静态 IP),以及如何监视和排查 Azure Linux 系统上的网络状态问题。
Note
Azure Linux 4.0 现在位于 preview 中,严格限制为评估和测试目的。 它不适合生产用途。
先决条件
- 可以使用 shell 访问进行身份验证的 Azure Linux 系统。
- 具有
sudo权限的用户账户,这是管理系统服务和编辑/etc/systemd/network/下的网络配置文件所必需的。
systemd-networkd 的功能
可以在 Azure Linux 虚拟机(VM)上使用 systemd-networkd来执行以下网络任务:
- 使用 DHCP 或静态 IP 地址配置网络接口。
- 在单个主机上管理多个网络接口卡(NIC)。
- 配置高级网络功能,例如 VLAN、网桥和绑定接口。
- 与Azure平台提供的 DHCP 和 DNS 服务集成。
管理systemd-networkd服务
使用 systemctl 来启动、停止、重启并检查 systemd-networkd 服务的状态。
systemd-networkd启动服务
systemd-networkd使用以下命令启动服务:
sudo systemctl start systemd-networkd
systemd-networkd停止服务
Note
此操作会关闭 VM 中的所有网络,立即终止活动的 SSH 会话,并通过任何标准方式完全无法访问 VM,而无需通过串行控制台进行访问。
systemd-networkd使用以下命令停止服务:
sudo systemctl stop systemd-networkd
systemd-networkd重启服务
systemd-networkd例如,使用以下命令更改配置文件后,重启服务:
sudo systemctl restart systemd-networkd
检查服务状态
systemd-networkd使用以下命令检查服务状态并查看其最新的日志条目:
sudo systemctl status systemd-networkd
输出显示服务是否在启动时加载、处于活动状态和启用,以及服务生成的最新日志行。
查看服务日志
使用以下命令查看服务的完整日志历史记录 systemd-networkd :
journalctl -u systemd-networkd
输出包括服务自系统启动以来发出的每个日志行,这有助于诊断接口配置失败或 DHCP 问题等问题。
网络配置文件
systemd-networkd 从两个已知目录中的拖放文件读取其配置。 每个文件都使用特定的扩展来确定它提供的配置类型。
下表描述了使用的目录和文件类型 systemd-networkd :
| 文件或目录 | Purpose |
|---|---|
/etc/systemd/network/ |
所创建的自定义网络配置的目录。 |
/lib/systemd/network/ |
包安装的默认网络配置的目录。 |
.network 文件 |
定义接口行为,例如 DHCP、静态 IP、网关和 DNS。 |
.netdev 文件 |
定义虚拟设备,例如债券、网桥和 VLAN。 |
.link 文件 |
定义硬件链接属性,例如重命名 NIC 和设置 MTU。 |
将自定义配置文件置于 /etc/systemd/network/.
/etc/systemd/network/ 中的文件优先于 /lib/systemd/network/ 中的同名文件。
对于 Azure Linux VM 上的常见方案,以下部分提供了示例网络配置文件(.network 文件)。
示例:使用 DHCP 配置主 NIC
以下示例 .network 文件将主网络接口 (eth0) 配置为从 DHCP 服务器获取其 IP 地址:
[Match]
Name=eth0
[Network]
DHCP=yes
这是 Azure Linux VM 的典型配置,其中主网络接口从 Azure DHCP 服务动态接收其 IP 地址。
将文件以 .network 扩展名保存到 /etc/systemd/network/ 下,例如保存为 /etc/systemd/network/10-eth0.network,然后重启 systemd-networkd 以应用更改。
示例:使用静态 IP 配置辅助 NIC
以下示例 .network 文件使用静态 IP 地址、网关和 DNS 服务器配置辅助网络接口(eth1)。 将 <IP_ADDRESS>、<CIDR>、<GATEWAY_IP> 和 <DNS_IP> 替换为与你的网络相匹配的值:
[Match]
Name=eth1
[Network]
Address=<IP_ADDRESS>/<CIDR>
Gateway=<GATEWAY_IP>
DNS=<DNS_IP>
将文件以 .network 扩展名保存到 /etc/systemd/network/ 下,例如保存为 /etc/systemd/network/20-eth1.network,然后重启 systemd-networkd 以应用更改。
监视和排查网络问题
使用 networkctl 和 ip 命令检查网络接口的当前状态,并确认配置已正确生效。
列出所有已知的网络接口
使用以下命令列出了解的每个网络接口 systemd-networkd 及其类型、操作状态和配置状态:
networkctl list
显示特定网络接口的详细信息
使用以下命令显示特定接口的详细状态信息。 将 <INTERFACE> 替换为你要检查的接口名称,例如 eth0:
networkctl status <INTERFACE>
输出包括接口的 IP 地址、网关、DNS 服务器以及当前应用于它的配置文件。
了解其他 networkctl 命令
使用以下命令查看 networkctl 支持的所有子命令和选项:
networkctl --help
验证 IP 地址和路由
使用 ip 命令验证系统上是否配置了预期的 IP 地址和路由。
列出所有分配的 IP 地址
使用以下命令列出分配给每个网络接口的每个 IP 地址:
ip addr
列出所有路由
使用以下命令列出系统路由表中的每个路由:
ip route
相关内容
有关详细信息,请参阅以下上游资源:
-
systemd.networkman 页面:可在配置文件中.network设置的选项的完整参考。 -
systemd-networkdman 页面:服务概述systemd-networkd,包括它如何发现和应用配置文件。 -
networkctl(1)手册页:networkctl工具的完整命令行参考。 -
journalctl(1)man 页面:读取系统服务日志的工具的完整命令行参考journalctl。