서버를 운영하다 보면 네트워크 연결이 정상인지 확인해야 될 때가 있음. 이 노트에서는 네트워크 관련해서 알아두면 도움될 몇가지 명령어 알아본다.
IP 정보 확인
- 리눅스:
ifconfig - 윈도우:
ipconifig
ipconfig는 각 네트워크 인터페이스별로 IP 주소를 포함한 정보를 보여준다.
ipconfig하면 나오는것중에서 eth0는 일반적인 네트워크 인터페이스고 lo는 로컬 루프백 인터페이스다.
nc 명령어로 연결 확인
서버 프로그램에는 다양한 내부/외부 서비스와 연동하는데 종종 연결이 불안정할 때가있다. 연결이 잘 이루어지는지 확인 필요성이 있는데 보통 가장 먼저 확인하는 작업은 해당 서버의 특정 포트로 연결이 잘 되는지 확인하는 것. 특정 포트로 연결이 잘 되는지 확인할 때 사용할 수 있는 명령어로 nc가 있다.
다음은 nc로 443 포트로 연결이 되는지 확인하는 명령어의 예
$ nc -z -v www.daum.net 443
Ncat: Version 7.92 (https://nmap.org/ncat)
Ncat: Connected to 211.242.332.24:443.
Ncat: 0 bytes sent, 0 bytes received in 0.07 seconds.
-z 옵션은 데이터 전송 없이 특정 포트가 열려있는지 확인.
-v옵션은 추가 정보를 출력. -v를 안쓰면 연결에 성공해도 메시지를 출력하지 않으므로 답답할 수 있다.
UDP 포트가 열려있는지 여부도 확인가능한데 -u 옵션 쓰면됨.
nc 쓰면 특정 포트 사용하는 서버 구동도 가능! 실제 서버 프로세스 구동전에 두 노드간 통신 제대로 되는지 확인가능함.
-l 을 쓰면 되는데 리스닝 모드. 즉, 서버 모드를 뜻함. -p는 클라 요청을 수신할 포트 의미.
참고로 클라이언트가 연결하면 nc 프로그램이 종료되므로 연결확인이 필요할 때마다 실행해야됨.
netstate 명령어로 포트 사용 확인
서버 프로세스가 구동되어 있는데 해당 포트로 연결이 안된다면 실제 포트로 클라이언트 연결을 기다리고 있는지 확인해야 하는데 이때 사용할 수 있는 명령어가 netstat 다. 이 명령어를 쓰면 현재 사용 중인 소켓의 IP와 포트 확인 가능.
위에서 쓴 옵션 설명
- -l: 리스닝 서버 소켓 출력
- -p: 소켓 사용하는 PID/프로그램 이름 출력
- -u: UDP 소켓 출력
- -t: TCP 소켓 출력
- -n: 포트나 주소를 숫자로 출력 현재 사용주인 전체 포트 확인하고 싶다면 -a 옴션쓰면됨.