分配静态 IP 地址

本指南介绍如何分配静态 IP 地址。在网络中并无 DHCP 服务器等情况下,此举可能会有帮助。

确定哪个程序正在管理接口

全新安装的 Clear Linux* OS 使用 NetworkManager 作为所有网络连接的默认网络接口管理器。

注解

  • 云 Clear Linux OS 映像继续使用 systemd-networkd 来管理网络连接。
  • 在较早的 Clear Linux OS 版本中,systemd-network 用于管理以太网接口,而 NetworkManager 用于管理无线接口。

定义分配静态 IP 地址的配置之前,请确认哪个程序正在管理网络接口。

  1. 检查 nmcli device 的输出,确认 NetworkManager 是否正在管理设备。

    nmcli device status
    

    如果设备的 STATE 列显示 connected 或 disconnected,则网络配置由 NetworkManager 管理,此时请按照 使用 NetworkManager 中的说明执行操作。

    如果设备的 STATE 列显示 unmanaged,则检查设备是否由 systemd-networkd 管理。

  2. 检查 networkctl list 的输出,确认 systemd-networkd 是否正在管理设备。

    networkctl list
    

    如果设备的 SETUP 列显示 configured,则网络配置由 systemd-networkd 管理,此时请按照 使用 systemd-networkd 中的说明执行操作。

使用 NetworkManager

由 NetworkManager 管理的网络连接在 /etc/NetworkManager/system-connections/ 目录中存储为扩展名为 .nmconnection 的文件。

有些工具可协助处理由 NetworkManager 管理的网络连接:

  • nmcli - 命令行工具
  • nmtui - 在终端中提供伪图形菜单的文本用户界面
  • nm-connection-editor - 图形用户界面

下面的方法使用命令行工具 nmcli 修改网络连接。

  1. 找出现有的连接名称:

    nmcli connection show
    

    示例输出:

    NAME                UUID                                  TYPE            DEVICE
    Wired connection 1  00000000-0000-0000-0000-000000000000  802-3-etherneten01
    

    如果不存在连接,请使用 nmcli connection add 命令创建一个连接。

  2. 修改连接以使用静态 IP 地址。使用合适的值替换括号中的变量。将 [CONNECTION_NAME] 替换为上面命令中的 NAME。

    sudo nmcli connection modify "[CONNECTION_NAME]" \
    ipv4.method "manual" \
    ipv4.addresses "[IP_ADDRESS]/[CIDR_NETMASK]" \
    ipv4.gateway "[GATEWAY_IP_ADDRESS]" \
    ipv4.dns "[PRIMARY_DNS_IP],[SECONDARY_DNS_IP]"
    

    有关更多配置选项,请参阅 nmcli developer page。执行高级配置时,可以直接编辑 /etc/NetworkManager/system-connections/*.nmconnection。

  3. 重启 NetworkManager 服务器以重新加载 DNS 服务器:

    sudo systemctl restart NetworkManager
    
  4. 确认静态 IP 地址详细信息是否已设置:

    nmcli
    

使用 systemd-networkd

由 systemd-networkd 管理的网络连接在 /etc/systemd/network/ 目录中存储为扩展名为 .network 的文件。

用来处理由 systemd-networkd 管理的网络连接的文件必须手动创建。

  1. 如果 /etc/systemd/network 目录尚不存在,请创建该目录:

    sudo mkdir -p /etc/systemd/network
    
  2. 创建一个 .network 文件并添加以下内容。使用合适的值替换括号中的变量。将 [INTERFACE_NAME] 替换为之前运行的 networkctl list 命令输出中的 LINK。

    sudo $EDITOR /etc/systemd/network/70-static.network
    
    [Match]
    Name=[INTERFACE_NAME]
    
    [Network]
    Address=[IP_ADDRESS]/[CIDR_NETMASK]
    Gateway=[GATEWAY_IP_ADDRESS]
    DNS=[PRIMARY_DNS_IP]
    DNS=[SECONDARY_DNS_IP]
    

    有关更多配置选项,请参阅 systemd-network man page。

  3. 重启 systemd-networkd 服务:

    sudo systemctl restart systemd-networkd
    
  4. 确认静态 IP 地址详细信息是否已设置:

    networkctl status