在 linux Azure 上配置网络

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 以应用更改。

监视和排查网络问题

使用 networkctlip 命令检查网络接口的当前状态,并确认配置已正确生效。

列出所有已知的网络接口

使用以下命令列出了解的每个网络接口 systemd-networkd 及其类型、操作状态和配置状态:

networkctl list

显示特定网络接口的详细信息

使用以下命令显示特定接口的详细状态信息。 将 <INTERFACE> 替换为你要检查的接口名称,例如 eth0

networkctl status <INTERFACE>

输出包括接口的 IP 地址、网关、DNS 服务器以及当前应用于它的配置文件。

了解其他 networkctl 命令

使用以下命令查看 networkctl 支持的所有子命令和选项:

networkctl --help

验证 IP 地址和路由

使用 ip 命令验证系统上是否配置了预期的 IP 地址和路由。

列出所有分配的 IP 地址

使用以下命令列出分配给每个网络接口的每个 IP 地址:

ip addr

列出所有路由

使用以下命令列出系统路由表中的每个路由:

ip route

有关详细信息,请参阅以下上游资源: