我们有一个解决方案,其中许多 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 和/或端口绑定,那么还需要一些其他补丁。