Ubuntu

在 KVM 虛擬機上工作的 http 請求,mysql 不是嗎?

  • February 23, 2015

我有一個帶有 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 中的東西,但我不知道是什麼。

我該如何解決這個問題?

不幸的是,我的(外部)MySQL 主機的防火牆出現了一個我不知道的錯誤。畢竟我的 vServer 的 IP 的 MySQL 埠被阻止了,所以這就是為什麼請求沒有返回並且 HTTP 請求正在工作的原因。

問題已解決。

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

引用自:https://serverfault.com/questions/670826