在两个设备之间提供直接网络链接以及将两者连接到交换机的正确方法

Sti*_*lez 4 networking routing

我有一台服务器和一台客户端 PC 直接连接到同一个桌面交换机。但我也想在它们之间放置一个专用的独立高速链接。目的是用 1G 将它们连接到互联网和 LAN,但 PC 和服务器之间的流量为 10G:

在此处输入图片说明

如果相关,PC 在 Asus 工作站主板上运行 Windows 10,服务器在 Supermicro 主板上运行 FreeBSD 12。两者都具有 Intel 1G 和 Chelsio 10G NIC,并且两个基板都具有功能齐全的工作站/服务器固件。目前两者都在同一个局域网范围内。

我的问题:

  1. 有哪些更正确或更容易实现的方法来配置 PC 和服务器的网络,以便循环不会导致网络问题?意思是,PC 和服务器之间的流量只能通过 10G 链接,而进出任何其他设备的流量永远不能通过 10G 链接?

    (这样,如果我断开 PC 和交换机之间的电线,PC 仍然不会通过服务器环路连接到其他 LAN 设备)
     
  2. 如果将来我将交换机升级为可以处理访问控制的全托管交换机(例如 Netgear ProSAFE),或者我开始在其上使用 VLAN,“正确答案”会改变吗?

更新

由于评论越来越长,这是他们揭示的一些问题的摘要,这些问题使这个问题变得很困难。

主要问题是网络是基于 DNS 的。这很重要,因为 IP 地址不会显示在 Windows 文件资源管理器中,只有发现的主机名才会显示。IP 地址可用于 SMB 文件服务器及其共享,但每次访问文件共享时都必须手动输入,不幸的是,许多程序没有输入手动路径的范围,它希望所有可浏览的设备将出现在填充的文件浏览器导航树中,或从已发现的设备列表之一下降。因此,将 10G IP 用于服务器并不是一个可靠可行的解决方案。

(发现可能是来自 PAC 的 DNS 或 WS-discovery,以及来自其他一些设备的 DNS/WS-Discovery/mDNS-bonhour。SMBv1/NetBIOS/WINS 都被禁用 - 感谢您注意到这一方面 @user1686)

服务器有 2 个未桥接的 NIC,其中一个没有连接到 DNS 服务器并且是直接点对点的,这一事实大概意味着它的 IP 需要不同。(并且 10G IP 需要是静态的,因为该链路/子网上没有 DHCP)

我还怀疑我必须通过 1G 链接单独阻止发现,如果它不使用 DNS,或者将发现配置为使用 DNS 而没有其他方法 - 从内存中可以配置 Windows 启用哪些发现方法以及尝试它们的顺序在,并仅指定 DNS?再次感谢@user1686

从答案中,我想我看到了 3 种可能的解决方案。哪个更正确,或者它们都有效?

可能的解决方案1?

到目前为止,我从答案中得到的是,如果10G 位于不同的子网中并且 PC 主机文件被手动破解以覆盖 DNS 并使用 10G IP 作为服务器设置路由或防火墙以确保服务器 1G IP无法从 PC 访问,听起来它可以工作。

但它非常笨拙,感觉就像一个“黑客工作”。单个机器上设置的手动覆盖过多。我不知道这是否“正常”。

可能的解决方案2?

另一个选项依赖于运行在 上的本地 DNS Unbound,它(如BIND)支持视图。这意味着 DNS 服务器可以配置为在查找时将服务器的常用 IP 提供给所有设备,但服务器将 10G IP 提供给 PC(仅)。我不确定这是否足够 - 是吗?

如果是,那么解决方案可能是:LAN 子网 10.0.0.0/8,由 DNS 分配的服务器 1G IP 说 10.0.0.1 服务器 10G 静态 10.0.0.2,然后使用 DNS 将服务器的 1G IP 提供给除PC,但将服务器的 10G IP + PC 的 10G NIC 作为其第一跳/网关返回给 PC。

天真地结果是:1G 和 10G IP 位于同一子网中,因此服务器被 PC 视为位于正确的子网上。但是10G IP对其他所有设备都是不可见的,而1G IP是可见的但被PC忽略了,所以不会产生冲突。所以它几乎都是在DNS中完成的。

这可行吗?

可能的解决方案 3

与上述 (2) 相同的 IP,但配置 DNS 以将这两个IP返回给所有设备。非 PC LAN 设备将无法找到 10.0.0.2 并最终决定 10.0.0.1 是使用的 IP。PC 设置了防火墙,因此它将所有数据包丢弃到 10.0.0.1,从而确定 10.0.0.2 是唯一的工作 IP(它可能需要第一跳提示)。所以这一切都是在 DNS 中完成的,禁止防火墙条目阻止 1G 循环。

也能用吗?

use*_*686 13

什么是配置 PC 和服务器的正确方法,以便环路不会导致网络问题?意思是,进出其他设备的流量只能正常通过交换机,并且两个设备都不能被视为通往另一个设备的桥接器或路由?

只需使用电缆连接两者并将两个端口配置为具有 IP 地址。此链接应使用与您的主 LAN 完全不同的子网,例如,如果 1G 交换机携带 192.168.1.0/24,那么专用 10G 链接应为 192.168.2.0/24(或更好的 /30)。

除非您故意架设桥接,否则不会发生桥接。Windows 和 FreeBSD(或任何其他操作系统)都不会自动启用它。

除非您故意设置数据包转发,否则不会发生路由。Windows 和 FreeBSD 都不会自动启用它。

(此外,IPv4 使用显式配置的路由表,因此即使 PC 或服务器确实启用了路由,路由仍然不会发生,因为其他主机无法知道它们可以用作网关。IPv6 需要一个稍微注意确保机器不会发送路由器广告,但这在 Windows 和 FreeBSD 上也是默认禁用的。)

当然,如果你不希望PC使用服务器作为网关,那么在你的10Gbit网卡上配置IP地址时不要填写“默认网关”字段...

如果将来我将交换机升级为可以处理访问控制的全托管交换机(例如 Netgear ProSAFE),或者我开始在其上使用 VLAN,“正确答案”会改变吗?

不。

主要问题是网络是基于 DNS 的。这很重要,因为 IP.addresses 不会出现在 Windows 文件资源管理器中,只有发现的主机名才会出现

此发现不是基于 DNS。它可能使用 LLMNR 和 WS-Discovery,或较旧的 NetBIOS(如果允许 SMBv1),或 mDNS 和 DNS-SD(但 Windows 实际上尚不支持),甚至 LDAP(Active Directory),但它赢了'不要使用普通的DNS。

IP 地址可用于 SMB 文件服务器及其共享,但每次访问文件共享时都必须手动输入,不幸的是,许多程序没有输入手动路径的范围,它希望所有可浏览的设备将出现在填充的文件浏览器导航树中,或从发现的设备列表之一中下降。

如果您可以手动输入路径,那么您可以使用“映射网络驱动器”或net use. 它们将永久显示在“此电脑”子树下。

(并且 10G IP 需要是静态的,因为该链接/子网上没有 DNS)。

DNS 不处理地址分配。我想你的意思是“DHCP”?

是的,通常这种点对点链接没有 DHCP,但另一方面,没有什么可以阻止您在服务器上运行 DHCP 守护程序并至少允许 PC 动态获取其地址。(但要小心——不要宣传“路由器”DHCP 选项。)

否则服务器的 10G 网卡必须桥接到 1G 网卡(为服务器提供一个唯一的 IP,但会破坏其他一切!)

即使使用 STP 来避免环路,桥接也不是一个真正好的解决方案。有没有办法告诉STP使用特定的路径只能访问某些MAC地址的-无论是链接处于活动状态,或者它不是。

(他们不称交换机为“以太网路由器”是有原因的。)

我猜更新的 TRILL 或 802.1aq“最短路径桥接”协议确实可以在这里工作(因为它们确实在 MAC 级别路由),但看起来它们开始出现在负担得起的消费者交换机中还需要数年时间。(PC 和服务器也需要参与,而对于 Windows,这更不可能。)在那之前,它是 STP 全有或全无。

如果是,那么解决方案可能是:LAN 子网 10.0.0.0/8,DNS 分配的服务器 1G IP 说 10.0.0.1 服务器 10G 静态 10.0.0.2

这两个链接确实需要位于不同的子网上,否则您将需要在 PC 上覆盖更多内容...

这种方法的问题在于,当主机有多个接口属于同一子网时,它通常不会尝试猜测每个目标 IP 地址使用哪个接口。它总是更喜欢整个子网的一个接口。除非您手动添加更具体的路由以按目的地覆盖它。

(不过,Windows 实际上可能会猜测——我最近没有检查过。但我相信它只会将这种猜测应用于指定的“链接本地”地址范围。)

手动破解 PC 主机文件以覆盖 DNS为服务器使用 10G IP,并设置路由以确保无法从 PC 访问服务器 1G IP

Aron 建议的路由不会使 1G IP 地址无法访问。相反,它使 1G IP 地址可通过 10G 链路访问。

所以,你真的不需要这两个-你只需要一个另一个。

单个机器上设置的手动覆盖过多。我不知道这是否“正常”。

如果您同意 Aron 的建议,那么您只需要覆盖一件事:两台计算机的 1G 地址的路由。

(不幸的是,主机不参与 IP 路由协议是“正常的”——Windows 没有使用 OSPF 来允许自动确定路由成本,我怀疑你的 LAN 路由器也没有。Windows 确实使用 RIPv2,但我不是确定这在这种情况下是否有用,或者实际上它不会比静态路由覆盖有效。)

与上述 IP 相同,但配置 DNS 以将这两个 IP 返回给所有设备。非 PC LAN 设备将无法找到 10.0.0.2 并最终决定 10.0.0.1 是使用的 IP。PC 设置了防火墙,因此它将所有数据包丢弃到 10.0.0.1,从而决定 10.0.0.2 是唯一的工作 IP(它可能需要第一跳提示)。也能用吗?

这可能会奏效——同样,地址需要在不同的子网上。

如果您对手动防火墙规则没问题,那么您也应该对手动路由没问题——它们是相同数量的“覆盖”并且是一个稍微更好的解决方案。(它们真的不是您所说的“第一跳提示”吗?)

  • 不,这根本不是问题。大多数协议丝毫不在乎(SMBv3 如果您有 [多通道](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2- and-2012/dn610980(v=ws.11)) 支持 active,但它旨在利用它的优势)。但是 IP 地址确实应该与您的主要 LAN 子网完全分开,因为这两个网络没有桥接。 (4认同)
  • @Stilez:对于 L2,仅当设备的两个端口都桥接时才需要生成树协议(例如,如果它是交换机,或者如果您设置了 FreeBSD 桥接(4)接口)。但是,如果帧实际上并未从一个接口转发到另一个接口,则不可能发生第 2 层环路。 (3认同)
  • @Stilez:对于 L3,路由始终基于显式路由,IP 中没有像以太网交换机那样的自动“学习”或“泛滥”,因此即使数据包 _are_ 设置为在两个接口之间转发(同样,默认情况下它们不是)。IP 路由协议有助于避免错误,但它们并不能防止某种“默认”行为——它们通过添加路由来工作,与通过阻止路径工作的 STP 不同。 (2认同)

sta*_*tor 5

  1. 问题:默认情况下不会发生桥接或路由。您必须主动启用它。
  2. 问:没有。

最简单的配置:为 10 GbE 链接使用不同的子网。/30 就足够了。有些设备甚至可以在 /31 子网上工作。使用地址不必通过 1 GbE 连接访问的子网。对于不同的子网,没有数据包会随机地以一种或另一种方式传播。

由于您的 1 GbE 连接上可能有 DNS,因此防止歧义的最简单方法是不要使用 10 GbE 子网的名称。由于它是点对点的,因此只需使用 IP 地址来配置应使用 10 GbE 链接的服务。

  • 是的 - 唯一的问题是 DNS / 命名。如果 OP 通过解析为 1Gbit 端口上的 IP 地址的主机名引用一个框,它将不会使用更快的 10G 链接。因此,需要使用 windows 框上的主机文件来做一些胡闹,或者只使用 IP 地址来强制 10G 链接。 (3认同)