TCP 重定向可以保留发起者的 IP 地址吗?

TCP 重定向可以保留发起者的 IP 地址吗?

我有多台 Ubuntu 主机,每台主机都有多台 Ubuntu 虚拟机。其中一台虚拟机是我们的 SMTP 服务器。在 SMTP 虚拟机的主机上,所有 SMTP 调用都使用rinetd以下配置重定向到 SMTP VM:

aa.bb.cc.dd   25              172.16.1.5      25
aa.bb.cc.dd   465             172.16.1.5      465
aa.bb.cc.dd   587             172.16.1.5      587
aa.bb.cc.dd   993             172.16.1.5      993

aa.bb.cc.dd是 SMTP VM 所在主机的公共 IP 地址。172.16.1.5是 SMTP VM 的内部地址。

我的问题是,我无法在 SMTP VM 上设置中继,因为 SMTP VM 上的 postfix 服务器会接收以 aa.bb.cc.dd 作为发起 IP 地址的每个呼叫,因此我无法在中继上设置任何过滤,但我只想为几个 IP 地址启用中继(对于我们的其他主机)。

是否有可能将 SMTP 调用转发到 SMTP1 VM,以便保留发起者的 IP 地址?

答案1

您应该研究使用iptablesiptables-persistent包 - 这将允许您使用 NATing,而不是仅仅通过创建新套接字来“转发”连接。

你的配置看起来会像这样:

-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 25  -j DNAT --to-destination 172.16.1.5:25
-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 465 -j DNAT --to-destination 172.16.1.5:465
-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 587 -j DNAT --to-destination 172.16.1.5:587
-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 993 -j DNAT --to-destination 172.16.1.5:993

您还需要启用ip_forward。在 中设置以下内容/etc/sysctl.conf

net.ipv4.ip_forward=1

您的主机将像路由器一样运行,允许访客访问,并保持真实的源 IP。

相关内容