반응형

OS: Ubuntu 계열 (11.04부터 12.04까지 테스트)



자바(Java)로 서버 소켓을 열고 자기 자신의 IP주소를 다른 연결된 기기에 알려 주는 간단한 프로그램을 짰는데, 이상하게 IP주소가 실제 장비의 IP주소와 다르게 나왔다.

예를 들면, ifconfig 명령을 통해서 나오는 네트워크 인터페이스 주소 192.168.1.6인데, 자바 프로그램에서는 전혀 엉뚱한 192.168.1.17로 인식되는 문제였다. SSH, ping을 비롯한 실제 네트워크 연결은 모두 192.168.1.6으로 정상적으로 수행되는데, 이상하게 Java 코드에서 IP주소를 얻어오는 명령에서는 다른 IP주소를 보게 되는 것이다.



네트워크 설정에 따라서 여러가지 원인이 있을 수 있겠지만, 가장 간단한 원인으로는 /etc/hosts 파일에 IP주소가 잘못 적혀 있는 경우가 있다. 필자의 경우에도 예전에 쓰던 리눅스 머신을 다른 네트워크에 연결시키면서 유동IP를 통해서 새로운 IP주소를 부여받았지만, /etc/hosts 파일에는 예전에 이동하기 전의 IP주소가 기록되어 있는 것을 발견했다.


아래와 같이 /etc/hosts 파일에서 리눅스 머신 이름에 매핑되어 있는 IP주소를 올바른 IP주소로 변경하거나, 아예 해당 라인을 삭제함으로써 해결할 수 있다. 그러나 해당 라인을 아예 삭제할 경우, 상황에 따라 네트워크에 연결하는 특정 프로그램이 작동하지 않을 수도 있으므로 삭제하기 전에 확인이 필요하다.


127.0.0.1  localhost

192.168.1.6  usera-Linux    # IP주소를 올바르게 맞추거나, 해당 라인 삭제




반응형
블로그 이미지

Bryan_

,