分配静态 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 列显示 connecteddisconnected,则网络配置由 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