Ubuntu
在 KVM 虛擬機上工作的 http 請求,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.
這是為什麼?對任何網路伺服器的 Http 請求都沒有問題,那為什麼是 Mysql 查詢呢?
作為記錄,外部 Mysql 伺服器沒有丟棄請求(防火牆暫時禁用)。它一定是 iptables 中的東西,但我不知道是什麼。
我該如何解決這個問題?
不幸的是,我的(外部)MySQL 主機的防火牆出現了一個我不知道的錯誤。畢竟我的 vServer 的 IP 的 MySQL 埠被阻止了,所以這就是為什麼請求沒有返回並且 HTTP 請求正在工作的原因。
問題已解決。
始終仔細檢查所有防火牆!學過的知識。