这个问题存在多种变体,但我不能确定是否有人问到我的具体情况。
我正在设置一个简单的以太网网络,如下所示:
在节点 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 ssh rpi3
,并且我可以例如ping rpi4
或ping 10.0.0.4
并获得 0% 的数据包丢失。
但我不清楚的是,我是直接通过交换机在节点之间进行通信,还是通过 rpi1(运行 dnsmasq 并提供路由器服务)进行通信。
如果节点直接通信,那么我假设它们必须知道彼此的 MAC 地址,才能发出通过交换机直接相互发送的帧。如果是这样,那么我的问题总结如下:
- 节点在什么时候会了解其他节点的 MAC 地址?
- 我如何检查 rpi2 上的 rpi3 等的 MAC 地址以查看它们是否相互了解?
提前致谢!
答案1
节点在什么时候会了解其他节点的 MAC 地址?
它们首先会从 DNS 服务器查询其他节点的 IP 地址,然后向所有节点发送“arp”请求,拥有该 IP 地址的节点会用自己的 MAC 地址回复该“arp”请求。
我如何检查 rpi2 上的 rpi3 等的 MAC 地址以查看它们是否相互了解?
‘arp -a’ 通常会为您提供 arp 表,您可以检查这些条目以查看它们是否已经了解了彼此的 MAC 地址。