网桥和路由表

网桥和路由表

我试图了解网络桥接(不是硬件而是软件实现),但却产生了一些误解。

网络桥将网络的两个部分连接在一起。例如,我的计算机通过 连接到本地网络,eht0并通过 连接到互联网wlan0。要在本地网络中共享互联网连接,我需要通过网络桥进行连接wlan0eth0但为什么我的路由表没有给出相同的结果没有网桥?我有互联网接入,因此路由表包含所有外发数据包都应通过的条目wlan0,因此来自本地网络以及我生成的数据包都应通过wlan0

  • 我的错误在哪里?
  • 网桥如何适应路由表思想?

答案1

当你两个接口连接后,它们就会绑定在一起;任何从一个接口进入并发往另一个接口上的主机的数据包都会自动转发,不会发生任何修改。这样数据包就可以自由通过。交换机充当交换机上所有端口之间的桥梁。

你仍然可以用以下方法达到同样的效果路由转发数据包也会被路由。这样可以实现更多的控制,因为数据包会被检查和过滤,但这是以增加处理时间为代价的。要真正启用传入数据包的路由,您必须在内核中启用转发并添加适当的防火墙规则。然后内核将尝试重新路由任何不是发往系统本身的传入数据包。这也允许系统执行网络地址解读(NAT)如果必要的话。


因此,您的错误不在于逻辑,只是您没有配置系统来重新路由/转发传入的数据包。

网桥实际上并不符合路由表的理念,因为它们不涉及路由。 上的计算机wlan0将能够看到 上的任何计算机并直接与其通信eth0。 这与路由不同,在路由中,虽然 上的计算机wlan0可以与 上的计算机通信eth0,反之亦然,但它们并不直接通信。 相反,计算机与路由器通信,并相信路由器会将其发送到适当的目的地。

答案2

桥接将单个 LAN 的两个部分连接起来,每个部分使用相同的 IP 网络地址(即它们是相同的 IP 子网)。如果 eth0 LAN 上的其他计算机和 WLAN0 网络上的其他计算机使用相同的网络地址和子网掩码,那么您确实需要桥接这两个网段。一些桌面操作系统可以做到这一点,但它们需要配置为跨 LAN 网段转发数据包。桥接是一种第 2 层功能(它适用于 MAC 地址)

这与路由不同,在路由中,ETH0 LAN 上的计算机将具有与 WLAN0 网段上的计算机不同的网络地址(位于不同的 IP 子网中)。在这种情况下,计算机必须执行路由而不是桥接。路由是第 3 层功能(它适用于第 3 层寻址,例如 IP 地址)

路由表仅适用于路由,不适用于桥接。

详细描述请参阅维基百科。

答案3

桥接将连接两个网络,例如,如果您将桥接配置为您的 PC,那么它将按照您的意愿将 wlan0 传输到 eth0,但您的 PC 将无法访问互联网,因为它已配置为桥接,并且它不会获得任何 IP,因为桥接在第 2 层工作(与交换机完全一样)。如果您确实希望将 wlan0 路由到 eth0 而不是桥接,那么您可以按照以下三个步骤操作,它就像路由器一样在第 3 层工作,步骤如下:

  1. 启用内核 IP 转发
  2. 使用预路由或后路由进行掩蔽(它实际上将 eth0 请求传递给 wlan0)
  3. 添加适当的路由表(访问网关的规则,也像防火墙一样,您可以限制用户访问互联网)

就是这样。现在任何 eth0 客户端都可以访问互联网。配置的 PC 也可以连接互联网。

答案4

通常在软件“网络桥接”环境中,您必须明确允许流量通过。

网桥通常是一个必须打开的附加接口。

# ifconfig bridge0 addm fxp0 addm fxp1 up
# ifconfig fxp0 up
# ifconfig fxp1 up

请注意,在上面的示例中,fxp0 和 fxp1 使用 bridge0 接口连接。

查看更多 :FreeBSD 中的网络桥

相关内容