我有一个服务器处理几个服务。 为了这个问题的目的,假设其中之一是邮件。 如果邮件发生故障,我想将其转发给另一台主机。 我的networking如下所示:
-- Network 1 -- Box 1 eth1: 192.168.1.5 eth0: 10.10.10.3 -- Network 2 -- Box 2 eth0: 10.10.10.5
所以…传入的请求到达了eth1上的192.168.1.5地址,而不是停在那里,我想通过eth0将它们转发到方块2,然后让它来处理它。
我已经尝试了以下iptables规则:
iptables -t nat -A PREROUTING -p tcp -m tcp -d 192.168.1.5 --dport 25 -j DNAT --to-destination 10.10.10.5:25 iptables -A FORWARD -m state -p tcp -d 10.10.10.5 --dport 25 --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -p tcp -m tcp -s 10.10.10.5 --sport 25 -j SNAT --to-source 192.168.1.5
…无济于事。 使用tcpdump,我可以看到请求进入第二个盒子,但没有发生请求的计算机上。
请帮忙。 谢谢!
如果您需要帮助,我build议您显示完整的iptables规则集。 从tcpdump的几个数据包也不会伤害。
与此同时:
你有IP转发启用? 请检查:
sysctl net.ipv4.conf.all.forwarding
设置:
sysctl net.ipv4.conf.all.forwarding=1
通过添加到/etc/sysctl.conf(或您的分配预期它)永久化。
您还需要允许转发到相反的方向,也为-s 10.10.10.5和-o eth1添加一个前向规则(如果您没有,或者全部/默认策略已接受):
iptables -A FORWARD -s 10.10.10.5 -o eth1 -j ACCEPT
现在用xinetd结束处理邮件。
service smtp { disable = no socket_type = stream wait = no user = root redirect = 10.10.10.5 25 log_on_failure += USERID }
谢谢大家的帮助!
一般的几点意见:
您在客户端没有看到任何回复的一个可能的原因可能是框2上的路由表.DDNAT不重写源地址,为了使DNAT工作,框2需要路由回到源如果这是“一个任意的ip地址”,则Box 2将需要通过Box 1的默认路由,如果是特定的networking,则通过Box 1返回到这些networking的路由将执行。