공든탑앱 열기

netstat·ss

리눅스마스터 2급 · 인터넷 활용 · 약 12분

쉽게 말하면

내 컴퓨터가 지금 어떤 문(포트)을 열고 손님을 기다리는지, 누구와 연결돼 있는지 보여 주는 명령이에요. 요즘은 netstat 대신 ss를 써요.

시험용 정의

netstat은 이 컴퓨터의 네트워크 연결 상태(누가 어느 포트에서 기다리고, 누구와 연결돼 있는지), 라우팅 테이블, 인터페이스 통계를 보여주는 명령이다. net-tools 패키지에 속하며, 요즘 배포판에선 iproute2의 ss가 대체한다.

비유로 이해하기

건물(서버)의 문 번호(포트)마다 붙은 출입 기록부. 어떤 문이 열려서 손님을 기다리는지(LISTEN), 지금 누구와 통화 중인지(ESTABLISHED)를 한 장에 보여준다.

시험에 이렇게 나와요

확인 문제

Q1. 웹서버(nginx)를 켰고, netstat에 127.0.0.1:80 … LISTEN 줄이 보인다. 그런데 다른 PC에서는 접속이 안 된다. 가장 그럴듯한 이유는?

  1. 루프백 주소(127.0.0.1)에만 열려 있어서 같은 컴퓨터 안에서만 접속할 수 있다
  2. nginx가 아직 실행되지 않았다
  3. 80번은 UDP 포트라서 TCP로는 접속할 수 없다
  4. LISTEN은 연결이 끊어진 상태를 뜻한다
정답 보기

1번 루프백 주소(127.0.0.1)에만 열려 있어서 같은 컴퓨터 안에서만 접속할 수 있다

LISTEN이니 서비스는 떠서 기다리는 중이다. 문제는 어느 주소에서 기다리느냐다. 127.0.0.1은 자기 자신만 가리키는 루프백이라, 바깥에서 들어오는 요청은 이 문에 닿지 않는다. 외부에 열려면 0.0.0.0:80(모든 주소) 또는 192.168.0.10:80처럼 바인딩해야 한다.

헷갈리기 쉬운 O·X

netstat -l은 대기 중인 소켓과 ESTABLISHED 연결을 함께 보여준다.

정답 보기

X -l은 대기(LISTEN) 소켓만. 둘 다 보려면 -a.

-n 옵션을 빼면 포트가 ssh, http 같은 이름으로 보이며, 이 대응은 /etc/services에서 온다.

정답 보기

O 맞다. -n은 이 번역을 끄고 숫자로 보여준다.

0.0.0.0:22 LISTEN이면 루프백에서만 접속할 수 있다.

정답 보기

X 0.0.0.0은 모든 주소. 루프백 전용은 127.0.0.1이다.

netstat은 iproute2 패키지의 명령이고, 이를 대체하는 새 명령이 ss다.

정답 보기

X netstat은 net-tools 소속. ss가 iproute2 소속이다.

netstat -r은 라우팅 테이블을 보여주며 route -n과 비슷한 정보다.

정답 보기

O 맞다. 신 명령으로는 ip route.

UDP 소켓도 대기 중이면 State 열에 LISTEN으로 표시된다.

정답 보기

X UDP는 연결 상태가 없어서 netstat에선 State가 비어 있다 (ss에선 UNCONN).

함께 보면 좋은 개념