![两个路由器之间的端口转发,最终 IP 错误](https://linux22.com/image/631530/%E4%B8%A4%E4%B8%AA%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%EF%BC%8C%E6%9C%80%E7%BB%88%20IP%20%E9%94%99%E8%AF%AF.png)
情况是这样的:
- 我有 AdSL 调制解调器连接到第一个路由器“A”-本地 IP 192.168.2.1
- 我将 SSH 端口转发到第二个路由器“B” - IP 192.168.1.1
- 在路由器“B”上,我将 SSH 端口转发到机器 - 192.168.1.100
一切正常,我可以远程登录到我的 SSH 服务器,但问题是,当我检查 SSH 日志时,所有登录尝试的 IP 地址都是本地的。例如:
Mar 28 13:09:12 myserver sshd[14956]: Failed password for invalid user admin from 192.168.2.1 port 44341 ssh2
当我转发 http 端口时也会发生同样的事情。
如何修复?我需要知道正确的 IP 地址才能限制 ssh 访问。
第一个路由器是 Mikrotik,第二个是 CISCO,我在服务器上使用 CentOS。
+-----------+ +-----------+ +-------------+
ASDL | Router A | | Router B | | SSH Server |
------>| Miktrotik |--->| Cisco |--->| CentOS |
modem |192.168.2.1| |192.168.1.1| |192.168.1.100|
+-----------+ +-----------+ +-------------+
答案1
你不能这样做,因为你正在使用 NAT。你应该把过滤功能放在第一个路由器上。
答案2
这是否可行取决于网络设置。如果保留了原始客户端 IP,则从服务器返回的数据包将遵循默认路由进入互联网。但是,它们必须通过路由器“B”路由,然后通过路由器“A”,以便这些路由器恢复对进入您网络的数据包上的服务器 IP 地址所做的更改。
如果从服务器到互联网的默认路由确实通过这些路由器传输数据包,那么就可以按照您的要求进行操作,假设两个路由器在转发流量时都能够保留客户端 IP。
由于服务器看到路由器“A”的 IP,因此路由器“B”似乎已配置为保留客户端 IP。因此,您只需重新配置路由器“A”以保留客户端 IP,因为它正在转发数据包。
我不了解 Mikrotik,所以我无法告诉您如何配置路由器“A”,只是您缺少那部分。