这个问题存在变体,但我不能确定我的确切情况已被问到。
我正在建立一个简单的以太网,如下所示:
在节点 0(“rpi1”)上,我将 dnsmasq 作为 DNS 和 DHCP 服务器运行。这是它的一部分/etc/dnsmasq.conf
(减去 MAC 地址详细信息):
# Assign static IPs to cluster members
# Format = MAC:hostname:IP
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi1,10.0.0.1 # Node 0
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi2,10.0.0.2 # Node 1
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi3,10.0.0.3 # Node 2
dhcp-host=ZZ:YY:XX:WW:VV:UU,rpi4,10.0.0.4 # Node 3
DNS 和 DHCP 方面都在工作。每个节点都被分配了其预期的10.0.0.X
IP 地址,我可以通过运行例如dig rpi4
(-> ... 10.0.0.4
) 来解析任何节点上的任何域。而且,例如,如果我在 rpi2 内部,那么我可以使用 rpi3 进入 rpi3 ssh rpi3
,并且我可以例如ping rpi4
orping 10.0.0.4
并获得 0% 的数据包丢失。
我不清楚的是我是直接通过交换机还是通过 rpi1(运行 dnsmasq 并提供路由器服务)在节点之间进行通信。
如果节点直接通信,那么我假设它们必须知道彼此的 MAC 地址才能发出通过交换机直接到达彼此的帧。如果是这样,那么我总结的问题是:
- 一个节点在什么时候学习其他节点的 MAC 地址?
- 以及如何检查 rpi2 上的例如 rpi3 的 MAC 地址以查看它们是否相互了解?
提前致谢!
一个节点在什么时候学习其他节点的 MAC 地址?
首先,他们会从 DNS 服务器上查询其他节点的 IP 地址。之后,他们将向所有节点发送“arp”请求,具有IP地址的节点将使用其MAC地址回复该“arp”请求。
以及如何检查 rpi2 上的例如 rpi3 的 MAC 地址以查看它们是否相互了解?
'arp -a' 通常会为您提供 arp 表,您可以检查条目以查看它们是否已经学习了彼此的 MAC 地址。