「arpd(8)」-

  LINUX MANUAL PAGES

用户空间的ARP守护进程

命令语法格式

arpd [ -lkh? ] [ -a N ] [ -b dbase ] [ -B number ] [ -f file ] [-p interval ] [ -n time ] [ -R rate ] [ <INTERFACES> ]

命令描述

守护程序arpd收集免费ARP信息,将其保存在本地磁盘上并根据需要将其提供给内核,以避免由于内核ARP缓存的大小有限而导致冗余广播。

命令支持的选项及含义

-l
将arpd数据库转储到标准输出,并退出。输出由三列组成:接口索引、接口的IP地址、接口的MAC地址。还显示了死主机的否定条目,在这种情况下,MAC地址被替换为单词FAILED后跟冒号,以及最近的时间(证明主机已经死亡的事实)。

-f <FILE>
以类似于-l选项转储的文本格式,从FILE读取并加载arpd数据库。加载后退出,如果还给出了-l选项,可能列出结果数据库。 如果FILE是“-”,则读取标准输入以获取ARP表。

-b <DATABASE>
数据库文件的位置。 默认位置是/var/lib/arpd/arpd.db

-a <NUMBER>
使用此选项,arpd不仅可以被动地侦听接口上的ARP数据包,还可以自己发送广播查询。参数NUMBER是在目标被视为死亡之前要进行的此类查询的数量。当arpd没有此选项并作为内核帮助程序启动时(即在sysctl中启用app_solicit,或甚至使用选项-k),并且仍然没有获得足够的信息,您可以观察到1秒的服务缺口。不是致命的,但并不好。

-k
禁止内核发送广播查询。 此选项仅与选项-a一起使用。

-n <TIME>
指定负缓存的超时。 当解决方案失败时,arpd会抑制在此期间进一步尝试解决问题。 此选项仅与选项’-k’一起使用。 此超时不应超过不支持免费ARP的典型主机的启动时间。 默认值为60秒。

-p <TIME>
轮询尝试到内核ARP表之间等待的时间(以秒为单位)。 TIME可以是浮点数。 默认值为30。

-R <RATE>
arpd每秒发送的最大稳定广播速率。 默认值为1。

-B <NUMBER>
由arpd连续发送的广播数量。 默认值为3。与-R选项一起使用此选项可确保在任何时间间隔T内广播的ARP查询数不超过B + R * T.

-h -?
打印帮助

<INTERFACES>
是要监视的网络接口的名称列表。 如果没有给出接口,arpd监视所有接口。 在这种情况下,arpd不调整sysctl参数,假设用户在arpd启动后自己执行此操作。

注意事项

为了使arpd能够充当ARP解析器,必须使用选项CONFIG_ARPD编译内核,并且在命令行中没有给出接口列表的情况下,感兴趣的接口上的变量app_solicit应该在/proc/sys/net/ipv4/neigh/*。 如果没有这样做,arpd仍会在其数据库中收集免费ARP信息。

SIGNALS

当arpd收到SIGINT或SIGTERM信号时,它会正常退出,同步数据库并恢复调整后的sysctl参数。 在SIGHUP上,它将数据库同步到磁盘。 使用SIGUSR1,它会向syslog发送一些统计信息。 任何其他信号的影响是不确定的。 特别是,它们可能会破坏数据库并使sysctl参数处于不可预测的状态。

使用示例

启动arpd来收集无偿ARP,但不要搞乱内核功能:

# arpd -b /var/tmp/arpd.db

一段时间后看结果:

# killall arpd ; arpd -l -b /var/tmp/arpd.db

启用内核帮助程序,将主要角色留给内核:

# arpd -b /var/tmp/arpd.db -a 1 eth0 eth1

完全替换接口eth0和eth1上的内核决议。 在这种情况下,内核仍会进行单播探测以验证条目,但所有广播活动都被抑制并在arpd的授权下进行:

# arpd -b /var/tmp/arpd.db -a 3 -k eth0 eth1

这是arpd通常应该工作的模式。 这不是默认设置,以防止偶尔启用过于激进的模式。

参考文献

  • man 8 arpd, Version 4.17.0-2

更新日志

  • 11/15/2018 创建文章