Mysql代理和端口映射

Mysql代理和端口映射

你好,我有一个类似于代理 mysql 连接的愚蠢想法。

我已经将我的概念图上传到这里http://i52.tinypic.com/o7src3.png

本地网络上有一台机器在不同端口上运行多个 mysql 服务器。出于安全原因,这台机器不能直接暴露给互联网。客户端在不知道这些端口的情况下连接到默认 mysql 端口 (3306)。通过识别客户端的域名,客户端请求被路由到正确的 mysql 服务器端口。

我尝试使用 mysql-proxy,但似乎这种情况无法通过 mysql-proxy 实现(我没有付出更多努力)。

有没有办法使用 iptables 或任何其他方法来实现这一点?

非常感谢您的回复。

答案1

问题是,没有与 Host: 等同的项(HTTP 虚拟服务器)可用于区分同一台机器上的 abc.com 和 xyz.com。代理服务器看到的只是通过端口 3306 进入 1.2.3.4 的连接。您可以在一个物理主机上使用多个 IP(端口转发/NAT)来实现这一点,但不能在一个 IP 上实现,因为代理不知道使用什么名称来连接它。

答案2

您可以使用 iptables 来实现这一点。

iptables -t nat -A PREROUTING --source dbs1.abc.com --dport 3306 -j DNAT --to 123.63.1.23:13307
iptables -t nat -A PREROUTING --source dbs2.abc.com --dport 3306 -j DNAT --to 123.63.1.23:13306

但是,您说“[c] 客户端请求通过识别其域名路由到正确的 mysql 服务器端口。” --sourceiptables 中的参数不能是域名。它可以是主机名(但通常使用主机的 IP 地址,因为强制 iptables 解析名称可能会危害您的健康)或 IP 地址范围。

相关内容