我在 RHEL 框上创建了一个子接口,eth0:1
然后复制了eth0
配置并更改了所有设置以反映eth0:1
IP 地址。但是,当我发出时,ifup eth0:1
我收到此错误:
[root@server-1 ~]# ifup eth0:1
Error, some other host already uses address 192.168.0.2.
[root@server-1 ~]# ping -c 1 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
--- 192.168.0.2 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 10000ms
但是,当我发出以下命令时:ifconfig eth0:1 192.168.0.2 up
该命令有效且没有错误。我会使用后面的命令,但当我使用它时,它会干扰我的主eth0
接口,并扰乱我的 DNS 流量的路由,因为它与子接口位于同一子网上eth0:1
。我将就 DNS 问题发表另一篇文章。
这些是接口的配置
[root@server-1 network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:50:56:AF:0C:06"
IPADDR="192.168.0.1"
IPV6INIT="yes"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Ethernet"
DNS1="192.168.2.10"
DNS2="192.168.3.10"
[root@server-1 network-scripts]# cat ifcfg-eth0:1
DEVICE="eth0:1"
BOOTPROTO="static"
HWADDR="00:50:56:AF:0C:06"
IPADDR="192.168.0.2"
IPV6INIT="yes"
NETMASK="255.255.255.0"
ONBOOT="no"
TYPE="Ethernet"
DNS1="192.168.2.10"
DNS2="192.168.3.10"
ip addr show
[root@server-1 network-scripts]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:AF:0c:06 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0..255 scope global eth0
inet 192.168.2.1/30 brd 192.168.2.3 scope global eth0:2
inet 192.168.2.5/30 brd 192.168.2.7 scope global eth0:3
inet6 fe80::250:56ff:fe97:c06/64 scope link
valid_lft forever preferred_lft forever
答案1
/etc/sysconfig/network-scripts/ifup-eth
此消息由或/etc/sysconfig/network-scripts/ifup-aliases
由ifcfg-ethX
用于配置网络接口的进程配置文件生成。
当您更仔细地检查脚本时,您会发现此错误出现在arping
尝试找出ifcfg-ethX
文件中指定的 IP 地址在网络中是否唯一的命令之后。
脚本会尝试避免网络中的重复配置。Ifconfig
不管怎样,它只会将 IP 地址添加到接口。请检查您的配置文件两次,因为某些 IP 地址可能会重复。
最后,值得一提的是,您可以将ARPCHECK=no
指令放入ifcfg-ethX
文件以禁用此检查。
答案2
在阅读 dsmsk80 的回答并查看 ifup-eth 脚本后,我解决了这个问题。关键行是:
/sbin/arping -c 2 -w 3 -D -I <INTERFACE> <VLAN>
因此对于 OP 示例:
/sbin/arping -c 2 -w 3 -D -I eth0:1 192.168.0.2
我最近用过这个东西,返回的是这个:
> /sbin/arping -c 2 -w 3 -D -I eth0.1508 192.168.8.1
ARPING 192.168.8.1 from 0.0.0.0 eth0.1508
Unicast reply from 192.168.8.1 [00:1C:C4:A1:D8:39] 0.605ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
然后我可以获取这个 MAC (00:1C:C4:A1:D8:39) 并在交换机的动态地址部分进行查找。这反过来会告诉我已经使用该 IP 的接口的 VLAN 和端口号。