컴퓨터에서 열림 / 닫힘 포트를 확인하는 방법은 무엇입니까?


135

컴퓨터에서 열림 / 닫힘 포트를 확인하는 방법은 무엇입니까?

netstat -a커맨드 라인에서 사용 했습니다.

  • 포트 상태 "LISTENING"이 포트가 열려 있음을 나타 냅니까?
  • 출력에 표시되지 않은 포트가 닫혀 있습니까?


2
@Justgivemeaname : 다른 호스트 nmap에서 열린 포트를 확인하는 도구 입니다. 컴퓨터에서 실행할 수 있으면 훨씬 빠르고 안정적으로 사용할 수 있습니다. netstat
David Foerster

@DavidFoerster :에 대해 몰랐 netstat으므로 알았습니다. 그러나 링크에서 다른 호스트에서 사용해야한다고 말합니다. 감사!
Justgivemeaname

답변:


163

이것 netstat에 유용한 몇 가지 매개 변수 가 있습니다.

  • -l또는 --listening현재 들어오는 연결을 수신 대기중인 소켓 만 표시합니다.
  • -a또는 --all현재 사용중인 모든 소켓을 표시합니다.
  • -t또는 --tcptcp 소켓을 보여줍니다.
  • -u또는 --udpudp 소켓을 보여줍니다.
  • -n또는 --numericdns를 해결하고 / etc / services를 찾는 대신 호스트 및 포트를 숫자로 표시합니다.

원하는 것을 얻기 위해 이들을 혼합하여 사용합니다. 현재 사용중인 포트 번호를 알려면 다음 중 하나를 사용하십시오.

netstat -atn           # For tcp
netstat -aun           # For udp
netstat -atun          # For both

출력에서 언급 된 모든 포트는 들어오는 연결을 수신 대기하거나 피어에 연결되어 있습니다. ** 다른 모든 포트는 닫힙니다. TCP 및 UDP 포트의 너비는 16 비트입니다 (1-65535에서 시작).

** 또한 피어와 연결 / 분리 할 수 ​​있습니다.


71

이 명령을 사용할 수 있습니다 :

netstat -tulnp | grep <port no>

일부 프로세스가 표시되면 사용 된 프로세스입니다. 출력이 없으면 닫힙니다 (사용되지 않음).


20

어떤 프로세스가 포트를 사용하고 있는지 알아내는 데 사용하기 쉬운 또 다른 대체 명령 줄 :

lsof -n -i4TCP:$PORT | grep LISTEN

.bash_profile에 다음 함수를 추가했습니다.

function pslisten {
    echo `lsof -n -i4TCP:$1 | grep LISTEN`
}

이제 "pslisten 5060"을 실행하여 누가 내 SIP 포트를 잡고 있는지 확인하십시오.

Apple Mac OS X에서도 작동합니다.


13

포트 상태 "LISTENING"이 포트가 열려 있음을 표시합니까?

예. 이는 일부 서비스가 들어오는 연결을 위해 컴퓨터의 해당 포트를 수신하고 있음을 의미합니다. 즉,이 포트는 새 연결을 설정하기 위해 열려 있습니다.

출력에 표시되지 않은 포트가 닫 혔음을 표시 했습니까?

예. 기억 netstat -a모든 활성 (표시됩니다 듣기 ) 및 수동 ( 비 듣기 ) 연결 (일부 서비스는 다른 시스템 / 프로세스로부터 연결이 포트 듣고있는) 모두 서버 역할을 설립하는 포트를 즉 (연결이 설립된다 호스트 / 서비스가 서버 또는 클라이언트 일 수 있다는 사실에 관계없이 포트)

모든 TCP 및 UDP 포트는 소켓이라는 범주에 속하며 많은 것들이 있습니다. 소켓 정보를 보려면를 확인할 수 있습니다 man ss.


감사. 당신은 -a서버 를 의미하고 설립했다. "서버"는 일부 서비스에서 수신 대기중인 포트를 의미합니까? "설정 됨"은 클라이언트 또는 서버의 포트에 관계없이 기존 연결이있는 포트를 의미합니까? 그러면 어떤 종류의 포트가 -a표시되지 않습니까?
Tim

-a옵션이 "모든 활성"소켓을 의미 한다고 생각하지 않습니다 . "모두"를 의미합니다. netstat는 기본적으로 모든 활성 소켓을 표시하지만 수동 소켓 (개방, 청취)은 제외합니다. -a옵션 을 사용하면 활성 및 수동 소켓이 모두 표시됩니다.
Egon Olieux

@EgonOlieux 감사합니다. 나는 정정 받았다. 답변을 편집했습니다.
heemayl

@heemayl 답의 두 번째 부분은 여전히 ​​옳지 않습니다. "듣기"상태의 TCP 소켓은 연결이 될 수 없습니다. 그것은 아무것도 연결되어 있지 않고 듣고 있습니다. 이 때문에 수신 TCP 소켓을 수동 소켓이라고도합니다. 클라이언트가 서버의 (청취) 소켓에 연결을 시도하면 서버에 새 소켓이 작성되어 클라이언트와 연결됩니다. 설정된 연결의 일부인 소켓을 활성 소켓이라고합니다.
Egon Olieux

3

또 다른 옵션은 ss 입니다. 사용하기가 훨씬 쉽습니다 ....

아래 명령은 현재 청취 소켓 목록 만 출력합니다.

root@server:~# ss -l

    Netid  State      Recv-Q Send-Q                                     Local Address:Port                                                      Peer Address:Port   


u_dgr  UNCONN     0      0                                                      * 23353                                                                * 23352                
u_dgr  UNCONN     0      0                                                      * 568                                                                  * 362                  
u_dgr  UNCONN     0      0                                                      * 14836                                                                * 14837                
u_dgr  UNCONN     0      0                                                      * 20446                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 22877                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 504                                                                  * 347                  
u_dgr  UNCONN     0      0                                                      * 16298                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23343                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24125                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 24617                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 23352                                                                * 23353                
u_dgr  UNCONN     0      0                                                      * 23334                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 17113                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 16957                                                                * 369                  
u_dgr  UNCONN     0      0                                                      * 14793                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 23345                                                                * 362                  
u_dgr  UNCONN     0      0                                                      * 24070                                                                * 369                  
udp    UNCONN     0      0                                                      *:sunrpc                                                               *:*                    
udp    UNCONN     0      0                                                      *:981                                                                  *:*                    
udp    UNCONN     0      0                                                     :::sunrpc                                                              :::*                    
udp    UNCONN     0      0                                                     :::981                                                                 :::*                    
tcp    LISTEN     0      128                                            127.0.0.1:85                                                                   *:*                    
tcp    LISTEN     0      128                                                    *:ssh                                                                  *:*                    
tcp    LISTEN     0      128                                                    *:3128                                                                 *:*                    
tcp    LISTEN     0      100                                            127.0.0.1:smtp                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:8006                                                                 *:*                    
tcp    LISTEN     0      128                                                    *:sunrpc                                                               *:*                    
tcp    LISTEN     0      128                                                   :::ssh                                                                 :::*                    
tcp    LISTEN     0      100                                                  ::1:smtp                                                                :::*                    
tcp    LISTEN     0      128                                                   :::sunrpc                                                              :::*                    

1
나는 이것에 대해 감사 지 몰랐어요
닉 여우

2

또는 시계를 사용하면 도움이 될 수 있습니다.

sudo watch -d -n0 "netstat -atnp | grep ESTA"

sudo watch -d -n0 "netstat -tulnp | grep ESTA"

1
-a는 -l과 충돌합니다. -a는 ESTABLISHED 또는 LISTENING을 모두 잡습니다. -l은 LISTENING을 잡기 때문에 실제로는 '-ltnp'tcp, '-lunp'udp 또는 '-ltunp'tcp + udp
ModerateJavaScriptDev

1

실제로 어떤 포트가 열려 있는지 확인하는 더 좋은 방법이 있습니다. netstat또는 의 문제 lsof는 네트워크 스택을 쿼리하고 실제로 컴퓨터에 연결하지 않고 대신 시스템에서 실행중인 것을 확인하려고한다는 것입니다. 더 나은 방법은 다음 nmap과 같이 사용하는 것입니다.

nmap -sT -O localhost

열린 포트를 보려면


0
  1. 해당 범위에서 열린 포트 목록을 얻으려면 이것을 시도하십시오.

    for p in {1..1023}
    do
       (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"
    done
  2. 그리고이 명령은 그것이 무엇인지 보여줄 것입니다!

    cat /etc/services | grep {PORTNumber}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.