iptables 端口转发到具有不同端口的服务器

Wun*_*ark 3 smtp iptables port-forwarding

我正在尝试从一台服务器转发到另一台服务器。我尝试了许多 iptables 命令,但它们不起作用。难道我做错了什么?

这是我的设置:

  • VPS1:1.1.1.1
    • SMTP 端口:25
    • UFW:关闭
    • iptables 策略:接受所有
    • 主机名:mailbox.xxxxxx.com
    • 操作系统:Ubuntu 14.04
  • 邮件服务器:2.2.2.2
    • SMTP NAT 端口:15324

我试过这些命令:

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 2.2.2.2:15324
iptables -A FORWARD -d 2.2.2.2 -p tcp --dport 15324 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

iptables -t nat -nvL

Chain PREROUTING (policy ACCEPT 459 packets, 17802 bytes) pkts bytes target prot opt in out source destination 19 1088 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:2.2.2.2:153

Chain POSTROUTING(策略接受 2 个数据包,120 字节)pkts 字节目标保护选择退出源目标 39 2603 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0

在外部 IP 上运行 telnet 到端口 25 后,我得到了这个。数据包数量发生变化,所以它得到了一些东西,但我不知道为什么它没有通过 PREROUTING

Chain PREROUTING (policy ACCEPT 469 packet, 18178 bytes) pkts bytes target prot opt in out source destination 19 1088 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:2.2.2.2:153

Chain POSTROUTING(策略接受 3 个数据包,180 字节)pkts 字节目标保护选择退出源目标 42 2812 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0


尝试 telnet 向我展示了这一点。

telnet 2.2.2.2 15324 正在尝试 2.2.2.2... 连接到 2.2.2.2。转义字符是“^]”。220 邮箱.xxxxxx.com ESMTP 嗨,我是邮箱邮箱(Ubuntu/Postfix;参见https://mailinabox.email/

telnet 邮箱.xxxxxx.com 25 正在尝试 1.1.1.1... telnet:无法连接到远程主机:连接被拒绝

Wun*_*ark 8

该死的。发布后我修复了它像一分钟。解决方案:

echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)