设置:我有一个带有 2 个有线端口(WAN 和 LAN)和 WiFi 的 Ubuntu 盒子。
我的目标很简单:
我只希望该盒子充当从 WAN 到 LAN+WiFi 的防火墙/路由器(带 NAT),其中后两者位于同一子网(桥接)。(该盒子还会做其他事情,出于这个原因和其他各种原因,我对使用现成的路由器不感兴趣。)
使用 NetworkManager,我目前可以将 LAN 设置为共享,将 WiFi 设置为热点,并使用 UFW 进行防火墙配置,它基本上可以工作(我可以通过 LAN 或 WiFi 连接其他设备并通过 NAT 连接到 WAN),但是:
- 我最终得到了两个独立的子网(因此,例如,当我从 LAN 切换到 WiFi 时,我的笔记本电脑的 IP 必须改变)和
- 这两个子网也是NAT 处理彼此之间,因此,如果我从 WiFi 机器 ssh 到 LAN 机器,连接似乎来自相关的路由器盒,而不是直接来自 WiFi 机器。
由于各种原因,这两种行为对我来说都是有问题的(我的 LAN/WiFi 上的许多设备都希望与已知和固定的 IP 地址自由地相互通信;当前通过 NetworkManager 的特殊 dnsmasq 配置中的主机行分配......)。
所以我的主要问题是如何解决第一个问题:鉴于 WiFi 热点设置基本上完全按照我需要的方式工作,有没有办法(使用或与 NetworkManager 合作)我可以将我的 LAN 桥接到与热点相同的子网上(以便它使用相同的 dnsmasq 实例和 NAT 到 WAN 以及所有这些,但本地路由仅在子网内(包括 LAN 和 WiFi 之间)?
我认为,解决第一个问题就能解决第二个问题,但是如果第一个问题无法解决(使用 NetworkManager),那么单独解决第二个问题的解决方案将受到欢迎 - 即,如何让我的 LAN 和 WiFi 直接路由而不是通过 NAT,而如果它们出去到 WAN,仍然使用 NAT。
最后,我很高兴放弃 NetworkManager,因为一旦配置完成,它应该是一个非常静态的设置,但当我沿着这条路走下去时,它很快就变得丑陋了。似乎我至少需要:networkd + hostapd + wpasupplicant + dnsmasq + solved + nftables + brctl + ?? 并且所有这些之间的配置和相互作用都很棘手……我可能最终会弄清楚这一切,但希望有一种更简单的方法,需要更少的研究和摆弄。话虽如此,欢迎任何关于任何方法的建议。