如何在Linux中对一个NIC进行多个IP地址

时间:2020-03-05 15:26:00  来源:igfitidea点击:

有时,我们可能需要在其上托管多个。
通过虚拟主机实现单个服务器上的多个站点。
对于虚拟主机,运行Web服务器的多个实例。
Web服务需要特定端口(80)来运行,如果有多个实例运行,则需要唯一的IP端口对。

但是,端口无法更改,因此我们需要多个IP地址。
一个IP地址只能分配给一个NIC(网络接口卡)。
我们无法始终为所需的每个IP地址安装NIC。
通过创建虚拟接口,可以绑定到单个NIC的多个IP地址。
这种技术有时被称为IP别名。
我们为NIC创建别名,需要绑定其他地址。
在本教程中,我们使用Red Hat Enterprise Linux Server 5.6以绑定IP地址演示。

网络配置

可以使用'ifconfig'命令检查当前的网络配置:

# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:FA:F1:B7
inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:50 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6061 (5.9 KiB) TX bytes:10824 (10.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:900 (900.0 b) TX bytes:900 (900.0 b)

其中"eth0"是第一个以太网接口。
具有多个以太网卡的机器具有后续接口,"eth1","eth2",等等。
"lo"是本地环回接口。
我们将为eth0接口创建别名。
但首先,让我们检查这些接口的配置文件。
这些接口的配置文件位于"/etc/sysconfig/network脚本/"目录中。
"LS -L/etc/sysconfig/network-scripts /"显示这些文件。

# ls -l /etc/sysconfig/network-scripts/
total 380
-rw-r--r-- 1 root root 191 May 3 19:01 ifcfg-eth0
-rw-r--r-- 1 root root 254 Oct 13 2010 ifcfg-lo
lrwxrwxrwx 1 root root 20 May 3 03:51 ifdown -> ../../../sbin/ifdown
-rwxr-xr-x 1 root root 625 Oct 13 2010 ifdown-bnep
-rwxr-xr-x 1 root root 4573 Oct 13 2010 ifdown-eth
-rwxr-xr-x 1 root root 827 Oct 13 2010 ifdown-ippp
-rwxr-xr-x 1 root root 2149 Oct 13 2010 ifdown-ipsec
-rwxr-xr-x 1 root root 4473 Oct 13 2010 ifdown-ipv6
......

此目录中的第一个文件是'ifcfg-eth0'。
这是eth0接口的配置文件。
让我们查看此文件的内容:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82540EM Gigabit Ethernet Controller
DEVICE=eth0
IPADDR=192.168.0.10
NETMASK=255.255.255.0
BOOTPROTO=static
HWADDR=08:00:27:FA:F1:B7
ONBOOT=yes
DHCP_HOSTNAME=redhat-server

让我们看看这些标签:

设备设备名称进入以下ipaddr是IP地址的值。
网络掩码是子网掩码。
如果BootProto具有值"静态",则静态配置接口,例如:手动添加IP地址/子网掩码。
如果设备从DHCP服务器自动获取地址,则其值应为"DHCP"。
但在这种情况下,将缺少超过两个值,ipaddr和网络掩码。
HWADDR是硬件或者MAC地址。
如果onboot具有"是"值,则接口将在启动时处于活动状态,启动和运行。
但如果价值是"否",则会缩短。

不需要其余的值。
对这些文件的任何更改都将持久地通过启动。
如果我们需要更改为永久性,请在此目录(网络脚本)的文件中进行更改,而不是使用'ifconfig'命令(更改IP地址)。

添加虚拟接口

接口eth0的虚拟接口将具有名称eth0:0,eth0:1,eth0:2等。
要添加接口,请在网络脚本目录中创建相应的文件。
现在,让我们创建一个接口eth0:0。
要创建此别名,我们将创建一个名为"ifcfg-eth0:0"的文件:

我使用重定向创建了此文件,但我们可以使用我们想要创建此文件的任何编辑器:

# cat > /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=192.168.0.20
NETMASK=255.255.255.0
BOOTPROTO=static
HWADDR=08:00:27:FA:F1:B7
ONBOOT=yes

请注意,设备的名称将更改为虚拟接口的名称(此处eth0:0),硬件地址保持不变(因为物理设备是相同的)。
这是创建别名所需的一切。
但这些更改不会加载到运行系统。
重新启动网络,新别名已准备好使用:

# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:FA:F1:B7
inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:796 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:74780 (73.0 KiB) TX bytes:78183 (76.3 KiB)
eth0:0 Link encap:Ethernet HWaddr 08:00:27:FA:F1:B7
inet addr:192.168.0.20 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:900 (900.0 b) TX bytes:900 (900.0 b)

使用"ifconfig"命令,可以如上所述输出所示检查新(别名)接口。
如果要将另一个地址绑定到eth0,请以类似的方式创建别名eth0:1.

临时在NIC上添加多个IP地址

我们可以使用"ifconfig"命令添加到NIC的IP地址。
但是,请注意,重新启动计算机后,此IP地址将无法使用。
因此,我们需要使用第二步来永久添加多个IP地址。
其中我们假设我们已经拥有一个NIC,其中包含静态IP。
如果我们需要在此接口中向192.168.1.25和192.168.1.26添加两个更多的IP地址,我们可以通过执行以下命令来完成此操作:

ifconfig eth0:1 192.168.1.25 netmask 255.255.255.0
ifconfig eth0:2 192.168.1.26 netmask 255.255.255.0

添加IP地址范围

为了向Eth0接口添加一系列IP地址,例如,从192.168.1.20到192.168.1.30,我们需要使用以下数据创建(更新)文件/etc/sysconfig/network-scripts/ifcfg-eth0-range0 :

IPADDR_START=192.168.1.20
IPADDR_END=192.168.1.30
CLONENUM_START=0
NETMASK=255.255.255.0

然后重新启动网络服务,

service network restart

现在,我们将能够使用"ifconfig"命令查看已配置的IP地址。