在 CentOS/RHEL 7 中給一個網路卡分配多個 ip 地址。方法:
首先,讓我們找到網路卡的 IP 地址。在我的 CentOS 7 站群伺服器中,我只使用了一個網路卡。
用 root 特權執行下面的命令:

ip addr

示例輸出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:80:63:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3
valid_lft forever preferred_lft forever

如上所見,我的網路卡名是 enp0s3,ip 地址是 192.168.1.150 。
如你所知,網路卡的配置檔案儲存在 /etc/sysconfig/network-scripts/ 目錄下。每個網路卡的詳細內容將會以不同的名字儲存,比如 ifcfg-enp0s3 。
讓我們看下 ifcfg-enp0s3 的細節。

cat /etc/sysconfig/network-scripts/ifcfg-enp0s3

示例輸出:

TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
NAME=”enp0s3″
UUID=”e9f9caef-cb9e-4a19-aace-767c6ee6f849″
ONBOOT=”yes”
HWADDR=”08:00:27:80:63:19″
IPADDR0=”192.168.1.150″
PREFIX0=”24″
GATEWAY0=”192.168.1.1″
DNS1=”192.168.1.1″
IPV6_PEERDNS=”yes”
IPV6_PEERROUTES=”yes”

好的,現在我們將在相同的子網中分配多個地址了。
編輯檔案 /etc/sysconfig/network-scripts/ifcfg-enp0s3:

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

像下面那樣加入額外的 IP 地址。

TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
NAME=”enp0s3″
UUID=”933cdc9b-b383-4ddd-b219-5a72c69c9cf0″
ONBOOT=”yes”
HWADDR=”08:00:27:3F:AB:68″
IPADDR0=”192.168.1.150″
IPADDR1=”192.168.1.151″
IPADDR2=”192.168.1.152″
PREFIX0=”24″
GATEWAY0=”192.168.1.1″
DNS1=”192.168.1.1″
IPV6_PEERDNS=”yes”
IPV6_PEERROUTES=”yes”

如你所見,我已經加了兩個 IP 地址:IPADDR1=”192.168.1.151″ & IPADDR2=”192.168.1.152″
類似地,你可以加入更多的 ip 地址。
最後,儲存並退出檔案。重啟網際網路服務來使更改生效。

systemctl restart network

現在,讓我們檢查是否已經加入了 ip 地址。

ip addr

示例輸出:

: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:3f:ab:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet 192.168.1.151/24 brd 192.168.1.255 scope global secondary enp0s3
valid_lft forever preferred_lft forever
inet 192.168.1.152/24 brd 192.168.1.255 scope global secondary enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe3f:ab68/64 scope link
valid_lft forever preferred_lft forever

如你所見,單個網路卡已經有 3 個 ip 地址了。
讓我們 ping 一下新增的 IP 地址:

ping -c 4 192.168.1.151

示例輸出:

PING 192.168.1.151 (192.168.1.151) 56(84) bytes of data.
64 bytes from 192.168.1.151: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from 192.168.1.151: icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from 192.168.1.151: icmp_seq=3 ttl=64 time=0.077 ms
64 bytes from 192.168.1.151: icmp_seq=4 ttl=64 time=0.077 ms

— 192.168.1.151 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.048/0.069/0.077/0.013 ms

ping -c 4 192.168.1.152

示例輸出:

PING 192.168.1.152 (192.168.1.152) 56(84) bytes of data.
64 bytes from 192.168.1.152: icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from 192.168.1.152: icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from 192.168.1.152: icmp_seq=3 ttl=64 time=0.073 ms
64 bytes from 192.168.1.152: icmp_seq=4 ttl=64 time=0.075 ms

— 192.168.1.152 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.034/0.064/0.075/0.018 ms

如果你想要使用不同的子網,你要改變 PREFIX0=24 成不同的子網,比如 PREFIX1=16 。
比如,我想要新增一個 A 類地址(*比如 10.0.0.1)到我的網路卡中。

TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
NAME=”enp0s3″
UUID=”933cdc9b-b383-4ddd-b219-5a72c69c9cf0″
ONBOOT=”yes”
HWADDR=”08:00:27:3F:AB:68″
IPADDR0=”192.168.1.150″
IPADDR1=”192.168.1.151″
IPADDR2=”192.168.1.152″
IPADDR3=”10.0.0.1″
PREFIX0=”24″
PREFIX1=16
GATEWAY0=”192.168.1.1″
DNS1=”192.168.1.1″
IPV6_PEERDNS=”yes”
IPV6_PEERROUTES=”yes”

你可以看到我已經新增一個 A 類地址 (10.0.0.1) 並且字首是 16 。
儲存並退出檔案。重啟網際網路服務,接著,ping 新增的地址:

ping -c 4 10.0.0.1

示例輸出:

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.097 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.073 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.074 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.075 ms

— 10.0.0.1 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.073/0.079/0.097/0.014 ms

相似地,你可以新增不同的閘道器。
就是這樣。那麼問題來了,我一次性新增 200 個 IP,難道也要一個一個複製貼上嗎?誰能給我一次性新增多個 IP 的方法?
找到一個相對簡單的方法,就是結合 IP 是連續的特徵,用 exel 表格一拉就好了,唉,有一次性新增執行命令就好了。期待中。。。。。