Devin.KR

경로와 구성도 갱신

70분 안팎

학습 목표

각 VLAN에서 서버까지의 다음 홉과 왕복 경로를 구성도에 반영합니다.

개념

구성도는 다음 담당자의 실행 지도입니다

라우팅 설정을 끝내도 문서가 m03 비활성 상태만 가리키면 다음 담당자가 .1 주소를 다시 만들거나 정상 경로를 삭제할 수 있습니다. 이번 레슨에서는 현재 상태와 이전 단계의 이력을 구분한 경로 기록을 작성합니다. routes.csv는 장비별 목적지·다음 홉·출구·종류를 나타내고 routing-plan.md는 단말에서 서버까지와 돌아오는 경로를 설명합니다. 그림과 표를 서로 대조할 수 있어야 실제 인계 자료가 됩니다.

장비별 표를 따로 읽습니다

같은 10.20.30.11 목적지라도 s1은 .10.1 게이트웨이를 선택하고 r1은 v30 직접 연결을 선택합니다. server1이 자기 주소로 받는 처리는 응답 목적지 학생 /24의 경로와 다릅니다. routes.csv 첫 열 device를 생략하면 서로 다른 라우팅 표의 행이 하나로 섞입니다. 인터페이스 이름 eth0도 여러 네임스페이스에 반복되므로 장비 이름과 인터페이스 이름을 함께 식별자로 사용합니다.

직접 연결에는 하이픈을 기록합니다

r1의 v10·v20·v30·v40 경로는 next_hop이 하이픈이고 kind는 connected입니다. 이는 알 수 없는 값이 아니라 라우터 다음 홉이 없는 직접 링크라는 계약입니다. 단말의 default는 destination 0.0.0.0/0과 역할별 .1 next_hop이며 server1의 세 행은 static입니다. 직접 연결 경로를 설정한 정적 경로처럼 기록하면 재구성할 때 중복 명령을 만들기 쉬우므로 경로가 생성되는 원인까지 구분합니다.

양방향 화살표에 선택 근거를 적습니다

요청은 s1 eth0에서 10.20.10.1로, r1 v10에서 v30으로, 마지막 p4에서 server1 eth0로 이동합니다. 응답은 서버의 10.20.10.0/24 정적 경로로 10.20.30.1에 전달되고 r1의 학생 직접 연결 경로로 v10을 나갑니다. s2는 학생 trunk를 추가로 지나고 t1은 v20을 사용합니다. 단순히 모든 화살표에 r1이라고 적기보다 VLAN 경계와 장비의 경로 선택 위치를 표시합니다.

같은 VLAN의 길도 유지합니다

s1에서 s2는 같은 학생 /24여서 기본 게이트웨이를 거치지 않고 목적지 MAC을 직접 찾습니다. 라우팅 추가 후에도 p1·u1·u2·p2 연결이 유지돼야 합니다. 서버 왕복 성공만 제출하면 trunk 학생 연결을 실수로 끊은 변경을 놓칠 수 있습니다. 회귀 검사는 이전 정상 학생 연결과 새 서버 연결을 함께 포함합니다. 기존 주소표와 일곱 VLAN 포트 계약을 그대로 보존하는 이유입니다.

원하는 값과 관측한 값을 구분합니다

routes.csv는 승인하려는 현재 설정이고 커널 route show는 실행 시점 관측입니다. 표가 올바르더라도 스크립트가 다른 값으로 적용하면 일치하지 않습니다. 문서 검사와 실제 경로 대조를 각각 로그로 저장합니다. 모든 문자열을 그대로 같다고 비교하기보다 목적지·출구·다음 홉을 정규화해 비교합니다. 커널이 붙이는 proto kernel, scope link, src 같은 부가 필드는 생성 방식과 주소 선택을 설명하는 참고 정보입니다.

변경 이력은 현재 구성과 충돌하지 않게 표시합니다

topology.json과 switching.json은 앞 단계 파일을 보존합니다. switching.json의 forwarding=false를 현재 설정으로 읽지 않도록 routing-plan.md에 m03 이력임을 적습니다. 현재 적용은 activate.sh와 routes.csv에 정의합니다. 이력 파일을 조용히 고쳐 과거 상태를 지우는 대신 단계별 기준을 명시합니다. 문서 검사기가 이전 계약을 유지하면서 추가 계약을 확인하므로 기존 산출물이 의도치 않게 바뀌면 먼저 실패합니다.

ICMP 범위와 서비스 권한을 구분해 씁니다

현재 학생·교직원 서버 왕복은 ICMP 시험입니다. DNS 응답, TCP 포트, TLS 인증서, HTTP 상태는 이 검사에 없습니다. 게스트 v40 주소가 구성됐다고 게스트 서비스 권한까지 승인한 것은 아닙니다. 라우팅이 가능해진 대역과 이후 정책으로 제한할 서비스를 별도 열로 적습니다. 다음 DNS·DHCP 담당자는 연결된 경로를 사용할 수 있지만 이 로그로 이름 해석이 검증됐다고 판단해서는 안 됩니다.

누락 응답 경로 실험을 인계 자료로 만듭니다

장애 기록에는 삭제 대상 server1 10.20.10.0/24, 남아 있는 요청 방향 경로, 학생 왕복 실패, 교직원 대조군 성공, 복구 명령과 재시험을 적습니다. 실제 실행하지 않은 항목은 확인 대기로 표시합니다. 실패 원문 없이 정답 명령만 쓰면 다른 담당자가 같은 증상을 구분할 근거가 없습니다. 다음 모듈이 정상 solution에서 출발하도록 결함은 파일과 커널 어느 쪽에도 남겨 두지 않습니다.

검토자가 재현할 수 있는 제출 기준

제출물은 11개 경로 행, 네 활성 게이트웨이, 학생 두 단말과 교직원의 서버 양방향 화살표, 같은 VLAN 직접 전달, 라우팅과 정책의 구분을 포함합니다. 설정 전후 호스트 snapshot 동일과 실습 공간 정리 결과도 연결합니다. 리뷰어는 임의 목적지 하나를 골라 장비별 출구를 설명하고 문서에서 대응하는 행을 찾습니다. 외부 Linux 확인이 끝나지 않았다면 완료 칸에 대기라고 남기며 명령·환경·예상 결과를 실행 사실과 구분합니다.

문서 리뷰의 구체적인 질문

리뷰어는 server1에서 10.20.20.11로 응답할 때 어떤 행이 선택되는지 묻습니다. 작성자는 서버의 교직원 정적 행, 다음 홉 10.20.30.1, 라우터의 v20 직접 연결 행을 순서대로 가리킵니다. 이어 s1에서 s2로 갈 때 왜 r1 IP 전달이 필요 없는지 설명합니다. 두 질문에 같은 화살표를 사용한다면 같은 링크 전달과 다른 대역 라우팅이 섞인 것입니다. 설명에 필요한 행이나 인터페이스가 그림에 없다면 제출 전에 보완합니다.

따라하기

장비별 기록 초안을 출력합니다

예시 경로 기록의 형식 계산입니다. 커널 관측과 구분합니다.

for device,dst,hop,iface in [('s1','0.0.0.0/0','10.20.10.1','eth0'),('r1','10.20.30.0/24','-','v30'),('server1','10.20.10.0/24','10.20.30.1','eth0')]:
 print(','.join([device,dst,hop,iface]))

실행 결과

s1,0.0.0.0/0,10.20.10.1,eth0
r1,10.20.30.0/24,-,v30
server1,10.20.10.0/24,10.20.30.1,eth0

현재 커널 행을 수집합니다

미션 수동 setup 상태에서 실행하고 목적지·next hop·dev를 표와 대조합니다. 출력은 실행 환경에서 수집합니다.

sudo ip -n bcnet-r1 -j -4 route show
sudo ip -n bcnet-server1 -j -4 route show

구성도와 검증 기록을 리뷰합니다

routing-plan.md에 요청·응답 화살표와 현재/이력 구분을 적습니다. 동료에게 학생·교직원 서버 경로와 정책 미완료 범위를 설명한 뒤 문서 검사를 실행합니다.

python3 test_routing.py

확인 문제

실습

미션의 routes.csv 11개 행과 routing-plan.md를 제출합니다. 네 활성 게이트웨이, 학생 s1/s2·교직원 t1의 서버 요청/응답 화살표, 직접 연결·default·static 구분, 기존 학생 trunk 보존을 적습니다. 각 관측은 명령·환경·결과·한계를 포함하고 Linux 미실행은 대기라고 표시합니다. 이력 파일과 현재 적용 파일을 연결하며 ICMP 연결과 서비스 정책 승인 범위를 구분합니다. 동료가 임의 목적지의 장비별 다음 홉을 표에서 찾을 수 있어야 합니다.

더 읽기

면접 질문

  • VLAN을 나누고 통신을 허용하는 구성을 설명합니다.