본문 바로가기
Programming/JAVA

[JAVA] 접속오류.

by Pendine 2021. 6. 15.
728x90

접속시도 테스트를 하는 중 DB에 있는 데이터들을 이용해서

접속시도를 하는 프로그램 테스트 중 이상현상이 발생했다.

 

대상 DB의 정보들을 그대로 떠온것들인데다 내부망 아이피라서 접속이

모든 아이피에 대한 접속이 불가능 했어야 했지만

 

프로그램을 실행중에 확인용으로 집어넣어놓은 127.0.0.1 아이피로 접속이 되는지 

헤라클래스 (Hercules) 같은 포트로 똑같이 열어놓으니

여러번 접속이 시도되었다.

 

2시간정도의 삽질과 로그 변경 및 확인 끝에

0.0.0.0 으로 설정된 아이피에서 접속을 시도하는것을 확인했다.

 

외부 공인아이피에서 사용할 내 컴퓨터의 아이피로 접속을 시도하는 로그가

헤라클레스에 남아있어 당황했고 심지어 다른사람의 컴퓨터에서도 같은 현상이 일어났다.

그 누구도 자기 자신의 외부 공인 아이피를 입력한 것이 없고,

같은 아이피로 여러번 입력한 데이터도 없어서,

데이터베이스에 있는 아이피중 0 이거나 데이터가 없는 경우를 의심했지만

숫자가 현저히 적어 로그남기는것을 추가하였고

 

그 결과 아이피가 문자열 '0' 이거나 '0.0.0.0' 으로 쿼리된 대상들에 한해서 같은 현상이 일어나는것을 확인했다.

 

그동안 아이피에 관련된 정보는 문제 없겠거니 하는식으로 넘어갔었지만

이런 현상이 일어날줄은 몰랐다.

 

사용했던 코드는 다음과 같다.

            SocketAddress socketAddress = new InetSocketAddress(host, port);
            try 
            {
                socket.setSoTimeout(timeout);	
                socket.connect(socketAddress, timeout);	
                etc...
            }
            catch (Exception e)
            {
            ...
            }

모두 외부 공인 아이피로 설정된 자신의 아이피로 접속을 시도하여 귀신이 들린줄 알았다.

 

윈도우의 cmd의 ping으로 0이나  0.0.0.0을 보내면

이와 같은 오류로 아무 문제 없겠지 라고 생각했지만

 

자바에서는 어떤식으로 처리되는지 생각조차 못했기 때문에 생겼던 일이고,

큰 문제없이 테스트에서 확인되어 넘어갈 수 있었기때문에 다행이라고 생각한다.

 

그동안 DB에서 정보들을 로딩할 때, 큰 의미없이 그저 그런가보다 하고 넘어갔었는데

불러온 정보가 잘못된 정보지만,

이 정보가 예기치 못한 상황을 이끌어 낼 수 있기 때문에,

로딩하는 쿼리 부분에서 오류를 발생시킬 수 있는 부분을 사전에 제외 할 수 있도록 하는 것이 중요하다고 직접 체험하게 되었다.

728x90

댓글