我在具有物理尺寸的设备中使用交换机;这些尺寸存在于网络之外,只是为了明确表示我并没有试图使用某种网络术语。
交换机的端口对应于设备的不同物理部分,因此当“计算机”插入不同的端口时,它处于不同的物理位置。
例外是端口 1,它将始终插入主“计算机”。请注意,我一直使用引号,因为这些不是笔记本电脑或服务器等……这是一个机器人,这些是该机器人的不同部分。因此需要知道它实际插入的位置。
有人告诉我,我可以使用 VLAN 来实现这种隔离。我只需中继端口 1,将 VLAN 分离出来,然后将它们映射到主“计算机”上的不同虚拟以太网接口即可。
一切都很好。我大概理解了这些概念。但我有两个主要问题:
有没有更简单的方法来知道计算机插入了哪个物理端口?如果我将一个设备插入端口 2 并将其移至端口 3,我应该能够知道该设备现在位于端口 3 上,因为 IP 地址已更改为不同的范围(子网?)或其他一些我不知道的很酷的方式。
有没有关于这个的清晰的教程?我一直在研究,现在正试图设置
dnsmasq.conf
我的接口文件(我刚刚在主以太网接口下面添加了几行点对点1看起来像iface p2p1:0 inet dhcp) 来设置 VLAN,但我找不到能清晰指导我完成这些步骤的内容。很多东西似乎与 OpenStack 等特定设置有关。
答案1
让我补充一些细节,以确保我回答了您的问题。您有一个机器人,它在不同的位置有多个以太网端口,并且这个机器人包含一个可配置的以太网交换机。它有一个端口“端口 1”,连接到您标记为“主计算机”的主机,该主机运行 Ubuntu。您希望能够从 Ubuntu 主机确定特定主机插入机器人上的哪个端口,并且您希望使用 VLAN 和 VLAN 中继来实现这一点。
您可以将 VLAN 视为虚拟交换机,将 VLAN 中继视为通过单个物理以太网连接建立的多个虚拟以太网连接。因此,您正在考虑的解决方案需要将每个端口(端口 1 除外)分配给其自己的 VLAN,然后通过端口 1 将所有这些 VLAN 中继到 Ubuntu 主机。为简单起见,我建议将端口 2 分配给 VLAN 2,将端口 3 分配给 VLAN 3,依此类推。由于您尚未指定此机器人包含哪种类型的交换机,因此这就是我能提供的有关交换机配置的所有详细信息。
这个想法是将每个 VLAN 分配给其自己的 IP 子网并在该子网上运行 DHCP,这样插入机器人端口的设备就会获得分配给该 VLAN(以及端口)的子网中的 IP。同样,为了简单起见,我建议保持编号相同,因此 VLAN 2 有 192.168.2.0/24,VLAN 3 有 192.168.3.0/24,依此类推。您的 Ubuntu 主机将需要每个 VLAN 中的一个 IP,按照惯例以 .1 结尾。并且您需要在每个 VLAN 上设置一个 DHCP 服务器(通过 dnsmasq.conf)。
基于Ubuntu wiki 的“vlan”页面,主计算机/etc/network/interfaces
除了基本主机配置外,还会包含类似这样的内容(假设 eth1 是您的“正常”网络连接,而 eth2 插入机器人的端口 1)
auto eth2.2
iface eth1.2 inet static
address 192.168.2.1
netmask 255.255.255.0
vlan-raw-device eth2
auto eth2.3
iface eth2.3 inet static
address 192.168.3.1
netmask 255.255.255.0
vlan-raw-device eth2
等等。auto eth2.N
在 eth2 上设置 VLAN N 的中继,缩进的行将主计算机在该 VLAN 上分配一个 IP 地址和网络掩码。
您dnsmasq.conf
将包含
dhcp-range=eth2.2,192.168.2.100,192.168.2.199,4h
dhcp-range=eth2.3,192.168.3.100,192.168.3.199,4h
为 VLAN 2(端口 2)和 VLAN 3(端口 3)上出现的任何内容分别分配新的 IP 地址。
您应该在插入机器人的计算机上设置软件,使其与主计算机的主 (eth1) IP 地址通信。然后,来自与 192.168.2.x 匹配的 IP 的任何流量都来自插入端口 2 的计算机,来自与 192.168.3.x 匹配的 IP 的任何流量都来自插入端口 3 的计算机,依此类推。
回答你的第二个问题,我还没有找到关于此的任何教程,而且这似乎是一个非常不寻常的配置,所以这并不特别令人惊讶!