在双 NAT 网络后保留源 IP

在双 NAT 网络后保留源 IP

我有一个发生双重 NAT 转发的网络场景。
公共防火墙内部防火墙正在进行 NAT 转发。我只能控制内部防火墙

客户:XXX
公共防火墙:10.10.10.1
内部防火墙:192.168.1.10
SSH 服务器:192.168.1.20

公共防火墙:将所有端口转发至内部防火墙
内部防火墙:配置为将端口 22 转发至SSH 服务器

我的问题是客户通过连接到端口 22公共防火墙我看到了内部防火墙(192.168.1.10)SSH 服务器而不是客户的知识产权

这是 iptables 的配置方式内部防火墙

iptables -A PREROUTING -t nat -p tcp -d 192.168.1.10 --dport 22 -j DNAT --到目的地 192.168.1.20:22

iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.20 --dport 22 -j SNAT --to-source 192.168.1.10

有没有办法保存客户的当 IP 达到SSH 服务器

答案1

如果您删除内部防火墙上的 SNAT,并且所有系统都有适当的路由来到达其发送的数据包中的目标 IP,那么您应该能够保留客户端 IP。

这可能意味着 SSH 服务器需要使用内部防火墙作为其默认网关。您可能需要以另一种方式执行 SNAT,因此当流量通过该方式返回客户端时,SSH 服务器的源 IP 将更改为内部防火墙的源 IP。这取决于公共防火墙。

如果 SSH 服务器上的流量莫名其妙地消失,请尝试记录火星数据包 ( net.ipv4.conf.all.log_martians) 和/或暂时关闭反向路径过滤器 ( net.ipv4.conf.all.rp_filter)。先让事情简单化,然后再添加 RPF 之类的复杂性。

进行故障排除时,在特定接口(tcpdump -i netX)上而不是所有接口(tcpdump -i any)上捕获数据包,这样您就可以准确地看到流量来自哪里。

如果无法将内部防火墙设置为默认网关,您也可以使用 SSH 服务器上的策略路由来实现,但策略路由非常糟糕。不推荐。

关于网络其余部分的信息不足以提供明确的答案,但你想要的在技术上是可行的。

相关内容