네트워크 통신을 하다보면 UDP TCP에 포트가 열려있는지 확인이 필요한 경우가 있습니다. 이럴때 유용하게 쓸 수 있는 방법을 소개합니다.
UDP TCP 포트 확인 방법
TCP 포트 확인
Windows에서 PowerShell 사용
UDP TCP 포트 확인은 Windows에서는 PowerShell을 사용하여 포트를 확인할 수 있습니다.
Test-NetConnection -ComputerName [IP_address] -Port [port]
이 명령어를 실행하면 해당 포트와 IP로 연결이 되는지 결과를 볼 수 있습니다. 만약 연결이 성공하면 포트가 열려 있음을 의미합니다.
만약 여러 포트를 한번에 확인하려면 스크립트를 작성할 수도 있습니다.
참고: 이 명령어들은 로컬 머신에서 원격 서버의 포트에 접근 가능한지만 확인합니다. 만약 방화벽, 네트워크 정책 등이 중간에 끼어 있다면 이 명령어로는 확인이 어려울 수 있습니다.
여러 범위의 TCP 포트 확인
범위 내의 포트가 열려 있는지 확인하려면 스크립트를 사용해 여러 포트를 순차적으로 테스트할 수 있습니다. 여기에는 여러 방법이 있을 수 있지만, 가장 간단한 것은 Bash 스크립트나 PowerShell 스크립트를 사용하는 것입니다.
Windows에서는 다음과 같은 PowerShell 스크립트를 사용할 수 있습니다.
$IP = "공용 IP"
59000..60000 | ForEach-Object {
$result = Test-NetConnection -ComputerName $IP -Port $_
if ($result.TcpTestSucceeded) {
Write-Host "Port $_ is open"
} else {
Write-Host "Port $_ is closed"
}
}
공용 IP 부분의 외부 IP를 적어주세요
tcping 프로그램 이용
소개해드릴 툴은 TCP 서비스에 대한 응답 유무를 체크할 수 있는 프로그램인데요, 가장 많이 사용하고 있는 것이 tcping이 되겠습니다.
tcping은 단순 응답에 그치지 않고, TCP 서비스 포트에 대한 응답 여부를 체크하는 툴로써 보다 세밀한 응답을 기대할 수 있습니다.
tcping은 ping과 유사하게 도스 명령으로 처리되는데요, ping x.x.x.x -t 옵션과 같이 계속적인 응답을 요구할 때는 tcping -t x.x.x.x 로 옵션을 주면 됩니다.
ping이 -t 옵션을 ip 뒤에 주는 것에 비해 tcping은 ip의 앞에 주게 됩니다.
tcping -t daum.net 80
위 명령은 daum.net 홈페이지에 대하여 tcp/80 서비스에 대한 응답을 테스트하는 명령입니다.
UDP 포트 확인
외부 IP에 IP를 입력하고 확인하고자 하는 포트를 적습니다.
$UdpClient = New-Object System.Net.Sockets.UdpClient
$UdpClient.Connect("외부IP", 포트)
$Message = [Text.Encoding]::ASCII.GetBytes("Test message")
$UdpClient.Send($Message, $Message.Length)
$UdpClient.Close()
UCP포트 범위의 확인
범위로 검색하고 싶으시면 아래의 포트 MIN~ MAX 값을 설정하고 외부IP를 적어줍니다.
$StartPort = 포트 MIN
$EndPort = 포트 MAX
$IPAddress = "외부IP"
for ($port=$StartPort; $port -le $EndPort; $port++) {
$udpclient = New-Object System.Net.Sockets.UdpClient
$udpclient.Connect($IPAddress, $port)
$status = $null
try {
$udpclient.Send([Text.Encoding]::ASCII.GetBytes("Test"), 4) | Out-Null
$status = "Open"
}
catch {
$status = "Closed"
}
finally {
$udpclient.Close()
}
Write-Host "Port $port is $status"
}
이 스크립트는 각 포트에 대해 UDP 패킷을 전송하고 에러가 발생하지 않는다면 해당 포트를 ‘Open’으로 표시합니다.
주의: 이 스크립트는 실제로 해당 IP에 UDP 패킷을 전송합니다. 따라서 네트워크 정책이나 방화벽 설정에 따라 문제가 발생할 수 있습니다. 항상 조심스럽게 사용해야 합니다.
UDP TCP 포트 확인
기타 내부 포트 비어있는지 확인
netstat -an
특정포트 사용하고 있는지 확인 예) 80번 포트 어디서 쓰는지
netstat -ano | findstr ":80"