iptables - 重定向到本地网络导致连接问题

iptables - 重定向到本地网络导致连接问题

我有 2 个 Debian 路由器和网络设置如下:

    |
    |
    | Internet/Public IP
    |
----------
 ROUTER A 
----------
    |
    | 10.97.0.1/16
    |
    |                    10.97.64.1/16   --------
    +---------------------------------- | Client |
    |                                    --------
    |
    | 10.97.0.2/16
----------
 ROUTER B
----------
    |
    | 10.98.0.1/30
    |
    |                     10.98.0.2/30   --------
    +---------------------------------- | Server |
                                         --------

我将路由器 A 设置为客户端的默认网关,以便它可以访问互联网,并且我还在路由器 A 上配置了静态路由,以便可以访问 10.98.0.2 上的服务器,如下所示:

ip route add 10.98.0.0/16 via 10.97.0.2

然后我在路由器 A 上添加了 iptables 规则,以允许客户端访问服务器:

-A FORWARD -s 10.97.0.0/16 -d 10.98.0.0/16 -j ACCEPT

现在我面临的问题是,客户端的这种设置会导致 ICMP 重定向、数据包丢失和 SSH 连接问题(有时可以连接,有时不能),这让我相信其他协议也会出现问题。我当然可以在客户端上手动设置静态路由,并明确指定使用 ROUTER B 进行与 10.98.0.0/16 网络相关的通信,我这样做是为了测试目的,到目前为止它运行正常,但如果可能的话,我想避免这种情况,只使用 ROUTER A,因为最终会有多个客户端,这意味着我需要为每个客户端设置静态路由。

net.ipv4.ip_forward已启用,除这种情况外,我的路由没有任何问题。

谢谢!

PS:我目前正在虚拟环境中运行此设置,然后再将其部署到真实硬件上。

相关内容