CodeGym /행동 /Docker SELF /라우팅 설정: 명령어 `ip route`, `netstat`, `ss`

라우팅 설정: 명령어 `ip route`, `netstat`, `ss`

Docker SELF
레벨 4 , 레슨 1
사용 가능

라우팅 설정: 명령어 ip route, netstat, ss

1. 라우팅 개념

오늘은 좀 더 깊게 들어가 볼게: 라우트를 설정하고, 네트워크 연결을 분석하고, 포트에 대해 알아보자. 여기에서 네트워크 관리의 진정한 마법이 시작돼. 패킷들이 어디로 가고 어떻게 가는지, 그리고 왜 라우트에서 중요한 일을 담당해야 하는지 이해하는 거야.

라우팅이란 단순히 복잡해 보이는 개념이 아니고, 현대 네트워크의 기본 중 기본이야. 상상해봐: 네 컴퓨터가 다른 컴퓨터(호텔)에 도착하고 싶어하는 여행객이라고 생각하고, 라우트는 도로와 표지판 같은 거야. 라우트가 없다면, 여행객은 헤매고 사람들이랑 길을 물어보거나(DNS 서버가 될 수도 있어) 아니면 그냥 집에 남아있을 거야.

라우트가 필요한 이유

네트워크 내의 모든 장비는 다른 장비로 어떻게 가야 할지 알아야 해. 예를 들어 네 컴퓨터가 example.com 사이트로 요청을 보내고 싶다면, 그걸 알아야 해:

  1. 패킷을 어디로 보낼지.
  2. 어떤 게이트웨이 또는 인터페이스를 통해서 할 건지.

라우트에는 두 가지 유형이 있어:

  • 로컬 라우트: 네 서브넷 내 장비들 (예: 너의 컴퓨터와 프린터)에 대한 지침.
  • 외부 라우트: 네 서브넷 외부 장비들 (예: 인터넷의 리소스)에 대한 지침.

2. 라우팅 테이블

라우팅 테이블은 IP 주소를 기준으로 패킷을 어디로 보낼지 결정하는 규칙들의 테이블이야. 네 컴퓨터의 Google Maps 같은 거랄까: "저기로 가고 싶으면 이 게이트웨이를 통해 가라" 이런 식으로.

자신의 라우팅 테이블을 출력해 봐:

ip route show

출력 예시:

default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100

이게 뭘 의미하냐면:

  • default via 192.168.1.1: 패킷이 어디로 가야 할지 명시되어 있지 않으면 192.168.1.1 주소를 가진 게이트웨이를 통해 보낸다는 뜻이야.
  • dev eth0: eth0 인터페이스를 사용한다는 뜻.
  • 192.168.1.0/24: 192.168.1.0/24 서브넷 전체를 위한 라우트야. 패킷은 로컬 네트워크에서 "집"에 머무르게 돼.
  • protometric: 추가적인 매개변수들인데, 이건 나중에 더 알아보자.

3. ip route 명령어

라우팅 보기

라우팅 테이블을 보기 위해 이미 ip route show를 사용했어. 로컬 네트워크에 대한 라우트만 따로 보려면 필터를 추가할 수도 있어:

ip route show match 192.168.1.0/24

라우트 추가

정적 라우트를 추가할 수 있어 - 네가 직접 도로 표지판을 세우는 것 같은 거지. 예를 들어, 특정 게이트웨이를 통해 10.0.0.0/24 서브넷으로 모든 요청을 리다이렉트하고 싶다면:

sudo ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0

설명을 좀 하자면:

  • 10.0.0.0/24 – 대상 서브넷.
  • via 192.168.1.1 – 패킷이 전송되는 게이트웨이.
  • dev eth0 – 패킷이 나가는 인터페이스.

라우트 삭제

더 이상 라우트가 필요 없으면, 이 명령어로 삭제할 수 있어:

sudo ip route del 10.0.0.0/24

4. 실습: 정적 라우트 설정

  1. 다른 서브넷에 접근할 수 있는지 확인해봐.
  2. 라우트를 추가해:
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
  1. 라우팅 테이블을 확인해봐:
ip route show
  1. 더 이상 필요하지 않으면 라우트를 삭제해.

5. netstat 명령어

현재 연결을 분석할 때, netstat는 시스템 관리자의 오래된 친구야 (하지만 더 최신의 대안인 ss도 있어, 나중에 이야기해보자).

활성 연결 확인

netstat -tun

이게 무슨 뜻이냐면:

  • -t – TCP 연결 보기.
  • -u – UDP 연결 보기.
  • -n – 숫자 주소 사용 (호스트 이름 대신).

출력 예시:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.1.100:22        192.168.1.50:50240      ESTABLISHED

이게 무슨 뜻이냐면:

  • 로컬 주소 192.168.1.100:22 – 너의 컴퓨터가 포트 22 (SSH)를 듣고 있는 중이야.
  • 원격 주소 192.168.1.50:50240 – 너의 포트와 연결된 원격 호스트야.
  • ESTABLISHED – 활성화된 연결이고, 데이터가 전송되고 있어.

포트 리스닝

너의 컴퓨터에서 어떤 포트가 "청취" 중인지 보려면:

netstat -ltn

-l 플래그는 청취 중인 포트만 보여줘, -t-n에 대해선 이미 이야기했지.


6. ss 명령어

netstat이 공룡이라면, ss는 미래에서 온 DeLorean 자동차라고 할 수 있어: 더 빠르게 작동하고 더 많은 정보를 제공해.

활성 연결 확인

ss -tun

출력 예시는 netstat와 유사하지만, 속도와 세부사항에서 더 뛰어나.

포트 리스닝

ss -tln

netstat와 동일하지만, ss를 사용하는 게 더 편리하고 현대적이야.


7. 연결 모니터링

  1. netstat 또는 ss를 사용하여 컴퓨터가 어떤 포트를 듣고 있는지 확인해봐.
  2. 다른 장치에서 SSH 연결을 열고, 연결 목록에 나타나는지 확인해봐.
  3. 명령어 출력 결과를 해석하려고 시도해봐.

라우팅과 연결 모니터링의 세계에 빠져들었어: 이제 ip route를 사용해서 라우팅 테이블을 관리하고, netstat/ss로 네트워크 연결을 분석할 수 있어. 이 도구들은 가장 복잡한 네트워크 문제를 해결하기 위한 만능 도구야. 친구가 "인터넷이 안 돼!"라고 불평한다면? 새로 익힌 기술을 뽐내고 멋지게 해결해봐!

다음 강의는 더 재미있을 거야: DNS와 그 마법에 대해 이야기할 거야. 그때까지는 ip route를 연습하면서 패킷이 집으로 가는 길을 찾는 모습을 눈여겨봐.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION