连接到非管理型交换机的计算机的地址

连接到非管理型交换机的计算机的地址

我在谷歌上搜索了很多次,我觉得我使用的术语很糟糕,因为我没有找到我想要的东西。我不是网络专业人士,甚至不是业余爱好者…… Stack Overflow 删除了我的问题,并将我转交给 SuperUser,希望我现在在正确的位置!

假设我有一个网络,其中有一个从路由器到非托管交换机的连接。从此交换机开始,有一个第二层交换机。(假设它是一个 4 端口交换机。每个端口(除路由器外)都级联到另一个 4 端口交换机)。我(一台计算机或微控制器)连接到其中一个第二层交换机。参见图表。

网络图

我可以采取什么步骤来获取仅连接到我所连接的第 2 层交换机的设备的 IP 地址(红色圈出)?

长话短说,我正在草拟一个项目,我需要一个微控制器(或现在的笔记本电脑)能够在其本地交换机上找到设备,并连接到其在​​交换机上找到的每个特定设备上的本地网络 HTTP 服务器。而且,微控制器或笔记本电脑应该能够区分其本地交换机上的设备与更广泛的网络上的设备。

答案1

不可以——如果你的设备都在同一个子网中,那么你和任何软件都无法区分哪些设备连接到哪个交换机(除非物理拔掉设备)。基本上,全部图中这些交换机是同一本地网络的一部分——路由器它充当本地和“更广泛网络”之间的边界。

就您而言,将四个单独的 VLAN 连接到主路由器,或者仅使用四个小型“家庭 wifi”路由器来代替四个交换机,将是分组设备的主要方式。另一种选择是在主交换机上使用端口隔离(有时称为“私有 VLAN”),这样它就不会在较小的交换机之间转发任何数据包(同时仍允许您的“控制”机器与所有交换机通信)。

其他想法:

(如果交换机是托管的,则可以查询它们学习到的 MAC→端口映射;通过了解例如端口 1 是“上行链路”端口,可以使用它来区分同一交换机上的设备(映射到端口 2+ 的 MAC)和不同交换机上的设备(映射到端口 1 的 MAC)。可以使用 SNMP 以标准方式查询良好的托管交换机,但这当然需要准备,您的设备需要知道交换机的 SNMP 凭据,并且它们仍然不知道哪些端口被视为“上行链路”,哪些端口不是,因此它永远无法完全自动化。)

然而:如果交换机被管理在其中启用了 LLDP 发现功能(或旧版 Cisco CDP),那么您的设备可以监听 LLDP 数据包并与其他设备交换观察到的信息,作为某些自定义发现过程的一部分或作为实际连接的一部分。

Switch->Port1: LLDP <This is ChassisID fc:e7:f5:51:28:0c, Port 1>
Switch->Port2: LLDP <This is ChassisID fc:e7:f5:51:28:0c, Port 2>
DevA->DevB: Hello <I'm DeviceA and I'm connected to ChassisID fc:e7:f5:51:28:0c>
DevB->DevA: Hello <I'm DeviceB and I'm connected to ChassisID fc:e7:f5:51:28:0c>
DevA->DevB: We're on the same switch! Let's talk

(LLDP 发现数据包的独特之处在于交换机不应该转发它们 - 至少托管交换机不会转发它们;非托管交换机仍然可能转发! - 因此您只能看到来自最近遵循规则的开关。

PC 也可以使用 LLDP;如果您运行 Linux,您可以选择 lldpd、ladvd 和 systemd-networkd。

相关内容