将默认 mySQL 端口转发到其他端口,以便将传出的流量发送到特定的 IP 或域

将默认 mySQL 端口转发到其他端口,以便将传出的流量发送到特定的 IP 或域

我们正在使用托管的 mySQL 数据库服务器,该服务器会生成除默认的 3306 之外的端口,我们无法控制它。

我们不想对所有 Ubuntu 22 应用服务器上的现有连接脚本进行更改,因为大多数通常使用默认的 3306 连接到任何 mysql 主机。

有没有办法使用 Iptables 或其他技术在我们的 Ubuntu 服务器上自动将传出连接从端口 3306 转发到特定域或 IP 的端口 11728(比如说)?

意思是,如果我们尝试从我们的 Web 服务器建立到 mydatabase.somehost.com 和端口 3306 的 mysql 连接,它会自动将连接重定向到端口 11728?

我们当然希望通过主机名/IP 指定该规则,以便我们不会影响默认 3306 的其他连接转发到该端口的可能性。

这可能吗?

答案1

虽然你可以用 iptables 来解决这个问题,但何必呢?毕竟你需要在 DBMS 和应用程序之间进行一些抽象,以处理到备份 DBMS 的故障转移(而 VIP 很糟糕)。只需配置你正在使用的任何内容(例如 haproxy、sqlproxy)即可连接到不同的端口。

答案2

使用iptables

# iptables -t nat -A OUTPUT --destination x.x.x.x -p tcp --dport 3306 -j DNAT --to-destination x.x.x.x:11728

您的数据库服务器的地址在哪里x.x.x.x?当然,请将其替换11728为机器实际监听的任何端口。

相关内容