如何在Linux实例中设置静态IP地址

概述

阿里云ECS实例默认采用DHCP动态网卡获取IP地址,若您的DHCP动态网卡配置无法满足业务需求,可参考本文在云服务器ECS实例或弹性裸金属服务器中为网卡配置静态IP地址。

详细信息

配置静态IP地址之前,需要获取Linux实例的IP地址、子网掩码、网关信息,请参考以下步骤操作:

查看并记录Linux实例的网卡信息

  1. 登录Linux系统的ECS实例,执行以下命令,查看实例的IP地址、子网掩码、网关信息。

    ifconfig

    系统显示类似如下。 呜呜呜呜.png

  2. 执行以下命令,查看实例的路由表和网关信息。

    route -n

    系统显示类似如下。 {D26B4046-C999-4D0B-AE20-E1DB2A7D17D9}_20200414105215.jpg

  3. 或者您也可以参考以下方式,通过阿里云的MetaServer获取相关信息。

    1. 依次执行以下命令,获取实例的子网掩码、网关信息、IP地址。

      curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/[$MAC_ID]/netmask
      curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/[$MAC_ID]/gateway
      curl http://100.100.100.200/latest/meta-data/network/interfaces/macs/[$MAC_ID]/private-ipv4s

      系统显示类似如下。 555.jpg

      说明

      说明:[$MAC_ID]为实例的MAC地址。

Linux系统存在不同的发行版本,不同发行版本中自定义配置网卡静态IP地址的方法不同,请根据现场环境匹配下列发行版本的操作命令:

Alibaba Cloud Linux 2

Alibaba Cloud Linux 2实例的网络服务类型为network-scripts,配置网卡的静态IP地址只需要将实例的IP地址、子网掩码、网关信息等信息,添加到网卡配置文件中然后重启网络服务即可,以下为Alibaba Cloud Linux 2配置静态IP地址的操作步骤:

  1. 执行以下命令,编辑/etc/cloud/cloud.cfg配置文件。

    vim /etc/cloud/cloud.cfg
    1. i键切换至编辑模式,在# Example datasource config内容上增加以下配置,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。

      network:
        config: disabled

      系统显示类似如下。

      Dingtalk_20201029153704.jpg

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  2. 执行以下命令,编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件。

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    1. i键切换至编辑模式,将BOOTPROTO的值修改为static,并将以上步骤中记录的IP地址网关信息子网掩码填写到该配置文件中,修改之后的内容如下所示。

      DEVICE=eth0
      BOOTPROTO=static
      ONBOOT=yes
      IPADDR=192.168.X.68
      NETMASK=255.255.255.0
      GATEWAY=192.168.X.253
      DNS1=[$DNS1]
      DNS2=[$DNS2]
      说明

      说明:

      • BOOTPROTO:网卡的模式阿里云ECS实例默认采用DHCP,需要将其修改为static。

      • eth0:配置的网卡名称,本文以eth0网卡为例,现场以实际环境为准。

      • IPADDR:配置的IP地址,本文以192.168.X.68为例,现场以实际环境为准。

      • NETMASK:配置的子网掩码,本文以255.255.255.0为例,现场以实际环境为准。

      • GATEWAY:配置的网关地址,本文以192.168.X.253为例,现场以实际环境为准。

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  3. 执行以下命令,重启网络服务使配置生效。

systemctl restart network

Ubuntu18/20

目前常见的发行版大多使用的是NetworkManager服务进行网络管理,但是从Ubuntu 18系统开始网络服务类型为systemd-networkd,以下是在Ubuntu 18、Ubuntu 20系统中自定义配置静态IP的操作步骤:

  1. 请参见Alibaba Cloud Linux 2章节的步骤1,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。

  2. 执行以下命令,编辑/etc/netplan/50-cloud-init.yaml配置文件。

    vim /etc/netplan/50-cloud-init.yaml
    1. i键切换至编辑模式,在文件底部添加以下配置,自定义配置DNS信息,将dhcp4的值修改为no,并将以上步骤中记录的IP地址网关信息子网掩码填写到该配置文件中。

      nameservers:
        addresses:[$DNS1, $DNS2]

    2. 修改之后的内容如下所示。

      network:
          version: 2
          ethernets:
              eth0:
                  dhcp4: no
                  addresses: [192.168.X.68/24]
                  gateway4: 192.168.X.253
                  match:
                      macaddress: 00:16:3e:18:d1:61
                  set-name: eth0
                  nameservers:
                      addresses: [$DNS1,$DNS2]
      说明

      说明:

      • eth0:配置的网卡名称,本文以eth0网卡为例,现场以实际环境为准。

      • dhcp4:ECS实例的网络配置默认为DHCP模式,需要将其修改为no,关闭网卡的DHCP模式。

      • addresses:配置的IP地址,本文以192.168.X.68/24为例,现场以实际环境为准。

      • gateway4:配置的网关地址,本文以192.168.X.253为例,现场以实际环境为准。

      • match:配置的MAC地址,本文以00:16:3e:18:d1:61为例,现场以实际环境为准。

      • nameservers:自定义配置的DNS信息,请按照实际情况填写您自定义的DNS IP地址。

    3. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  3. 执行以下命令,应用网卡配置。

    netplan apply

  4. 执行以下命令,建立/run/systemd/resolve/resolv.conf文件的软连接,避免因为/etc/resolv.conf配置文件内容更新而导致配置还原。

    sudo ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf

CentOS 6/7/8/Alibaba Cloud Linux 3/Anolis OS 7/8/Fedora 33/34

  • 网络服务

    • CentOS 6和CentOS 7系统中的网络服务为Network。

    • CentOS 8和Alibaba Cloud Linux 3中的网络服务为NetworkManager。

    • Anolis OS 7操作系统的网络服务类型为Network。

    • Anolis OS 8/Fedora 33/34操作系统的网络服务类型为NetworkManager。

  • DNS服务 为了便于维护,您可以参考下列步骤,统一通过网络服务来管理网络和DNS配置,即DNS也配置在网卡配置文件中。

  1. 请参见Alibaba Cloud Linux 2章节的步骤1,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。

  2. 执行以下命令,编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件。

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    1. i键切换至编辑模式,将BOOTPROTO的值修改为static,并将以上步骤中记录的IP地址网关信息子网掩码填写到该配置文件中,并填写DNS1和DNS2地址,修改之后的内容如下所示。

      BOOTPROTO=static
      DEVICE=eth0
      ONBOOT=yes
      STARTMODE=auto
      TYPE=Ethernet
      USERCTL=no
      IPADDR=192.168.X.68
      NETMASK=255.255.255.0
      GATEWAY=192.168.X.253
      PEERDNS=no
      DNS1=[$DNS1]
      DNS2=[$DNS2]
      说明

      说明:

      • BOOTPROTO:网卡的模式阿里云ECS实例默认采用DHCP,需要将其修改为static。

      • eth0:配置的网卡名称,本文以eth0网卡为例,现场以实际环境为准。

      • IPADDR:配置的IP地址,本文以192.168.X.68为例,现场以实际环境为准。

      • NETMASK:配置的子网掩码,本文以255.255.255.0为例,现场以实际环境为准。

      • GATEWAY:配置的网关地址,本文以192.168.X.253为例,现场以实际环境为准。

      • DNS1和DNS2:自定义配置的DNS信息,请按照实际情况填写您自定义的DNS IP地址。

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  3. 相关操作系统中重启网络服务的操作命令不同,请根据现场情况,选择以下对应的步骤,重启网络服务:

    • CentOS 6:service network restart

    • CentOS 7/Anolis OS 7:systemctl restart network

    • 以下操作系统,请重新加载所有网卡配置nmcli c reload,然后激活网卡nmcli d connect eth0

      • CentOS 8

      • Alibaba Cloud Linux 3

      • Anolis OS 7/8

      • Fedora 33/34

Debian 9/Debian 10/Ubuntu 16

Debian 9、Debian 10和Ubuntu 16系统使用的网络服务相同为networking,以下是在Debian 9、Debian 10和Ubuntu 16系统中配静态IP地址的操作步骤:

  1. 执行以下命令,编辑/etc/network/interfaces配置文件。

    vim /etc/network/interfaces
    1. i键切换至编辑模式,将iface eth0 inet的值修改为static,并将以上步骤中记录的IP地址网关信息子网掩码填写到该配置文件中,修改之后的内容如下所示。

      auto lo
      iface lo inet loopback
      auto eth0
      iface eth0 inet static
      address 192.168.X.68
      netmask 255.255.255.0
      gateway 192.168.X.253
      dns-nameservers [$DNS1] [$DNS]
      说明

      说明:

      • iface eth0 inet:网卡的模式阿里云ECS实例默认采用DHCP,需要将其修改为static。

      • eth0:配置的网卡名称,本文以eth0网卡为例,现场以实际环境为准。

      • address:配置的IP地址,本文以192.168.X.68为例,现场以实际环境为准。

      • netmask:配置的子网掩码,本文以255.255.255.0为例,现场以实际环境为准。

      • gateway:配置的网关地址,本文以192.168.X.253为例,现场以实际环境为准。

      • dns-nameservers:自定义配置的DNS信息,请按照实际情况填写您自定义的DNS IP地址。

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  2. 执行以下命令,重启网络服务使配置生效。

    systemctl restart network

SUSE Linux 12/SUSE Linux 15/OPENSUSE 15

SUSE Linux操作系统使用了Wicked网络管理工具进行网络管理。以下是在SUSE Linux 12、SUSE Linux 15、OPENSUSE 15系统中配置静态IP与自定义DNS的操作步骤:

  1. 执行以下命令,编辑/etc/sysconfig/network/ifcfg-eth0配置文件。

    vim /etc/sysconfig/network/ifcfg-eth0
    1. i键切换至编辑模式,将BOOTPROTO的值修改为static,并将以上步骤中记录的IP地址网关信息子网掩码填写到该配置文件中,修改之后的内容如下所示。

      BOOTPROTO='static'
      STARTMODE='auto'
      IPADDR='192.168.X.68'
      NETMASK='255.255.255.0'
      说明

      说明:

      • BOOTPROTO:网卡的模式阿里云ECS实例默认采用DHCP,需要将其修改为static。

      • IPADDR:配置的IP地址,本文以192.168.X.68为例,现场以实际环境为准。

      • NETMASK:配置的子网掩码,本文以255.255.255.0为例,现场以实际环境为准。

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  2. 执行以下命令,编辑/etc/sysconfig/network/routes网关配置文件。

     vim /etc/sysconfig/network/routes
    1. i键切换至编辑模式,将default 192.168.X.253内容,添加到文件中。

    2. 修改完成之后,按下Esc键之后,输入:wq并回车以保存并关闭配置文件。

  3. 执行以下命令,编辑/etc/resolv.conf配置文件。

    vim /etc/resolv.conf
    1. i键切换至编辑模式,将nameserver参数的值修改为您自定义的DNS IP地址。

      nameserver [$DNS1] nameserver [$DNS2]
      说明

      说明:两个 nameserver参数的值都要修改为您自定义的DNS IP地址。

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  4. 执行以下命令,编辑/etc/sysconfig/network/config配置文件。

    vim /etc/sysconfig/network/config
    1. i键切换至编辑模式,将NETCONFIG_MODULES_ORDER参数的值删除,保留双引号符号(""),如下所示。

      NETCONFIG_MODULES_ORDER=""

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件。

  5. 执行以下命令,重启网络服务。

    service network restart

自定义DNS

在不同版本的Linux实例中配置静态IP地址的方法不同,部分Linux实例在配置静态IP地址之后重启服务器后,DNS服务会重置或者消失,导致网络不通。所以部分Linux实例在配置完成静态IP地址之后需配置自定义的DNS服务。不同Linux实例系统中提供的配置自定义DNS的方法不同,具体方法请参见自定义配置DNS。如果重启服务器后配置的DNS信息被覆盖或者消失,则配置失败,可使用以下方式再次进行配置。

  1. 执行以下命令,删除DNS服务的/etc/resolv.conf配置文件。

    rm -rf /etc/resolv.conf

  2. 执行以下命令,创建一个新的/etc/resolv.conf文件,并向新的/etc/resolv.conf文件中写入DNS配置内容。

    echo "nameserver 114.114.114.114" > /etc/resolv.conf

适用于

  • 云服务器ECS