永久 ARP 条目变为未解析状态

永久 ARP 条目变为未解析状态

我们有一个解决方案,其中许多 Solaris 服务器位于私有 VLAN 中,并且此 VLAN 中不存在 arp 代理,因此要访问相邻服务器,我们必须添加静态 arp 条目。此私有 VLAN 上的子网中的每台其他服务器都必须指向网关的 mac 地址。

例如

#!/sbin/sh

ARP=/usr/sbin/arp

${ARP} -s  10.1.2.1 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.2 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.3 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.4 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.5 00:10:20:30:40:50 permanent

给我们 arp 条目:

arp -an
Net to Media Table: IPv4
Device   IP Address               Mask      Flags      Phys Addr
------ -------------------- --------------- -------- ---------------
oce1   10.1.2.1         255.255.255.255 SA       00:10:20:30:40:50
oce1   10.1.2.2         255.255.255.255 SA       00:10:20:30:40:50
oce1   10.1.2.3         255.255.255.255 SA       00:10:20:30:40:50
oce1   10.1.2.4         255.255.255.255 SA       00:10:20:30:40:50
oce1   10.1.2.5         255.255.255.255 SA       00:10:20:30:40:50

我们遇到的问题是,出于某种原因,很快,条目将标记为“U”,然后变得不可用,然后从 ARP 表中消失。在通常的日志文件中看不到任何原因。系统日志配置:

*.info;auth.none                /var/adm/messages

任何关于问题可能出在哪里的建议,都非常感谢大家的帮助。Solaris 10,x86 是操作系统。

答案1

我的第一个建议是将脚本更改为“永久发布”,而不仅仅是“永久”。

因此从这一点来看;

#!/sbin/sh
ARP=/usr/sbin/arp
${ARP} -s  10.1.2.1 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.2 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.3 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.4 00:10:20:30:40:50 permanent
${ARP} -s  10.1.2.5 00:10:20:30:40:50 permanent

对此;

#!/sbin/sh
ARP=/usr/sbin/arp
${ARP} -s  10.1.2.1 00:10:20:30:40:50 permanent pub
${ARP} -s  10.1.2.2 00:10:20:30:40:50 permanent pub
${ARP} -s  10.1.2.3 00:10:20:30:40:50 permanent pub
${ARP} -s  10.1.2.4 00:10:20:30:40:50 permanent pub
${ARP} -s  10.1.2.5 00:10:20:30:40:50 permanent pub

或者只是将脚本更改为使用“arp -f文件名“如预期的那样。来自 Solaris 10 arp 手册页;

 OPTIONS ...
 -f    Read the file named filename and set multiple  entries
       in  the  ARP  tables. Entries in the file should be of
       the form:
           hostname MACaddress [temp] [pub] [trail] [permanent]
       See the -s option for argument definitions.

其次,通过更改设置暂时增加系统日志的详细程度syslog.conf并查看发生的情况。

syslog.conf从此改变;

*.info;auth.none /var/adm/messages

对此;

*.info;auth.none;*.debug /var/adm/messages

然后刷新syslog服务; svcadm -v refresh svc:/system/system-log:default

专家提示: 如果您在日志中看到此信息;

ar_entry_query: Could not find the ace for source address #.#.#.#"

那么这意味着 arp 正在删除物理接口的条目。大约一个月前,我在几台有问题接口的服务器上遇到了同样的问题,内核补丁 (120012-14) 解决了这个问题。

如果相关系统配置了虚拟 IP 和/或端口绑定,那么还需要一些其他补丁。

相关内容