我有多台 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
您应该研究使用iptables
和iptables-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。