我的网络经验非常有限,所以可能我问的是非常简单的事情。我正在阅读有关 linux 网桥接口的信息,文档指出默认情况下没有 NAT,网桥接口只是将数据包按原样从一个网络传递到另一个网络。这让我很困惑:我正在想象一个 LAN-behind-WiFi 设置,我的机器(让我们命名它access-point)可以连接到 WiFi 接入点并通过桥wireless0接到eth0. LAN 本身会有一些自己的地址范围(比如 192.168.0.0/24),如果我理解正确,连接将按以下方式处理:
- lan-device-1:使用 MAC 00::01 和封装的 dns 查询和源地址 192.168.0.1 / 目标地址 8.8.8.8 将此帧发送到 eth0
- 接入点:只是将帧从 eth0 推送到 wireless0
- 8.8.8.8:提取DNS查询,准备答案,但看到源地址192.168.0.1
- 一些疯狂的魔法出现并强制响应去访问点 IP 地址而不是 lan-device-1 地址
- 接入点:收到来自 8.8.8.8 的回答,wild magic 再次出现并告诉接入点该响应属于 lan-device-1 而不是接入点,因此响应被刷新到具有正确 MAC 地址的 eth0
当然,我们生活在没有魔法的世界中,所以这些假设是错误的。但是如何将数据包路由到正确的目的地呢?如果 NAT 到位,那会很简单,但事实并非如此,我无法理解 A)远程机器如何知道发送响应的位置和 B)中介(例如接入点)如何区分它自己的流量与桥接交通。