![SMTP IP 转发到另一台机器](https://linux22.com/image/1189514/SMTP%20IP%20%E8%BD%AC%E5%8F%91%E5%88%B0%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8.png)
如果这是一个愚蠢的错误,请原谅,这是我第一次设置端口转发。我有两台机器,其中一台机器设置为 DMZ(192.168.0.67),所有入站流量将首先到达。我已将第二台机器配置为电子邮件服务器(192.168.0.78)。
当我通过 telnet 从 dmz 服务器或其他计算机连接到邮件服务器时,我从 smtp 服务器收到 220 响应。所以我知道服务器正在运行并且可以从邮件服务器外部访问。
我编辑了 /etc/ufw/before.rules,尝试将端口 25 上的所有流量转发到 dmz 计算机,再转发到我设置的邮件服务器。我在文件顶部的 *filter 部分上方添加了以下几行
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING --protocol tcp --destination 192.168.0.67 --dport 25 --jump DNAT --to-destination 192.168.0.78:25
-A POSTROUTING --protocol tcp --destination 192.168.0.78 --dport 25 --jump SNAT --to-source 192.168.0.67
COMMIT
在此之后,我确保 UFW 能够成功重新加载,并重新启动 DMZ 机器以确保万无一失。
不幸的是,当我通过 telnet 连接到 dmz 服务器上的 25 端口时,我没有收到响应。我读了不少文章,看了一些视频,似乎找不到我做错了什么。
我检查了 IP 转发是否已启用
sysctl net.ipv4.ip_forward
,结果为 1。
我也跑了
sudo socat TCP4-LISTEN:25,fork,reuseaddr TCP4:192.168.0.78:25
它成功了,让我能够使用 telnet 连接到 dmz 服务器上的端口 25,并按照我的意愿从邮件服务器接收回复。这让我认为问题只是我对规则做了一些错误。任何帮助都将不胜感激。
编辑:我目前正在运行 Ubuntu 22.04.1 LTS
答案1
多亏了这个答案,我最终弄清楚了问题出在哪里
如何配置 UFW 以允许 IP 转发?
我的DEFAULT_FORWARD_POLICY
设置为DROP
不在ACCEPT
/etc/default/ufw 中
改变它并且它按预期工作。