如何在Linux实例中设置静态IP地址
概述
阿里云ECS实例默认采用DHCP动态网卡获取IP地址,若您的DHCP动态网卡配置无法满足业务需求,可参考本文在云服务器ECS实例或弹性裸金属服务器中为网卡配置静态IP地址。
详细信息
配置静态IP地址之前,需要获取Linux实例的IP地址、子网掩码、网关信息,请参考以下步骤操作:
查看并记录Linux实例的网卡信息
- 登录Linux系统的ECS实例,执行以下命令,查看实例的IP地址、子网掩码、网关信息。
ifconfig
系统显示类似如下。 - 执行以下命令,查看实例的路由表和网关信息。
route -n
系统显示类似如下。 - 或者您也可以参考以下方式,通过阿里云的MetaServer获取相关信息。
- 依次执行以下命令,获取实例的子网掩码、网关信息、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
说明:[$MAC_ID]为实例的MAC地址。
- 依次执行以下命令,获取实例的子网掩码、网关信息、IP地址。
Linux系统存在不同的发行版本,不同发行版本中自定义配置网卡静态IP地址的方法不同,请根据现场环境匹配下列发行版本的操作命令:
- Alibaba Cloud Linux
- Ubuntu
- CentOS
- Debian
- SUSE Linux
- OPENSUSE
- Anolis OS
- Fedora
Alibaba Cloud Linux 2
Alibaba Cloud Linux 2实例的网络服务类型为network-scripts,配置网卡的静态IP地址只需要将实例的IP地址、子网掩码、网关信息等信息,添加到网卡配置文件中然后重启网络服务即可,以下为Alibaba Cloud Linux 2配置静态IP地址的操作步骤:
- 执行以下命令,编辑
/etc/cloud/cloud.cfg
配置文件。vim /etc/cloud/cloud.cfg
- 按
i
键切换至编辑模式,在# Example datasource config
内容上增加以下配置,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。
network:
系统显示类似如下。
config: disabled - 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,编辑
/etc/sysconfig/network-scripts/ifcfg-eth0
配置文件。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 按
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为例,现场以实际环境为准。
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,重启网络服务使配置生效。
systemctl restart network
Ubuntu18/20
目前常见的发行版大多使用的是NetworkManager服务进行网络管理,但是从Ubuntu 18系统开始网络服务类型为systemd-networkd,以下是在Ubuntu 18、Ubuntu 20系统中自定义配置静态IP的操作步骤:
- 请参见Alibaba Cloud Linux 2章节的步骤1,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。
- 执行以下命令,编辑
/etc/netplan/50-cloud-init.yaml
配置文件。
vim /etc/netplan/50-cloud-init.yaml
- 按
i
键切换至编辑模式,在文件底部添加以下配置,自定义配置DNS信息,将dhcp4的值修改为no,并将以上步骤中记录的IP地址、网关信息、子网掩码填写到该配置文件中。nameservers:
addresses:[$DNS1, $DNS2] - 修改之后的内容如下所示。
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地址。
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,应用网卡配置。
netplan apply
- 执行以下命令,建立
/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也配置在网卡配置文件中。
- 请参见Alibaba Cloud Linux 2章节的步骤1,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。
- 执行以下命令,编辑
/etc/sysconfig/network-scripts/ifcfg-eth0
配置文件。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 按
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地址。
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
-
相关操作系统中重启网络服务的操作命令不同,请根据现场情况,选择以下对应的步骤,重启网络服务:
- 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
- CentOS 6:
Debian 9/Debian 10/Ubuntu 16
Debian 9、Debian 10和Ubuntu 16系统使用的网络服务相同为networking,以下是在Debian 9、Debian 10和Ubuntu 16系统中配静态IP地址的操作步骤:
- 执行以下命令,编辑
/etc/network/interfaces
配置文件。
vim /etc/network/interfaces
- 按
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地址。
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,重启网络服务使配置生效。
systemctl restart network
SUSE Linux 12/SUSE Linux 15/OPENSUSE 15
SUSE Linux操作系统使用了Wicked网络管理工具进行网络管理。以下是在SUSE Linux 12、SUSE Linux 15、OPENSUSE 15系统中配置静态IP与自定义DNS的操作步骤:
- 执行以下命令,编辑
/etc/sysconfig/network/ifcfg-eth0
配置文件。
vim /etc/sysconfig/network/ifcfg-eth0
- 按
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为例,现场以实际环境为准。
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,编辑
/etc/sysconfig/network/routes
网关配置文件。
vim /etc/sysconfig/network/routes
- 按
i
键切换至编辑模式,将default 192.168.X.253内容,添加到文件中。 - 修改完成之后,按下
Esc
键之后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,编辑
/etc/resolv.conf
配置文件。vim /etc/resolv.conf
- 按
i
键切换至编辑模式,将nameserver
参数的值修改为您自定义的DNS IP地址。
nameserver [$DNS1] nameserver [$DNS2]
说明:两个
nameserver
参数的值都要修改为您自定义的DNS IP地址。 - 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,编辑
/etc/sysconfig/network/config
配置文件。vim /etc/sysconfig/network/config
- 按
i
键切换至编辑模式,将NETCONFIG_MODULES_ORDER
参数的值删除,保留双引号符号(""),如下所示。NETCONFIG_MODULES_ORDER=""
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,重启网络服务。
service network restart
自定义DNS
在不同版本的Linux实例中配置静态IP地址的方法不同,部分Linux实例在配置静态IP地址之后重启服务器后,DNS服务会重置或者消失,导致网络不通。所以部分Linux实例在配置完成静态IP地址之后需配置自定义的DNS服务。不同Linux实例系统中提供的配置自定义DNS的方法不同,具体方法请参见自定义配置DNS。如果重启服务器后配置的DNS信息被覆盖或者消失,则配置失败,可使用以下方式再次进行配置。
- 执行以下命令,删除DNS服务的
/etc/resolv.conf
配置文件。
rm -rf /etc/resolv.conf
- 执行以下命令,创建一个新的
/etc/resolv.conf
文件,并向新的/etc/resolv.conf
文件中写入DNS配置内容。
echo "nameserver 114.114.114.114" > /etc/resolv.conf
适用于
- 云服务器ECS