访问不同子网中的设备

访问不同子网中的设备

我将路由器 A 连接到路由器 B,采用 LAN 到 WAN 设置。
路由器 A 的 IP 为 192.168.0.1(子网掩码为 255.255.255.0),路由器 B 的 IP 为 192.168.1.1(子网掩码为 255.255.255.255)

我有一台 NAS 设备连接到路由器 A,其 IP 为 192.168.0.108。我如何从连接到路由器 B 的设备访问此 NAS 设备?(例如从 IP 为 192.168.1.50 的设备)

我可以在路由器 B 上创建静态路由来访问 NAS 吗?如果可以,目标 IP、网络掩码和网关是什么?

答案1

您的配置中可能缺少以下两个问题的答案:

  • 来自连接到路由器 B 的设备的信息包如何路由到您的 NAS?
  • 如何将来自 NAS 的信息包路由到连接到路由器 B 的设备?

为了具体回答您的情况,您必须:

  • 在路由器 B 的路由表中设置一条规则,告诉它所有发往 192.168.0.108 的数据包都必须发送到路由器 A,因为它知道如何直接到达路由器 A。
  • 在路由器 A 的路由表中设置一条规则,告诉它所有到子网 192.168.1.0/24 的数据包都必须发送到路由器 B,因为它知道如何到达该子网。

但是,您不必修改路由器上的以下信息:

  • 网络掩码:它所做的就是告知该设备哪些 IP 地址可以直接访问,哪些 IP 地址必须参考其路由表才能知道将其发送到哪里。
  • 网关:如果设备无法直接或通过其路由表到达目的地,则此为设备发送数据包的默认 IP 地址。

现在,由于我不知道您的设备的具体情况,您必须弄清楚如何配置相关的路由表。如果您的两个路由器是 Linux 设备,则可能看起来像这样:

在路由器B上:

# ip route add to 192.168.0.108 via 192.168.0.1 dev XXX

在路由器A上:

# ip route add to 192.168.1.0/24 via 192.168.1.1 dev XXX

(您需要超级用户权限才能执行这些命令)

但您必须研究、理解并根据您的情况调整此配置。例如,如果不仅要访问 NAS,还要访问整个子网,则配置会略有不同。

答案2

首先,您需要路由器 A 的外部 IP(路由器 B 可访问),假设它是 10.0.0.2/24,路由器 B(路由器 A 可访问)假设它是 10.0.0.3/24。路由器 A 或 B 也可以位于彼此的子网之一上(我在编辑之前可能错误地假设了这一点)。此处的目标 IP 将是 192.168.0.0,网络掩码将是 255.255.255.0,网关将是 10.0.0.2。

现在假设:

  • 路由器 B 运行 Linux。
  • 您在路由器 B 上拥有 root 访问权限(或 CAP_NET_ADMIN)。
  • 路由器 A 允许从 10.0.0.0/24 转发到 192.168.0.0/24(可以使用或不使用 NAT/IP 伪装)或者可以配置为这样做。
  • 路由器 B 上的设备使用 192.168.1.1 作为其默认网关。

您可以允许设备通过路由器 B 访问整个 192.168.0.0/24 子网。在路由器 B 上,根据您可用的工具执行两项操作之一...

使用 iproute2:ip route add 192.168.0.0/24 via 10.0.0.2

使用路线:route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.2

在 Cisco 路由器上,您也可以等效地使用:

Router> enable
Router# configure terminal
Router(config)# ip route 192.168.0.0 255.255.255.0 10.0.0.2

如果路由器 B不是使用 NAT,您还必须在路由器 A 上添加路由,以便数据包能够路由回 192.168.1.0/24 子网。为了实现这一点,我们必须添加一些新的假设:

  • 路由器 A 运行 Linux。
  • 您在路由器 A 上拥有 root 访问权限(或 CAP_NET_ADMIN)。
  • 路由器 B 允许从 10.0.0.0/24 转发到 192.168.1.0/24(可以使用或不使用 NAT/IP 伪装)或者可以配置为这样做。
  • 路由器 A 上的设备使用 192.168.0.1 作为其默认网关。

我还猜测路由器 B 上的 /32 网络掩码是拼写错误,如果不是这种情况,您将必须将到 192.168.1.0/24 的路由替换为可通过 192.168.1.1 访问的每个设备的多条路由,这些设备需要能够访问您的 NAS。

在路由器 A 上,根据您可用的工具执行两项操作之一......

使用 iproute2:ip route add 192.168.1.0/24 via 10.0.0.3

使用路线:route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.3

在 Cisco 路由器上,您也可以等效地使用:

Router> enable
Router# configure terminal
Router(config)# ip route 192.168.1.0 255.255.255.0 10.0.0.3

现在,当 192.168.1.0/24 上的设备尝试将数据包发送到 192.168.0.180 时,它会知道无法在其配置的 192.168.1.0/24 子网上到达,因此它会将其路由到配置的默认网关(192.168.1.1 处的路由器 B)。路由器 B 知道如何通过 10.0.0.2 处的路由器 A 到达 192.168.0.0/24 子网,并将数据包路由到那里。路由器 A 可以到达 192.168.0.108 处的 NAS,并将数据包转发到那里,然后再返回。

当然,当路由器 A(或 B)重新启动时,这些路由将消失。每次启动时如何添加此路由将在很大程度上取决于可用的发行版、初始化系统或作业调度程序。毫无疑问,在 BSD 和其他系统上也有一种方法可以做到这一点,我只是不确定它们是什么。

如果您对路由器 A 和 B 使用 DHCP,则可以将其配置为向路由器分发适当的路由。如果路由器 A 和 B 上的设备未使用这些路由器作为其默认网关,则需要将它们分别配置为通过 192.168.0.1 到达 192.168.1.0/24 和通过 192.168.1.1 到达 192.168.0.1/24。您也可以使用 DHCP 来执行此操作。

如果您能稍微澄清一下您的网络拓扑,那就太好了。我本来想发表评论,但没有这个权限。

相关内容