네트워크 기초 — 리눅스 VM 에서 손으로 · HTTP 와 종합 · 실습
라우터·DNS·방화벽·NAT 를 갖춘 작은 네트워크
이 실습은 VM 에서 돕니다
앞의 아홉 실습을 하나로 모읍니다. 네임스페이스 home(사용자 쪽)과 dmz(서버 쪽)
사이에 VM 자신이 라우터로 서고, 그 라우터가 DNS 서버·방화벽·NAT 까지
맡습니다. 집 공유기 한 대가 하는 일의 축소판입니다. 60분 실습이라 시간을
한 번 연장해야 할 수 있습니다 — 작업물은 VM 과 함께 사라지니 미리 알아 두세요.
목표
두 서브넷을 잇고, 이름으로 서버를 찾게 하고, 웹만 통과시키고, 사설망을
인터넷에 내보내고, 그 전부를 패킷으로 확인한 뒤 보고서로 남깁니다.
왜 중요한가
지금까지는 한 번에 한 층만 봤습니다. 실제 장애는 여러 층이 겹쳐 있습니다 —
이름은 풀리는데 방화벽이 막고, 방화벽은 열렸는데 돌아오는 경로가 없고. 한
네트워크를 처음부터 끝까지 세워 본 사람은 "안 된다" 를 들었을 때 어느 층부터
볼지 순서가 있습니다: 링크 → 주소 → 이웃 → 경로 → 이름 → 포트 → 방화벽 → 응답.
단계
1. 네임스페이스 home·dmz 와 veth home0(home, 10.40.1.10/24)↔r-home(루트, 10.40.1.1/24), dmz0(dmz, 10.40.2.10/24)↔r-dmz(루트, 10.40.2.1/24)를 만들고, 두 네임스페이스의 기본 경로와 루트의 ip_forward 를 설정해 home→dmz ping 이 되게 하세요.
2. /root/final/www/index.html 을 만들고 dmz 안에 10.40.2.10:80 을 듣는 웹 서버를 띄워(로그는 /root/final/http.log) home 에서 curl http://10.40.2.10/ 이 되게 하세요.
3. /etc/dnsmasq.d/lab.conf 로 dnsmasq 가 10.40.1.1 에서 듣고 web.lab.internal→10.40.2.10 을 답하며 나머지는 상류로 넘기게 하고, /etc/netns/home/resolv.conf 로 home 이 그 서버를 쓰게 하세요.
4. home 에서 curl -si http://web.lab.internal/ 의 응답을 /root/final/byname.txt 에 저장하세요.
5. 루트에 테이블 inet labfw 와 forward 훅 체인(정책 drop)을 만들고, established,related 와 home→dmz 의 tcp dport 80 만 허용해 웹은 되고 ping 은 안 되게 하세요.
6. 테이블 ip labnat 에 10.40.1.0/24 의 마스커레이드를 넣고 forward 에 home→uplink 의 tcp dport { 80, 443 } 을 허용해, home 에서 curl -sI http://archive.ubuntu.com/ 의 첫 줄을 /root/final/internet.txt 에 저장하세요.
7. r-dmz 에서 캡처하며 home 에서 웹을 한 번 더 받아, 10.40.1.10 이 10.40.2.10.80 으로 보낸 SYN 이 보이는 출력을 /root/final/capture.txt 에 저장하세요.
8. 전체 규칙을 /root/final/ruleset.nft 에 저장하고, /root/final/report.md 에 home_ip=·dmz_ip=·dns=·ping_blocked= 네 줄과 함께 "web.lab.internal 이 안 열린다" 는 신고를 받았을 때 어느 순서로 볼지를 적으세요.
참고
- 앞 실습의 명령을 그대로 조합합니다. 3·8번 실습의 힌트가 특히 유용합니다.
- dnsmasq 가 상류로 넘기게 하려면
no-resolv와 함께server=<상류주소>를 적습니다. 상류는resolvectl dns enp1s0. - 방화벽은 forward 체인입니다. VM 자신의 input 은 건드리지 마세요 — 채점 에이전트가 막힙니다.
nft add rule inet labfw forward iifname "r-home" oifname "r-dmz" tcp dport 80 accept.- 흔한 실수: 6단계에서 forward 에 uplink 쪽 허용을 빼먹는 것. NAT 규칙만으로는 forward 의 drop 을 못 넘습니다.
단계 8개
- 두 서브넷과 라우터
- DMZ 의 웹 서버
- 라우터가 DNS 도 맡는다
- 이름으로 연다
- 웹만 통과
- 집 안을 인터넷으로
- 패킷으로 확인
- 규칙과 보고서