为什么路由器的静态路由不起作用?

为什么路由器的静态路由不起作用?

背景

我有两个路由器,Router_A 和 Router_B。

Router_A LAN 端 IP 地址为172.16.0.1。Router_A 有两个客户端,Computer_A (IP 172.16.0.11) 和 Router_B (IP 172.16.0.2)。

Router_B WAN 端 IP 地址为172.16.0.2。Router_B LAN 端 IP 地址为10.0.0.1。Router_B 有一个客户端,FTP_Server_B (IP 10.0.0.2)。

在 Router_B 中,FTP 端口(21、990 和一系列预定义端口)被转发至10.0.0.2

静态路由(不起作用)

在 Router_A 中,我设置了静态路由,如下所示:

Destination Address     Subnet Mask     Gateway     Metric
10.0.0.0                255.255.255.0   172.16.0.2  15

据我了解,此静态路由规则意味着,在 Router_A172.16.0.xxx子网内,当数据包需要转至 时10.0.0.xxx,它会到达 Router_A。根据规则,172.16.0.2知道10.0.0.xxx地址。因此,Router_A 会将数据包转发到172.16.0.2

问题

我尝试从 Computer_A 连接到 FTP_Server_B。

  1. 使用ftp://172.16.0.2,我可以登录 FTP 服务器。然后服务器回复其被动模式地址10.0.0.2。此时,10.0.0.2无法访问,客户端无法列出目录和文件。

  2. 使用ftp://10.0.0.2,我甚至无法登录。我甚至无法访问服务器。

答案1

您有两个不同的问题:

使用ftp://172.16.0.2,我可以登录FTP服务器。然后服务器回复它的被动模式地址10.0.0.2。

您正在 Router_B 中转发 FTP 端口,但尚未加载 FTP 辅助模块(该模块会将 FTP 服务器的 PASV 响应重写为 Router_B 的公共 IP 地址)(在 Linux 中通过加载内核模块nf_nat_ftp),并且您尚未配置系统以动态允许数据连接的端口转发(在 Linux 中使用ip_conntrack_ftp内核模块并允许--state RELATED在您的 iptables 规则集中)。

使用ftp://10.0.0.2,我甚至无法访问服务器。

在 Router_A 上为 10.0.0.0/24 设置静态路由应该会将这些数据包传送到 172.16.0.2,但仍然需要配置 Router_B 以在公共接口上接受 10.0.0.0/24 的传入流量,并将这些数据包路由到您的 LAN。您的问题并未表明您已这样做。

相关内容