在CentOS 7上绑定附加IP有几种方法,本文将一一进行解释。

确定网卡名称

在正式开始配置附加IP的绑定之前,我们需要先确定网卡的名称,可以通过以下命令来输出:

[root@localhost ]# ip link | awk 'NR%2==1' | awk '{print $2,$8,$9}' | tr -d ':'

输出的内容应该类似于以下结果:

lo state UNKNOWN
enp3s0 state UP
enp4s0 state DOWN

第一个设备 lo 代表了loopback,第二个设备通常就是你的网卡设备,可以看到它目前的状态是 UP(即正常在线)。在上述的例子中,我们看到了 enp4s0,它是另外一张网卡但状态是 DOWN(离线),因此 enp3s0 是我们需要绑定IP的网卡。

如果你的情况是:两张网卡都是UP状态,你需要先做一个判断,选出你倾向于绑定IP上去的网卡。

定位配置文件

在上一步的一个命令中,我们使用 ip link 输出了网卡名称,现在我们可以定位它的配置文件位置(通常都在 /etc/sysconfig/network-scripts/目录中),配置文件通常都以 ifcfg-设备名称 的命名格式存在,譬如:

[root@localhost ]# cat /etc/sysconfig/network-scripts/ifcfg-enp3s0

输出结果:

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=enp3s0
UUID=a007fd6d-4cc5-45b6-9a38-991a8e820eaf
DEVICE=enp3s0
ONBOOT=yes
IPADDR=10.0.0.2
PREFIX=29
GATEWAY=10.0.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

可以看到,目前网卡上绑定的IP是 10.0.0.2,它存在于一个 CIDR /29 的IP段中,这意味着10.0.0.3, 10.0.0.4, 10.0.0.5, 以及 10.0.0.6 也应该处于可用状态(如果你是从IDC处购得服务器,那么先确认服务商是分配给你了一个CIDR /29的IP段)。

绑定IP地址

如果你要添加绑定的IP数量较少,可以手动进行绑定。编辑网卡配置文件:

[root@localhost ]# vi /etc/sysconfig/network-scripts/ifcfg-enp3s0

因为你的网卡本身已经绑定了一个IP:IPADDR=10.0.0.2

你可以用以下方式添加这个CIDR段内的其他IP:

IPADDR0=192.168.1.3
IPADDR1=192.168.1.4
IPADDR2=192.168.1.5
IPADDR3=192.168.1.6
PREFIX0=29
PREFIX1=29
PREFIX2=29
PREFIX3=29

重启服务器网络使其生效:

[root@localhost]# systemctl restart network

如果你只是想临时绑定某个或某几个IP,可以使用命令行添加的方式,这种方式会在服务器重启后失效:

[root@localhost ]# ip addr add IP或IP段 dev 网卡名 label 设备名:别名

比如:

[root@localhost ]# ip addr add 192.168.1.44/32 dev enp3s0 label enp3s0:0

如果要移除绑定,则可以使用:

[root@localhost ]# ip addr del IP地址 dev 设备名

例如:

[root@localhost ]# ip addr del 192.168.1.72/32 dev enp3s0

绑定IP段

首先我们需要对网卡配置文件做一个小小的调整:

[root@localhost ]# vi /etc/sysconfig/network-scripts/ifcfg-enp3s0

如果该文件中没有 NM_CONTROLLED=NO 这一行,则将这一行加到文件的最底部,在CentOS 7中添加IP段绑定这是不可缺少的一步,接着我们创建IP段对应的配置文件:

[root@localhost ]# vi /etc/sysconfig/network-scripts/ifcfg-enp3s0-range

对于IP段的数量,系统并没有限制,如果你有多个IP段希望配置,则可以使用 ifcfg-enp3s0-range0, ifcfg-enp3s0-range1 这样的命名方式。

添加以下内容到文件中:

IPADDR_START=192.168.1.2 #起始IP
IPADDR_END=192.168.1.254 #结束IP
PREFIX=24 #CIDR IP段标识
CLONENUM_START=0 #别名起始号

如果你添加的IP段和你当前网卡绑定的IP不在一个段内,且不共用一个网关(Gateway),那么你还需要向文件中添加:

GATEWAY=网关地址

一切就绪之后,重启服务器网络:

[root@localhost ]# systemctl restart network