依赖于iptables规则的可变端口转发

我想设置一个特殊的SMTP环境:两个不同的SMTP服务器,应该从SMTP客户端透明地访问。

比方说,我有一个运行在192.168.0.1:25的RFC兼容Postfix和一个RFC忽略服务器欺骗客户端在192.168.0.1:2525。

现在我想要以下。 在正确的端口上侦听时,大多数连接都应该由Postfix来处理。 但是,由于RBL列表,滥用行为或超出限制,我目前使用不同的iptables规则拒绝/丢弃连接。 只是为了减lessPostfix服务器上的负载。 现在,我不再想要丢弃它们,而是将连接转发到端口2525.第二台服务器是作为一个tarpit,然后推迟/拒绝邮件。

我不知道如何转发连接取决于INPUT链中的其他iptables规则。 在那里我使用xt_recent和限制filter来dynamic决定ACCEPT和DROP。

假设iptables在运行postfix和其他服务器的同一台计算机上运行,​​则需要一个带有目标REDIRECT的nat规则:

iptables -t nat -A PREROUTING -p tcp -s [address_matching_rbl] –dport 25 -j REDIRECT –to-ports 2525

还需要过滤规则以允许连接到链式input中的端口2525。 此规则不必与RBL地址相匹配。

由于您已经使用iptables从黑名单主机中删除连接,您可能已经拥有了地址列表,并使用它编写了iptables规则。 你可以使用module ipset( http://ipset.netfilter.org/ )来使这个匹配工作更有效率,并且能够在不重新加载整个iptablesconfiguration的情况下重新加载地址列表。