这是我正在做的一项作业。Pi 是外部的,而 CentRelay、WinSvrRelay 和 CentClient 都是使用 VMWare Workstation Pro 16 创建的虚拟机。
------ ------------- --------------- --------------
| Pi |<-------->| CentRelay |<------>| WinSvrRelay |<------>| CentClient |
------ bridged ------------- LAN1 --------------- LAN2 --------------
Pi 的 WiFi 已连接到我的家庭网络,防火墙已禁用并伪装以提供互联网连接和到我的主机的桥接以太网连接。
WiFi IP: 192.168.0.99
Bridged: 172.168.1.1/24
CentRelay 正在使用 CentOS 8 Stream,防火墙已禁用并伪装。
Bridged: 172.168.1.2/24
LAN 1: 192.168.2.1/27
WinSvrRelay 使用的是 Windows Server 2019,禁用了防火墙,并设置了 RRAS 进行 LAN 路由,并添加了 NAT 路由协议。
LAN 1: 192.168.2.2/27
LAN 2: 192.168.2.33/27
CentClient 正在使用 CentOS 8 Stream,防火墙已禁用。
LAN 2: 192.168.2.34/27
所有虚拟机都有互联网连接,但当我尝试 ping 时,都是单向的。CentClient/WinSvrRelay 可以 ping Pi,但 Pi 无法 ping 回去。Pi 可以 ping CentRelay,CentRelay 也可以 ping Pi,所以我使用了 Wireshark,并注意到当 Pi 尝试 ping WinSvrRelay 时,ARP 请求没有得到答复。我尝试使用以下命令从 CentRelay 到 WinSvrRelay 添加路由:
ip route add 192.168.2.32/27 dev ens224
这没有任何帮助,我想知道我是否遗漏了什么。任何帮助都将不胜感激,谢谢!第一次在论坛上发帖,如果我遗漏了任何必需的信息,请告诉我。
答案1
所以问题在于您配置了伪装 NAT。这会破坏端到端连接,但允许许多系统隐藏在单个 IP 后面。
您应该将每台虚拟机配置为路由器,不要进行伪装。此外,您还必须告诉系统中的每个路由器如何访问您正在使用的各种网络。
Pi 应该具有以下路由表:
夏令时 | 下一跳 |
---|---|
192.168.2.0/24 | 172.168.1.2 |
这告诉您的 Pi,通过向 172.168.1.2 发送数据包即可到达整个 192.168.2.0/24 子网。Pi 不需要知道子网在更下游;路由可以聚合。
在 Linux 上添加此类路由的命令是ip route add to 192.168.2.0/24 via 172.168.1.2