LabHub

네트워크 기초 — 리눅스 VM 에서 손으로 · 라우팅과 DNS · 실습

네임스페이스 셋으로 라우터를 만든다

LabHub 에서 이어서 보기

이 실습은 VM 에서 돕니다

네임스페이스 셋 — 호스트 h1, 라우터 r1, 호스트 h2 — 을 veth 두 쌍으로
잇습니다. 서브넷이 다른 두 호스트가 라우터를 거쳐 통신하는 가장 작은 네트워크입니다.

목표

라우팅 테이블을 읽고, 기본 경로와 정적 경로를 넣고, 리눅스 한 대를 라우터로
만드는 스위치(ip_forward)가 무엇을 바꾸는지 확인합니다.

왜 중요한가

"어떤 대역만 안 된다" 는 신고는 거의 언제나 라우팅입니다. 그런데 라우팅은
양쪽이 다 맞아야 됩니다 — 가는 길이 있어도 돌아오는 길이 없으면 똑같이
안 되고, 증상은 구별되지 않습니다. 그리고 리눅스는 기본으로 남의 패킷을
넘겨 주지 않습니다. ip_forward 한 줄이 호스트를 라우터로 바꾸는데, 쿠버네티스
노드·도커 호스트·VPN 서버가 전부 이 한 줄 위에 서 있습니다.

단계

1. 네임스페이스 h1·r1·h2 를 만들고 veth 쌍 h1rrh1, h2rrh2 를 만들어 h1rh1, h2rh2, rh1·rh2r1 에 넣으세요.
2. h1r10.20.1.10/24, rh110.20.1.1/24, rh210.20.2.1/24, h2r10.20.2.10/24 를 붙이고 모든 인터페이스와 lo 를 UP 하세요.
3. h1 에서 h2(10.20.2.10) 로 ping 해 실패 메시지를 /root/route/unreach.txt 에 저장하세요.
4. h1h2 에 각자의 라우터 주소를 기본 경로로 넣으세요.
5. r1net.ipv4.ip_forward 를 1 로 켜서 h1h2 ping 이 되게 하세요.
6. h1 에서 h2traceroute -n 한 결과를 /root/route/trace.txt 에 저장하세요.
7. h2 에 더미 인터페이스 svc0 을 만들어 10.99.0.10/24 를 붙이고, r110.99.0.0/24 via 10.20.2.10 정적 경로를 넣어 h1 에서 10.99.0.10 이 닿게 하세요.
8. /root/route/report.mdhops= 한 줄, h1 에서 ip route get 10.99.0.10 결과 한 줄, 그리고 ip_forward 가 없으면 왜 안 되는지를 적으세요.

참고

단계 8개

  1. 셋을 잇는다
  2. 주소를 붙인다
  3. 길이 없으면
  4. 기본 경로
  5. 라우터로 만든다
  6. 경로를 따라가 본다
  7. 정적 경로
  8. 무엇을 배웠나