我正在尝试使用 Red Hat Enterprise Linux 5 附带的 ISC dhclient 获取多个 IP 地址,以便将这些 IP 提供给多个应用程序,这些应用程序将在除物理接口上运行的某些接口之外的单独的虚拟接口(例如 eth0:1、eth0:2)上运行。
为此,我在路径“/etc/sysconfig/network-scripts/ifcfg-eth0:”中创建了文件,其中 N 代表别名。
虚拟接口的文件内容与eth0类似,如下所示:
DEVICE=eth0:1
BOOTPROTO=dhcp
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
这里的HWADDR值就是网卡的MAC地址值,和eth0里的一样。
除此之外,为了让 DHCP 客户端在单个 NIC 上接受多个 IP,我在“/etc/dhclient.conf”文件中为虚拟接口使用了自定义客户端标识符字段,其内容如下:
send dhcp-lease-time 3600;
require subnet-mask, domain-name-servers;
timeout 60;
retry 60;
select-timeout 5;
interface "eth0"{
send dhcp-client-identifier "1:xx:xx:xx:xx:xx:xx";
}
interface "eth0:1" {
send dhcp-client-identifier "1:xx:xx:xx:xx:xx:xx-eth01";
}
interface "eth0:2" {
send dhcp-client-identifier "1:xx:xx:xx:xx:xx:xx-eth02";
}
initial-interval 2;
但在启动过程中,只有 eth0(即物理接口)的 IP 成功从 DHCP 服务器获取,并显示以下消息
Determining IP information for eth0... done.
而对于虚拟接口,启动时会显示以下错误:
error in ifcfg-eth0:1: didn't specify device or ipaddr
error in ifcfg-eth0:2: already seen ipaddr in ifcfg-eth0:1
最后,dhcp 租约文件也仅为 eth0 创建,而不是虚拟接口。
作为参考,我提供了假定此类应用程序已完成的链接(https://serverfault.com/questions/363695/using-dhcp-with-multi-homed-nics/363700#363700) 除此之外,dhclient 本身还有一个“-I”选项,可以通过命令行提供自定义客户端标识符(这也不起作用)。
请帮忙。
谢谢并尊重您的宝贵意见。