
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에 뭔가 있을 텐데, 뭔지 모르겠어요.
이 문제를 어떻게 해결할 수 있나요?
답변1
불행하게도 내 (외부) MySQL 호스트의 방화벽에 내가 모르는 오류가 발생했습니다. 결국 내 vServer의 IP에 대해 MySQL 포트가 차단되었으므로 요청이 다시 돌아오지 않고 HTTP 요청이 작동하는 것입니다.
문제가 해결되었습니다.
항상 모든 방화벽을 다시 확인하세요! 교훈을 얻었습니다.