如何在Linux中对一个NIC进行多个IP地址
有时,我们可能需要在其上托管多个。
通过虚拟主机实现单个服务器上的多个站点。
对于虚拟主机,运行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地址。