该笔记记录:在 CentOS 7.x 中,如何为网卡分配多个网络地址。
方法一、NetworkManager(推荐)
################################################################################ # 添加 ################################################################################ nmcli connection modify "connection-name" \ ipv4.addresses '78.34.56.23/20, 78.34.56.24/20' # 配置 nmcli connection modify "connection-name" \ +ipv4.addresses '78.34.56.23/20' # 追加新网络地址 nmcli connection up "connection-name" # 重启(直接 up 即可,无需 DOWN 操作) ip address "<interface-name>" # 验证 ################################################################################ # 删除 ################################################################################ nmcli connection modify "connection-name" -ipv4.addresses '78.34.56.23/20' nmcli connection up "connection-name" ip address "interface-name" # 验证
方法二、使用 ip address add 命令(临时)
该方法只能临时配置,重启后会丢失:
# 添加: ip address add "7.2.3.4/16" dev "eth0" # 删除: ip address del "192.161.2.3/25" dev "eth0"
How can I (from CLI) assign multiple IP addresses to one interface?
使用ifconfig(8)也能为一张网卡添加多个IP地址,但是它是通过”别名“实现的。不再推荐使用该方法,但是依旧保留了这个功能,以向后兼容,参考「IP-Aliasing」一文。而ip(8)有所不同,它是为当接口添加多个IP地址。(可能ifconfig(8)未实现该功能)
方法三、修改配置文件(不建议)
网卡配置文件位于/etc/sysconfig/network-scripts/中,名称类似于ifcfg-enp0s3形式。
多「IP地址」/「网段」/「DNS」的形式如下:
TYPE="Ethernet" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" NAME="enp0s3" UUID="933cdc9b-b383-4ddd-b219-5a72c69c9cf0" ONBOOT="yes" HWADDR="08:00:27:3F:AB:68" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 这是关键部分 - 开始 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IPADDR0="192.168.1.150" PREFIX0="24" GATEWAY0="192.168.1.1" IPADDR1="192.168.1.151" PREFIX1=16 IPADDR2="192.168.1.152" IPADDR3="10.0.0.1" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 这是关键部分 - 结束 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DNS1="192.168.1.1"
参考文献
WikiNotes/为网卡分配多个地址(CentOS 7.x)
Linux Basics: Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7
How can I (from CLI) assign multiple IP addresses to one interface?
How to update the gateway with nmcli
Bug 1482772 - Cannot specify multiple ip addresses with nmcli con add