[공부용]참고 사이트 모음/[Linux]

[Linux] 포트상태확인(netstat, nc, ss) / 프로세스확인(ps) / pid로port찾기(lsof)

bled 2020. 10. 28. 21:14

출처) slow-and-steady-wins-the-race.tistory.com/50

 

1. 포트 상태 확인 (netstat 명령어)

       1-1. 열려있는 모든 포트 확인

             netstat -nap

       1-2. LISTEN중인 포트 확인

             netstat -nap | grep LISTEN

       1-3. 특정 포트번호가 열려있는지 확인

             netstat -nap | grep 포트번호

 

  • -a : 모든 소켓 표시
  • -t : TCP 만 표시
  • -u: UDP 만 표시
  • -n: 호스트, 포트 번호 등의 이름 확인을 하지 않고 숫자로 표시
  • -p: 소켓을 사용하고 있는 프로세스의 ID 표시
  • -r: 라우팅 테이블 표시
  • -l : 연결 대기 상태인 소켓만 표시

 

 

2. netstat보다 ss를 더 권장.

       ss -ltp

 

  • -l: 모든 리슨하는 포트를 표시
  • -r: IP대신 이름으로 표시
  • -t: TCP 소켓만 표시
  • -u: UDP 소켓만 표시
  • -x: Unix Domain 소켓만 표시
  • -n: 호스트 이름으로 변환하지 않고 IP 를 출력. 포트도 서비스명(/etc/services) 대신 포트 번호 출력
  • -p: 프로세스 정보 표시

 

 

 

3. 특정 호스트의 포트가 열려있는지 확인 (nc 명령어)

       3-1. nc -z 호스트주소 포트

              nc -z www.naver.com 80

       3-2. 특정 호스트의 포트 범위를 지정하여 열려있는지 확인

             nc -z www.naver.com -z 10-20

 

 

4. 프로세스 확인, 프로세스 죽이기

       ps -ef

       kill -9 프로세스ID

 

 

5. 프로세스에 의해 열린 파일들 확인 (lsof 명령어)

       List Open File의 약자. 

       5-1. 특정 프로세스가 오픈한 파일 리스트 

             lsof -p 포트번호

       5-2. 특정 ip에 대한 접속 확인

             lsof -i 특정아이피

       5-3. 특정 사용자가 오픈한 프로세스 확인

             lsof -u 사용자명

       5-4. 특정 파일이 사용하는 프로세스 확인

             lsof 파일경로       

       5-5. 프로세스 ID로 포트번호 확인

             lsof -n -p pid | grep -i tcp


blog.voidmainvoid.net/201

netstat 소개

netstat(network statistics)는 전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스(네트워크 인터페이스 컨트롤러 또는 소프트웨어 정의 네트워크 인터페이스), 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령 줄 도구이다. OS X, 리눅스, 솔라리스, BSD를 포함한 유닉스 계열 운영 체제와 윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 8, 윈도우 10을 포함한 윈도우 NT 기반 운영 체제에서 이용이 가능하다. 네트워크의 문제를 찾아내고 성능 측정으로서 네트워크 상의 트래픽의 양을 결정하기 위해 사용된다.

리눅스에서 net-tools의 일부인 netstat은 시대에 뒤쳐진 것으로 간주되며, iproute2의 일부인 ss를 대신 사용하여야 한다.

(위키피디아 발쵀)

 

netstat 옵션들

-a : 현재다른PC와 연결(Established)되어 있거나 대기(Listening)중인 모든 포트 번호를 확인 

-r : 라우팅 테이블 확인 및 커넥션되어 있는 포트번호를 확인 

-n : 현재 다른PC와 연결되어 있는 포트번호를 확인

-e : 랜카드에서 송수한 패킷의 용량 및 종류를 확인 

-s : IP, ICMP, UDP프로토콜별의 상태 확인

-t : tcp protocol 

-u : udp protocol 

-p : 프로토콜 사용 Process ID 노출

-c : 1초 단위로 보여줌

 

netstat 예제 및 설명

  - Proto : 프로토콜 종류. TCP / UDP / RAW

  - Recv-Q : 해당 process가 현재 받는 바이트 표기

  - Send-Q : 해당 process가 현재 보내는 바이트 표기

  - Local Address : 출발지 주소 및 포트. 자신의 주소 및 포트

  - Foreign Address : 목적지 주소 및 포트

  - State : 포트의 상태 표기.

    => CLOSED

    => CLOSED_WAIT

    => CLOSING

    => ESTABLISHED : 연결 완료

    => FIN_WAIT1

    => FIN_WAIT2

    => LAST_ACK

    => LISTEN :  대기 포트. 포트 open

    => SYN_RECV

    => SYN_SENT

    => TIME_WAIT 

    => UNKNOWN

 

netstat Tip

Local Address column은 현재 열려있거나 혹은 리스닝하고있는 ip, port를 나타낸다. 만약 해당 ip가 0.0.0.0이라면 all interface를 받는 다는 뜻이며 모든 ip에 대해서 열려있다는 뜻이다. 반대로 127.0.0.1로 되어있다면 loopback이라는 뜻으로 자기자신만 호출가능한 상태를 뜻한다.

(any ip could connect to 9050 port | only local ip could connect 631 port)

# 127.0.0.1, 127.0.1.1, ::1 (for IPv6) → localhost, the loop back interface - those services can only be contacted from your local machine

# 0.0.0.0:xxx, :::xxx → any local address:port-number - active connections: the IP-address and the port used by that special connection