我有一个带有 Tomcat 的 Linux Web 服务器(CentOS7)和 2 个 MS sql 服务器(SqlOLD - 192.168.4.23 和 SqlNew - 192.168.4.28)。我需要添加一条规则(在网络服务器上),将任何数据包从旧 SQL 转发到新 SQL(端口 tcp/1433)。
我需要这个,因为有一些使用静态IP编译的网络应用程序,我无法用我自己的方式重建它们。
答案1
这是一个有趣的问题。重写地址的常用方法是使用 NATPREROUTING
表,但这在这里不起作用。您不能DNAT
在PREROUTING
表中使用,因为流量不会进入您的原始网络服务器,并且DNAT
在POSTROUTING
.相反,这是DNAT
应该放入OUTPUT
链中(尽管在 NAT 表中)的极少数情况之一。
iptables -t nat -I OUTPUT -o eth0 --dst 192.168.4.23 -j DNAT --to 192.168.4.28
这将通过接口获取所有输出标题eth0
(您可能需要根据您的 CentOS 环境进行调整)获取所有发往 192.168.4.23 的输出标题,并重写至 192.168.4.28。端口号应该保持不变。如果您的内核中有 conntrack 模块,则返回的数据包应该会自动重写。
要列出iptables
规则,您需要运行五个单独的命令(有五组规则),但实际上,大多数情况下前两个命令足以满足您要管理的规则。
iptables -nvL # Blocking and permitting packets ("-t filter")
iptables -t nat -nvL # Rewriting packets, eg different destinations
iptables -t mangle -nvL # Not used so often
iptables -t raw -nvL # Used rarely
iptables -t security -nvL # SELinux
要删除规则,您可以重复它,更改-I
(插入)或-A
(附加)为-D
(删除)。
有很多关于 的教程iptables
。您可能会发现,既然您使用的是 CentOS,那么学习高级防火墙工具是值得的firewalld
(请参阅man firewalld
参考资料 作为起点,当然还有很多 Google-fu)。