개요
서비스를 구성하는데, UDP 포트를 사용하여 연동하는 서비스가 있었습니다. 문제는 서비스의 기능이 정상적으로 동작하지 않아서 UDP 포트 서비스가 정상적으로 동작하는지 확인해야만 했습니다. 본 문서에서는 UDP 포트가 정상적으로 서비스 중인지 확인할 방법으로 "netcat"과 "nmap"을 알아 보도록 하겠습니다.
netcat
netcat (줄여서 "nc") 명령을 이용하면 간단하게 특정 포트가 열려 있는지 확인 가능합니다.
# netcat -vz -t 192.168.0.10 3306
Connection to 192.168.0.10 3306 port [tcp/mysql] succeeded!
# netcat -vz -u 192.168.0.10 36011
Connection to 192.168.0.10 36011 port [udp/*] succeeded!
# netcat -vz -u 192.168.0.209 36011
# netcat -vz -u 192.168.0.209 36012
# netcat -vz -u 192.168.0.209 36014
# netcat -vz -u 192.168.0.209 36010
#
위와 같이 "-t" 옵션으로 TCP 포트도 확인할 수 있고, "-u" 옵션으로 UDP 포트도 확인할 수 있습니다.
UDP 포트 확인 시에, 해당 포트에 연결이 성공해야 "Connection to 192.168.0.10 36011 port [udp/*] succeeded!"와 같은 메시지가 출력됩니다.
하지만, 윈도우 서버에 대해서 netcat의 UDP 포트를 확인하는 것은 문제가 있습니다. 윈도우 서버의 경우에는 방화벽 때문인지 실제로 열려 있는 포트가 없음에도 모두 열려 있는 것 처럼 결과가 나오는 점을 주의하셔야 합니다.
nmap
"nmap"이라는 포트 스캔 프로그램을 이용하면, 해당 포트가 열려 있고 서비스 중인지 간단하게 확인할 수 있습니다.
"namp"을 이용하여 다음과 같이 자기 자신의 36000 ~ 36020 포트가 정상적으로 열려 있는지 확인할 수 있습니다.
# sudo nmap -sU -O -p 36000-36020 127.0.0.1
Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-28 15:16 KST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000033s latency).
PORT STATE SERVICE
36000/udp closed unknown
36001/udp closed allpeers
36002/udp closed unknown
36003/udp closed unknown
36004/udp closed unknown
36005/udp closed unknown
36006/udp closed unknown
36007/udp closed unknown
36008/udp closed unknown
36009/udp closed unknown
36010/udp open|filtered unknown
36011/udp closed unknown
36012/udp closed unknown
36013/udp closed unknown
36014/udp closed unknown
36015/udp open|filtered unknown
36016/udp closed unknown
36017/udp closed unknown
36018/udp closed unknown
36019/udp closed unknown
36020/udp closed unknown
Too many fingerprints match this host to give specific OS details
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.66 seconds
nmap을 이용하여 36000 ~ 36020까지의 포트를 확인해 보니, 36010, 36015 두개의 포트가 열려 있는 것을 확인할 수 있었습니다.
그런데 이를 자기 자신이 아닌 다른 서버를 대상으로 시험해 보면 결과가 매번 다르게 나오는 게 신뢰성이 좀 떨어집니다.
특히 윈도우 서버에 대해서 시험을 하면, 윈도우 방화벽 때문인지 모두 열려 있다고 결과가 나와서 좀 당황스러웠습니다.
# sudo nmap -sU -O -p 36000-36020 192.168.0.10
Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-28 16:13 KST
Nmap scan report for 192.168.0.10
Host is up (0.00019s latency).
PORT STATE SERVICE
36000/udp open|filtered unknown
36001/udp open|filtered allpeers
36002/udp open|filtered unknown
36003/udp open|filtered unknown
36004/udp open|filtered unknown
36005/udp open|filtered unknown
36006/udp open|filtered unknown
36007/udp open|filtered unknown
36008/udp open|filtered unknown
36009/udp open|filtered unknown
36010/udp open|filtered unknown
36011/udp open|filtered unknown
36012/udp open|filtered unknown
36013/udp open|filtered unknown
36014/udp open|filtered unknown
36015/udp open|filtered unknown
36016/udp open|filtered unknown
36017/udp open|filtered unknown
36018/udp open|filtered unknown
36019/udp open|filtered unknown
36020/udp open|filtered unknown
MAC Address: 4C:ED:FB:97:7A:C7 (Asustek Computer)
Too many fingerprints match this host to give specific OS details
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.52 seconds
이런 면에서 nmap 보다는 nc 명령이 조금 더 신뢰성이 있는 것 같습니다.
참고자료
- "Testing UDP Port Connectivity":https://www.baeldung.com/linux/udp-port-testing
'Linux,Unix,BSD' 카테고리의 다른 글
[shell] 특정 폴더 아래의 모든 파일에 대한 작업 스크립트 (0) | 2024.05.14 |
---|---|
[linux] minicom을 이용하여 USB serial port 접속하기 (0) | 2024.04.01 |
[ROCK5b] python - "Exporting GPIO: Permission denied" error (0) | 2023.12.27 |
[ROCK5b] 핫스팟(Hotspot) 활성화 실패 해결 기록 (0) | 2023.12.26 |
[ROCK5B] 연결된 USB serial 장치를 찾을 수 없음 (0) | 2023.11.29 |