将 MySQL 请求从旧服务器重定向到新服务器

将 MySQL 请求从旧服务器重定向到新服务器

我有一个带有 Tomcat 的 Linux Web 服务器(CentOS7)和 2 个 MS sql 服务器(SqlOLD - 192.168.4.23 和 SqlNew - 192.168.4.28)。我需要添加一条规则(在网络服务器上),将任何数据包从旧 SQL 转发到新 SQL(端口 tcp/1433)。

我需要这个,因为有一些使用静态IP编译的网络应用程序,我无法用我自己的方式重建它们。

答案1

这是一个有趣的问题。重写地址的常用方法是使用 NATPREROUTING表,但这在这里不起作用。您不能DNATPREROUTING表中使用,因为流量不会进入您的原始网络服务器,并且DNATPOSTROUTING.相反,这是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)。

相关内容