리눅스 포트 체크 프로그램 - nc
2012. 9. 25. 21:08 |
리눅스
일반적으로 리눅스에서 포트를 체크할 때는 telnet을 사용하실 텐데, telnet은 일단 연결되면 빠져나와야 하는 불편함이 있어 자동화 스크립트나 모니터링 용도로 사용하기엔 불편합니다. 또한 UDP 포트는 체크할 수 없죠. 이럴 때 사용하면 좋은 프로그램이 바로 nc입니다.
nc는 크게 두가지 기능이 있습니다. 바로 상대방 포트가 오픈되어 있는지 체크하는 기능과, 내 서버에서 임의의 포트를 리스닝하게 만드는 기능입니다. 저는 서버를 운영하면서 포트 오픈 여부를 체크할 일이 자주 발생하더군요. 일단 물리적인 방화벽 장비가 중간에 해당 포트를 막고 있는지 확인할 수 있고, 상대방 OS에서 방화벽을 오픈하지 않은 경우도 확인할 수 있습니다.
예제로 네이버의 80포트 오픈 여부를 체크해보겠습니다.
nc -z www.naver.com 80
보시다시피 잘 열려 있네요. 이렇게 기본적인 사용법은 -z 옵션 주고 서버 주소 뒤에 포트 번호를 입력하면 됩니다. 기본은 TCP 포트입니다.
다음은 UDP 포트를 체크해보겠습니다. -u 옵션을 주면 되는데요, NTP 서버는 UDP 123 포트를 사용하죠. 예제로 kr.pool.ntp.org를 체크해보겠습니다.
nc -zu kr.pool.ntp.org 123
UDP 포트는 시간이 좀 걸리더군요. 아래와 같이 잘 열려 있음을 확인했습니다.
마지막으로 ipv4 옵션을 써야 하는 경우가 있는데요, 올레닷컴이 대표적으로 그렇더군요. 올레닷컴을 그냥 -z만 주고 체크하면 10초 이상의 딜레이가 발생합니다. 이때 -4 옵션을 주면 해결되더군요. ipv6로 DNS Resolve 하면서 발생하는 문제로 추정하고 있습니다.
사실 이 ipv4 옵션은 nc 뿐 아니라 wget이나 curl을 사용할 때도 동일하게 적용됩니다. 올레닷컴을 wget이나 curl로 체크하면 역시 10초 이상의 딜레이가 발생하지만 -4 옵션을 주면 즉시 반응합니다.
다음은 임의의 포트를 리스닝하게 만드는 법입니다. 예를 들어 WEB 서버는 DMZ에 존재하고 MS-SQL DB서버는 사내망에 존재하는 경우, 1433 포트가 중간에 물리적인 방화벽으로 막혀있는지 여부를 테스트해볼 때 유용하겠죠. (아직 MS-SQL을 설치하지 않아서 리스닝하는 데몬, 프로세스가 없는 경우) 또는 WAS에서 사용하는 8009 포트 역시 마찬가지입니다.
저는 예제로 1433 포트를 리스닝 시켜보겠습니다. -l 옵션을 주시면 됩니다.
nc -l 1433
그러면 아래와 같이 쉘이 응답 대기상태로 진입합니다. 원격에서 해당 포트로 패킷이 날아오면 리스닝 상태가 풀립니다. 어차피 방화벽 오픈 여부만 체크해보면 되니까 한번으로도 충분하겠죠.
이 상태로 제 PC에서 tcping으로 패킷을 한번 날려보겠습니다.
(참고 : 2011/09/22 - [유용한 프로그램] - 특정 TCP 포트로 Ping 날리는 프로그램 - tcping)
보시다시피 정상적으로 1433 포트를 리스닝 하고 있음을 확인했습니다. 둘 사이엔 방화벽에서 1433 포트가 오픈되어 있다는 말이겠죠.
이상입니다.
nc는 크게 두가지 기능이 있습니다. 바로 상대방 포트가 오픈되어 있는지 체크하는 기능과, 내 서버에서 임의의 포트를 리스닝하게 만드는 기능입니다. 저는 서버를 운영하면서 포트 오픈 여부를 체크할 일이 자주 발생하더군요. 일단 물리적인 방화벽 장비가 중간에 해당 포트를 막고 있는지 확인할 수 있고, 상대방 OS에서 방화벽을 오픈하지 않은 경우도 확인할 수 있습니다.
1. 포트 체크하기
예제로 네이버의 80포트 오픈 여부를 체크해보겠습니다.
nc -z www.naver.com 80
보시다시피 잘 열려 있네요. 이렇게 기본적인 사용법은 -z 옵션 주고 서버 주소 뒤에 포트 번호를 입력하면 됩니다. 기본은 TCP 포트입니다.
다음은 UDP 포트를 체크해보겠습니다. -u 옵션을 주면 되는데요, NTP 서버는 UDP 123 포트를 사용하죠. 예제로 kr.pool.ntp.org를 체크해보겠습니다.
nc -zu kr.pool.ntp.org 123
UDP 포트는 시간이 좀 걸리더군요. 아래와 같이 잘 열려 있음을 확인했습니다.
마지막으로 ipv4 옵션을 써야 하는 경우가 있는데요, 올레닷컴이 대표적으로 그렇더군요. 올레닷컴을 그냥 -z만 주고 체크하면 10초 이상의 딜레이가 발생합니다. 이때 -4 옵션을 주면 해결되더군요. ipv6로 DNS Resolve 하면서 발생하는 문제로 추정하고 있습니다.
사실 이 ipv4 옵션은 nc 뿐 아니라 wget이나 curl을 사용할 때도 동일하게 적용됩니다. 올레닷컴을 wget이나 curl로 체크하면 역시 10초 이상의 딜레이가 발생하지만 -4 옵션을 주면 즉시 반응합니다.
2. 포트 리스닝하기
다음은 임의의 포트를 리스닝하게 만드는 법입니다. 예를 들어 WEB 서버는 DMZ에 존재하고 MS-SQL DB서버는 사내망에 존재하는 경우, 1433 포트가 중간에 물리적인 방화벽으로 막혀있는지 여부를 테스트해볼 때 유용하겠죠. (아직 MS-SQL을 설치하지 않아서 리스닝하는 데몬, 프로세스가 없는 경우) 또는 WAS에서 사용하는 8009 포트 역시 마찬가지입니다.
저는 예제로 1433 포트를 리스닝 시켜보겠습니다. -l 옵션을 주시면 됩니다.
nc -l 1433
그러면 아래와 같이 쉘이 응답 대기상태로 진입합니다. 원격에서 해당 포트로 패킷이 날아오면 리스닝 상태가 풀립니다. 어차피 방화벽 오픈 여부만 체크해보면 되니까 한번으로도 충분하겠죠.
이 상태로 제 PC에서 tcping으로 패킷을 한번 날려보겠습니다.
(참고 : 2011/09/22 - [유용한 프로그램] - 특정 TCP 포트로 Ping 날리는 프로그램 - tcping)
보시다시피 정상적으로 1433 포트를 리스닝 하고 있음을 확인했습니다. 둘 사이엔 방화벽에서 1433 포트가 오픈되어 있다는 말이겠죠.
이상입니다.
'리눅스' 카테고리의 다른 글
Are you sure you want to continue connecting (yes/no)? (5) | 2013.09.01 |
---|---|
리눅스 SFTP만 되는 계정 설정 (8) | 2013.05.07 |
리눅스 seq 명령어 사용법 (11) | 2012.11.21 |
리눅스에서 CIFS 마운트하기 (11) | 2012.09.28 |
리눅스 L4 DSR 모드에서 loopback 아답터 설정하기 (2) | 2012.09.25 |
리눅스 패스워드 한줄로 변경하기 (6) | 2012.09.13 |
레드햇 6 버전에서 싱글모드 패스워드 변경 안 되는 경우 (5) | 2012.09.11 |
레드햇 리눅스 yum Repository에 DVD 추가하기 (7) | 2012.04.14 |
최근에 달린 댓글 최근에 달린 댓글