在单个网络接口上创建或配置多个 IP 地址的概念称为 IP 别名,这对于在 Web 服务器上使用单个网络接口、在同一个子网内使用不同的 IP 地址 来设置多个虚拟站点非常有用。
使用这种 IP 别名的主要优势在于,你不需要为每个 IP 配备一个物理适配器。相反,你可以为一张物理网卡创建多个或许多虚拟接口(别名)。
此处给出的说明适用于所有基于 RHEL 的发行版,例如 Fedora、CentOS、Rocky 和 Alma Linux。手动创建多个接口并为其分配 IP 地址是一项艰巨的任务。
在这里,我们将了解如何通过定义一组 IP 范围来分配 IP 地址。我们还将了解如何创建虚拟接口并一次性为其分配不同范围的 IP 地址。
在本文中,我们使用了局域网 IP,请将它们替换为你将要使用的 IP。
如何为单个网络接口创建多个 IP 地址
这里,我有一个名为 ‘ifcfg-eth0’ 的接口,它是以太网设备的默认网络接口卡。如果你连接了第二个以太网设备,它将显示为 ‘ifcfg-eth1’,其他额外的设备依此类推。
这些设备的网络文件位于 ‘/etc/sysconfig/network-scripts/’ 目录中,你可以使用以下 ls 命令列出所有设备。
ls -l /etc/sysconfig/network-scripts/
示例输出:
ifcfg-eth0 ifdown-isdn ifup-aliases ifup-plusb init.ipv6-global ifcfg-lo ifdown-post ifup-bnep ifup-post net.hotplug ifdown ifdown-ppp ifup-eth ifup-ppp network-functions ifdown-bnep ifdown-routes ifup-ippp ifup-routes network-functions-ipv6 ifdown-eth ifdown-sit ifup-ipv6 ifup-sit ifdown-ippp ifdown-tunnel ifup-isdn ifup-tunnel ifdown-ipv6 ifup ifup-plip ifup-wireless
假设我们要创建三个额外的虚拟接口,以便将三个 IP 地址(172.16.16.126、172.16.16.127 和 172.16.16.128)绑定到网卡。
因此,我们需要创建三个额外的别名文件,而 “ifcfg-eth0” 保持相同的主 IP 地址。以下是我们为绑定以下 IP 地址而设置三个别名的步骤。
适配器 IP 地址 类型 ------------------------------------------------- eth0 172.16.16.125 主 eth0:0 172.16.16.126 别名 1 eth0:1 172.16.16.127 别名 2 eth0:2 172.16.16.128 别名 3
其中 ":X" 表示用于为网络接口 eth0 创建别名的设备(接口)编号。对于每个别名,你必须按顺序分配一个编号。
例如,我们将接口 “ifcfg-eth0” 中的现有参数复制到名为 ifcfg-eth0:0、ifcfg-eth0:1 和 ifcfg-eth0:2 的虚拟接口。
切换到网络目录并按如下所示创建文件。
cd /etc/sysconfig/network-scripts/ cp ifcfg-eth0 ifcfg-eth0:0 cp ifcfg-eth0 ifcfg-eth0:1 cp ifcfg-eth0 ifcfg-eth0:2
打开文件 “ifcfg-eth0” 并查看内容。
vi ifcfg-eth0
示例输出:
DEVICE="eth0" BOOTPROTO=static ONBOOT=yes TYPE="Ethernet" IPADDR=172.16.16.125 NETMASK=255.255.255.224 GATEWAY=172.16.16.100 HWADDR=00:0C:29:28:FD:4C
在这里,我们只需要两个参数(DEVICE 和 IPADDR)。因此,用你喜欢的编辑器打开每个文件,将 DEVICE 名称更改为其对应的别名,并修改 IPADDR 地址。
例如,使用 VI 编辑器打开文件 ‘ifcfg-eth0:0’、‘ifcfg-eth0:1’ 和 ‘ifcfg-eth0:2’,并更新这两个参数。
最终,它将类似于以下示例。
ifcfg-eth0:0
DEVICE="eth0:0" BOOTPROTO=static ONBOOT=yes TYPE="Ethernet" IPADDR=172.16.16.126 NETMASK=255.255.255.224 GATEWAY=172.16.16.100 HWADDR=00:0C:29:28:FD:4C
ifcfg-eth0:1
DEVICE="eth0:1" BOOTPROTO=static ONBOOT=yes TYPE="Ethernet" IPADDR=172.16.16.127 NETMASK=255.255.255.224 GATEWAY=172.16.16.100 HWADDR=00:0C:29:28:FD:4C
ifcfg-eth0:2
DEVICE="eth0:2" BOOTPROTO=static ONBOOT=yes TYPE="Ethernet" IPADDR=172.16.16.128 NETMASK=255.255.255.224 GATEWAY=172.16.16.100 HWADDR=00:0C:29:28:FD:4C
完成所有更改后,保存所有更改并重新启动/启动网络服务以使更改生效。
systemctl restart network
要验证所有别名(虚拟接口)是否已启动并正常运行,你可以使用 “ifconfig” 或 “ip” 命令。
ifconfig
示例输出:
eth0 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.125 Bcast:172.16.16.100 Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fe28:fd4c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:237 errors:0 dropped:0 overruns:0 frame:0
TX packets:198 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25429 (24.8 KiB) TX bytes:26910 (26.2 KiB)
Interrupt:18 Base address:0x2000
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.126 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.127 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000
eth0:2 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.128 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000
现在尝试从另一台机器 ping 它们中的每一个。如果一切设置正确,你将收到每个的 ping 响应。
ping 172.16.16.126 ping 172.16.16.127 ping 172.16.16.128
示例输出:
ping 172.16.16.126 PING 172.16.16.126 (172.16.16.126) 56(84) bytes of data. 64 bytes from 172.16.16.126: icmp_seq=1 ttl=64 time=1.33 ms 64 bytes from 172.16.16.126: icmp_seq=2 ttl=64 time=0.165 ms 64 bytes from 172.16.16.126: icmp_seq=3 ttl=64 time=0.159 ms ping 172.16.16.127 PING 172.16.16.127 (172.16.16.127) 56(84) bytes of data. 64 bytes from 172.16.16.127: icmp_seq=1 ttl=64 time=1.33 ms 64 bytes from 172.16.16.127: icmp_seq=2 ttl=64 time=0.165 ms 64 bytes from 172.16.16.127: icmp_seq=3 ttl=64 time=0.159 ms ping 172.16.16.128 PING 172.16.16.128 (172.16.16.128) 56(84) bytes of data. 64 bytes from 172.16.16.128: icmp_seq=1 ttl=64 time=1.33 ms 64 bytes from 172.16.16.128: icmp_seq=2 ttl=64 time=0.165 ms 64 bytes from 172.16.16.128: icmp_seq=3 ttl=64 time=0.159 ms
一切似乎都运行得很顺利。利用这些新的IP,您可以在Apache中设置虚拟站点、FTP账户以及许多其他服务。
分配多个IP地址范围
如果您想为一个名为“ifcfg-eth0”的特定接口创建多个IP地址的范围,我们使用“ifcfg-eth0-range0”并将ifcfg-eth0的内容复制到它上面,如下所示。
cd /etc/sysconfig/network-scripts/ cp -p ifcfg-eth0 ifcfg-eth0-range0
现在打开“ifcfg-eth0-range0”文件。
vi ifcfg-eth0-range0
并添加“IPADDR_START”和“IPADDR_END”IP地址范围,如下所示。
#DEVICE="eth0" #BOOTPROTO=none #NM_CONTROLLED="yes" #ONBOOT=yes TYPE="Ethernet" IPADDR_START=172.16.16.126 IPADDR_END=172.16.16.130 IPV6INIT=no #GATEWAY=172.16.16.100
保存文件并重启/启动网络服务
systemctl restart network
验证虚拟接口是否已创建并带有IP地址。
ifconfig
示例输出:
eth0 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.125 Bcast:172.16.16.100 Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fe28:fd4c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1385 errors:0 dropped:0 overruns:0 frame:0
TX packets:1249 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:127317 (124.3 KiB) TX bytes:200787 (196.0 KiB)
Interrupt:18 Base address:0x2000
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.126 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.127 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000
eth0:2 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.128 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000
eth0:3 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.129 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000
eth0:4 Link encap:Ethernet HWaddr 00:0C:29:28:FD:4C
inet addr:172.16.16.130 Bcast:172.16.16.100 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:18 Base address:0x2000通过遵循这些方法,您可以在Red Hat Enterprise Linux系统中有效地在单个网络接口上创建和管理多个IP地址。这种灵活性使您能够根据特定需求优化网络通信和连接。