「Linux」- 为网卡分配多个地址(CentOS 7.x)

  CREATED BY JENKINSBOT

问题描述

该笔记记录:在 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"

参考文献

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