라우팅 설정: 명령어 ip route
, netstat
, ss
1. 라우팅 개념
오늘은 좀 더 깊게 들어가 볼게: 라우트를 설정하고, 네트워크 연결을 분석하고, 포트에 대해 알아보자. 여기에서 네트워크 관리의 진정한 마법이 시작돼. 패킷들이 어디로 가고 어떻게 가는지, 그리고 왜 라우트에서 중요한 일을 담당해야 하는지 이해하는 거야.
라우팅이란 단순히 복잡해 보이는 개념이 아니고, 현대 네트워크의 기본 중 기본이야. 상상해봐: 네 컴퓨터가 다른 컴퓨터(호텔)에 도착하고 싶어하는 여행객이라고 생각하고, 라우트는 도로와 표지판 같은 거야. 라우트가 없다면, 여행객은 헤매고 사람들이랑 길을 물어보거나(DNS 서버가 될 수도 있어) 아니면 그냥 집에 남아있을 거야.
라우트가 필요한 이유
네트워크 내의 모든 장비는 다른 장비로 어떻게 가야 할지 알아야 해. 예를 들어 네 컴퓨터가 example.com
사이트로 요청을 보내고 싶다면, 그걸 알아야 해:
- 패킷을 어디로 보낼지.
- 어떤 게이트웨이 또는 인터페이스를 통해서 할 건지.
라우트에는 두 가지 유형이 있어:
- 로컬 라우트: 네 서브넷 내 장비들 (예: 너의 컴퓨터와 프린터)에 대한 지침.
- 외부 라우트: 네 서브넷 외부 장비들 (예: 인터넷의 리소스)에 대한 지침.
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
서브넷 전체를 위한 라우트야. 패킷은 로컬 네트워크에서 "집"에 머무르게 돼.proto
와metric
: 추가적인 매개변수들인데, 이건 나중에 더 알아보자.
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. 실습: 정적 라우트 설정
- 다른 서브넷에 접근할 수 있는지 확인해봐.
- 라우트를 추가해:
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
- 라우팅 테이블을 확인해봐:
ip route show
- 더 이상 필요하지 않으면 라우트를 삭제해.
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. 연결 모니터링
netstat
또는ss
를 사용하여 컴퓨터가 어떤 포트를 듣고 있는지 확인해봐.- 다른 장치에서 SSH 연결을 열고, 연결 목록에 나타나는지 확인해봐.
- 명령어 출력 결과를 해석하려고 시도해봐.
라우팅과 연결 모니터링의 세계에 빠져들었어: 이제 ip route
를 사용해서 라우팅 테이블을 관리하고, netstat
/ss
로 네트워크 연결을 분석할 수 있어. 이 도구들은 가장 복잡한 네트워크 문제를 해결하기 위한 만능 도구야. 친구가 "인터넷이 안 돼!"라고 불평한다면? 새로 익힌 기술을 뽐내고 멋지게 해결해봐!
다음 강의는 더 재미있을 거야: DNS와 그 마법에 대해 이야기할 거야. 그때까지는 ip route
를 연습하면서 패킷이 집으로 가는 길을 찾는 모습을 눈여겨봐.
GO TO FULL VERSION