从 192.168.0.x 设备访问 192.168.1.x 设备

从 192.168.0.x 设备访问 192.168.1.x 设备

我有一台设备的 IP 地址为 192.168.1.110,而网络的其余部分为 192.168.0.x。路由器为 192.168.0.1。192.168.1.110 已连接到此路由器。其他设备通过 WiFi 连接到 192.168.0.5(Raspberry Pi 接入点),该接入点已连接到 192.168.0.1 上的同一路由器。

我正在尝试从 192.168.0.x 上的设备访问 192.168.1.110。我尝试添加一条可以在路由表中看到的路由,但没有成功。
使用sudo route -n -v add 192.168.1.110 192.168.0.1ping 和 SSH 超时。
使用sudo route -n -v add 192.168.1.110 192.168.0.5SSH 超时和 ping 显示以下内容

PING 192.168.1.110 (192.168.1.110): 56 data bytes
Request timeout for icmp_seq 0
92 bytes from pi.hole (192.168.0.5): Redirect Host(New addr: 192.168.0.1)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 1369   0 0000  3f  01 e4b7 192.168.0.202  192.168.1.110 

我也尝试将路由器掩码更改为 .254.0,将 Raspberry Pi 接入点退出循环,但我仍然无法访问 .1.110 设备。

如果我将路由器 IP 更改为 .1.x 和其中一个 .0.x 设备,那么我可以访问 .1.110 设备,但无法访问任何 .0.x 设备。我确信这应该很简单,但我搞不懂 - 我遗漏了什么?

答案1

数据包必须双向传输,因此双方都需要进行多种配置更改。

例如,如果您将网络掩码更改为 /23 (255.255.254.0),在设备 A 上这样做是不够的 - 是的,它能够直接到达设备 B,但设备 B 会将回复发送到哪里?如果 B 仍然认为它在 /24 上,那么它将继续尝试通过网关发送回复。

类似地:即使您添加了通往设备 B 的正确路由,也无法告诉设备 B 应该将回复发送到设备 A 的位置。它仍然会使用它已经知道的信息。

假设你根本无法重新配置设备 B,但至少可以它的配置,有 1½ 种方法可以使其工作。

  • 如果您知道有问题的设备中配置了哪个“默认网关”IP 地址,请在路由器的 LAN 接口上将该地址添加到现有地址旁边。(在某些路由器中,这可能称为“别名”,而在其他路由器中,这可能称为“虚拟 IP”。)

    例如,如果设备想要使用 192.168.1.254 作为其网关:

    ifconfig en0 192.168.1.254 netmask 255.255.255.0 alias         # for FreeBSD
    
    ip addr add 192.168.1.254/24 dev eth0                          # for Linux
    

    另一个常见地址是 192.168.1.1。发现正确地址的一种方法是查看设备发出的 ARP 请求。

  • 如果设备没有配置网关根本,但您至少知道它的子网大小,您可以 1) 使用同一子网中的任意地址执行上述操作,2) 配置路由器,以便它伪装(SNAT)所有通信。

    这样,设备就会认为它只与自己的子网进行通信。

    我不知道该怎么做,但它会涉及到pfNATiptables规则。

相关内容