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 上運行並具有本機 IP192.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.

這是為什麼?對任何網頁伺服器的 Http 請求都沒有問題,那麼為什麼是 Mysql 查詢呢?

根據記錄,外部 Mysql 伺服器不會丟棄請求(防火牆暫時停用)。肯定是 iptables 裡有什麼東西,但我不知道是什麼。

我該如何解決這個問題?

答案1

不幸的是,我的(外部)MySQL 主機的防火牆出現了一個我不知道的錯誤。畢竟,我的虛擬伺服器的 IP 的 MySQL 連接埠被阻止,因此這就是請求未返回而 HTTP 請求正常工作的原因。

問題已經解決。

務必仔細檢查所有防火牆!學過的知識。

相關內容