LabHub

네트워크 기초 — 리눅스 VM 에서 손으로 · 주소·서브넷·ARP · 실습

ARP 를 프레임으로 본다

LabHub 에서 이어서 보기

이 실습은 VM 에서 돕니다

네트워크 네임스페이스 둘을 만들어 호스트 두 대로 씁니다. veth 한 쌍이
둘을 잇는 케이블입니다. 전부 VM 한 대 안이지만 커널 입장에서는 진짜 두 대입니다.

목표

IP 주소를 MAC 주소로 바꾸는 ARP 를 프레임 단위로 잡아 보고, 이웃 테이블을
읽고, 정적 항목을 넣어 틀린 MAC 이 통신을 어떻게 죽이는지 확인합니다.

왜 중요한가

같은 서브넷 안의 통신은 IP 가 아니라 MAC 으로 갑니다. IP 는 "누구에게" 를
말하고, 실제 프레임은 MAC 을 보고 배달됩니다. 그 둘을 잇는 것이 ARP 이고,
그 결과가 이웃 테이블(ARP 캐시)입니다. 그래서 IP 설정이 다 맞는데 통신이
안 되면 이웃 테이블부터 봅니다 — 낡은 항목, 중복 IP, 잘못된 정적 항목이 거기
있습니다. 클라우드와 쿠버네티스가 ARP 를 감추고 있어도 바닥은 같습니다.

단계

1. 네임스페이스 alicebob 을 만드세요.
2. veth 쌍 va·vb 를 만들어 vaalice 에, vbbob 에 넣으세요.
3. aliceva10.10.0.1/24, bobvb10.10.0.2/24 를 붙이고 lo 까지 UP 해서 alice 에서 bob 으로 ping 이 되게 하세요.
4. ping 뒤 alice 의 이웃 테이블(ip -n alice neigh)을 /root/arp/neigh.txt 에 저장하세요. bob 의 MAC 이 보여야 합니다.
5. alice 의 이웃 테이블을 비우고 tcpdumpva 의 ARP 를 잡으면서 arping 을 보내, 요청과 응답 프레임을 /root/arp/capture.txt 에 저장하세요.
6. alicebob 의 MAC 을 정적(permanent) 이웃 항목으로 넣으세요.
7. 정적 항목을 틀린 MAC 으로 바꿔 ping 이 죽는 것을 /root/arp/broken.txt 에 남기고, 올바른 MAC 의 정적 항목으로 되돌리세요.
8. /root/arp/report.mdbob_mac= 한 줄과 함께, ARP 요청이 왜 브로드캐스트인지와 틀린 정적 항목이 왜 IP 층에서는 보이지 않는지를 적으세요.

참고

단계 8개

  1. 호스트 두 대
  2. 케이블 잇기
  3. 주소를 붙여 ping
  4. 이웃 테이블 읽기
  5. ARP 를 프레임으로
  6. 정적 이웃 항목
  7. 틀린 MAC 이면
  8. 무엇을 배웠나