跳转至主要内容

ARP缓存以这样或那样的形式存在于每一台通过IP在以太网上通信的主机上。缓存中保存着IP地址和以太网媒体访问控制(MAC)地址之间的映射。如果你在名为SERVER-1的主机上更换了一个以太网适配器,或者用更新/更快的硬件替换了SERVER-1,本地以太网段上所有与SERVER-1通信的主机都需要更新它们的ARP缓存。SERVER-1可能会 发送一个无偿的ARP数据包,应该 会更新所有的主机,但是因为是以太网,所以ARP数据包有可能会被破坏或者直接丢弃,所以你不能依赖它。

OpenVOS上STCP协议栈中的ARP缓存条目有10分钟的寿命,也就是说,10分钟后,它们会自动删除,下次需要发送数据包时,它们会被加回来。当你显示ARP缓存时,它会显示每个条目的剩余时间。所以最坏的情况是,在改变SERVER-1后,旧的(不正确的)映射需要10分钟才能过期,而新的(正确的)映射将被添加进来。在这段时间里,与SERVER-1的通信将无法进行。

你可以用arp -delete命令删除某个条目。图1显示了一个arp命令的实例,该实例显示了MAC地址和寿命时间,然后用arp -delete命令删除条目,另一个arp命令的实例显示缓存中不再有条目。

arp 192.168.50.5

互联网地址MAC地址类型寿命
192.168.50.5 00-04-96-1F-67-0C temp 6分钟。
准备好了 14:01:30

arp -delete 192.168.50.5

删除了192.168.50.5的映射。

准备好了 14: 01: 39

arp 192.168.50.5
arp: 没有192.168.50.5的映射。

准备好了 14: 01: 44
图1 - "arp"和"arp -delete"命令

旧的TCP_OS协议栈有一个arp -flush命令,可以删除ARP缓存中的所有条目。如果你有一个以上的条目要删除,可以更容易(更少的键入),只是删除所有的条目。由于条目是根据需要自动添加的,唯一的缺点是在网络上会有一些额外的数据包,并且在发送第一个数据包时会有一些额外的延迟(当ARP缓存被重新填充时)。从打字员的角度来看,根本就没有缺点。

STCP堆栈没有刷新选项。

---------------------------------- arp ---------------------------------
 主机名。
 -all: no
 -网络。
 -删除:无
 -set: no
 mac_addr:
图2 - STCP arp命令格式

于是我写了一个简短的宏(图3)来实现。这个宏将arp -all的输出重定向到进程目录下的一个文件,然后解析该文件提取IP地址,并对每个地址调用arp -delete。当它完成时,一些条目将被恢复,但它们都将被刷新为当前的映射。

& arp_flush.cm 从这里开始。
&
1.00版本 11-04-17
& niah.davids@stratus.com
&
& 这个脚本通过单独删除每个条目来清除arp缓存。
& 当它完成时,一些条目将恢复。
&
&
本软件以"现状"为基础提供,没有任何保证或承诺。
以及任何形式的支持。作者特别声明任何暗示的。
对适销性或任何特定目的的适用性的保证。
本免责声明适用于,尽管任何口头陈述的任何。
&实物由作者或其他任何人提供。
&
&set_string FILE (process_dir)>arp_list。
attach_default_output &FILE&。
arp -all
detach_default_output
&set LINE 2
又是&label
&set LINE (calc &LINE& + 1)
&set_string IP (substr (contents &FILE& &LINE& -hold) 1 16)
&if (end_of_file &FILE&) = 1 &then &return
&if (length X&IP&) = 1 &then &return
arp -delete &IP&
&goto again
&
& arp_flush.cm 到此为止。
图3 - arp_flush命令宏

图4显示了一个arp-all命令的实例,查看arp缓存中的内容,然后执行arp_flush宏,接着又是一个arp -all的实例,注意,第二个arp -all中所有的寿命都是10分钟。我删除了第一个arp-allarp_flush输出中的许多行,以减少所需空间。

arp -all

互联网地址MAC地址类型寿命
10.10.1.200 00-90-E8-1F-4B-EA 温度 8分钟
192.168.50.1 00-04-96-19-0B-20 temp 10分钟。
192.168.50.4 00-04-96-35-3F-B5 temp 1分钟。
192.168.50.2 00-04-96-20-C7-EC temp 4分钟。
192.168.50.19 00-0C-29-6B-CA-AE temp 6分钟。
192.168.50.21 00-23-54-79-C5-81 temp 7分钟。
.. . . .
192.168.51.252 00-50-56-BB-4D-8C temp 5分钟。
192.168.51.253 00-0C-29-86-AD-CC temp 3分钟。

准备就绪 13:46:14
准备

删除了10.10.1.200的映射。

删除192.168.50.1的映射。

删除了192.168.50.4的映射。

删除192.168.50.2的映射。

删除了192.168.50.19的映射。

删除了192.168.50.21的映射。

.. . . . . .

删除了192.168.51.252的映射。

删除了192.168.51.253的映射。

准备好了 13:46:23

arp -all

互联网地址MAC地址类型寿命
192.168.50.2 00-04-96-20-C7-EC temp 10分钟。
192.168.51.4 00-04-FC-01-02-3E temp 10分钟。
192.168.51.11 00-00-A8-80-80-4A temp 10分钟。
192.168.51.49 00-50-56-46-08-2C temp 10分钟。
192.168.51.50 00-23-54-52-18-6E temp 10分钟。
192.168.51.76 00-23-54-52-1B-F5 temp 10分钟。
192.168.51.100 00-0C-29-A9-85-44 temp 10分钟。
192.168.51.128 00-00-A8-43-52-22 temp 10分钟。
192.168.51.158 00-26-B9-BC-B7-37 temp 10分钟。
192.168.51.180 5C-26-0A-06-BD-29 temp 10分钟。
192.168.51.203 00-00-A8-C0-86-A1 temp 10分钟。

准备好了 13:46:27
图4 - 执行arp_flush命令宏

 

© 2020 Stratus Technologies.