http 请求在 KVM 虚拟机上运行,​​mysql 不运行?

http 请求在 KVM 虚拟机上运行,​​mysql 不运行?

我有一个带有 KVM 虚拟机的 Ubuntu 服务器。

我在防火墙中允许 SSH,这样我就可以访问主机。我还允许与状态相关的已建立的传入流量。

这是主机的完整 iptables 设置:

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  [MYIP]               anywhere             tcp dpt:ssh
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       all  --  [MYIP]               [VSERVER IP]  to:192.168.122.122

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24

虚拟服务器与 Windows 一起运行并具有本地 IP,192.168.122.122正如您在中所看到的PREROUTING,它的设置使得只有我可以通过所有端口访问它。

远程桌面运行正常,我设法使用外部 IP([VSERVER IP])连接到服务器。连接到服务器后,我尝试打开 Internet Explorer 并输入 stackoverflow.com。成功了,页面显示出来。

但是,当我运行一个简单的 Mysql 程序(使用.NET MySql.Data.dll)时,该程序应该对其他服务器进行查询,但它失败了,

MySql.Data.MySqlClient.MySqlException (0x800004005): 
Unable to connect to any of the specified MySQL hosts.

这是为什么?对任何 Web 服务器的 Http 请求都没有问题,那么 Mysql 查询为什么有问题呢?

需要说明的是,外部 Mysql 服务器并未丢弃请求(防火墙暂时禁用)。肯定是 iptables 出了问题,但我不知道是什么。

我该如何修复此问题?

答案1

不幸的是,我的(外部)MySQL 主机的防火墙出现了一个我不知道的错误。毕竟,我的 vServer IP 的 MySQL 端口被阻止了,所以这就是请求没有返回而 HTTP 请求可以正常工作的原因。

该问题已解决。

务必仔细检查所有防火墙!吸取教训。

相关内容