다른 축제 구역에 접속하기

LinuxBeginner
지금 연습하기

소개

Lantern Festival의 각 구역 서비스는 작동하지만 직원들이 다른 구역의 프로그램을 아직 가져올 수 없습니다. 방송실 접근을 유지하면서 분리된 네트워크 사이에 범위를 한정한 경로를 복구합니다.

IPv4 주소, 간단한 /24 범위, 클라이언트/서버 역할과 포트를 구분하고, 터미널 명령을 입력하며 ip addr로 주소를 볼 수 있어야 합니다. 준비된 Linux 노드들은 커널을 공유하는 네트워크 네임스페이스이며 독립된 물리 머신이 아닙니다. 프로그래밍, 방화벽, 동적 라우팅, 서브넷 계산은 필요하지 않습니다.

실제 프로그램 요청은 Area Plan, 각 클라이언트 작업은 Area A와 Area B, 경로 변경은 West Router와 East Router에서 수행하세요. 각 터미널은 자체 디렉터리와 네트워크 상태를 유지합니다. 탭을 열어도 진행 상황이 초기화되지 않습니다. 이 실습은 독립적으로 시작합니다. 소요 시간은 읽기와 일반적인 실수를 포함한 저자의 예상이며, 초보자를 대상으로 측정한 시간이 아닙니다.

Workshop으로 가는 경로 복구하기

이 단계에서는 원격 목적지를 조사하기 전에 정상적인 로컬 예를 확인합니다. Area Plan에서 시작하세요. Main Stage 카드에서 Request from Area A를 선택합니다. 개막 공연과 등불 행렬이 나오고 마지막은 Request received from: 10.71.0.10입니다. 브라우저의 뒤로 버튼으로 돌아갑니다. Broadcast Room에서도 Request from Area A를 선택하면 방송 큐를 가져올 수 있습니다. 이 정상 서비스들은 유지해야 합니다.

Area A로 전환합니다. 터미널은 이미 /home/labex/project/festival-routes/a에 있습니다. pwd는 현재 디렉터리를 출력합니다. ip -4 addr show는 IPv4 주소를 보여 주며 dev eth0는 강좌 인터페이스를 선택합니다.

pwd
ip -4 addr show dev eth0

10.71.0.10/24를 확인하세요. 이 계획에서 /24는 10.71.0으로 시작하는 주소가 로컬이라는 뜻입니다. Workshop은 다른 서브넷인 10.72.0.0/24를 사용합니다. 라우터는 원래 주소를 바꾸지 않고 네트워크 사이로 패킷을 전달합니다.

HTTP는 준비된 프로그램 서비스의 요청/응답 프로토콜입니다. curl은 HTTP 리소스를 요청합니다. --noproxy '*'는 모든 목적지의 프록시 설정을 우회하며 따옴표는 *를 문자 그대로 유지합니다. -f는 HTTP 오류를 실패로 처리하고 -s는 진행 표시를 숨기며 -S는 오류를 계속 보여 줍니다. --max-time 3은 전체 시도를 3초로 제한합니다. 포트 8080은 준비된 프로그램 서비스입니다.

curl --noproxy '*' -fsS --max-time 3 http://10.71.0.10:8080/programme.txt

출발지 주소를 포함한 로컬 프로그램 전체를 읽으세요. 이제 Workshop을 시도합니다. 다음 요청은 실패할 것으로 예상하며 네트워크를 손상시키지 않습니다.

curl --noproxy '*' -fsS --max-time 3 http://10.72.0.10:8080/programme.txt

프로그램 대신 연결 실패가 나와야 합니다. 즉시 실제 종료 상태를 읽으세요. $?는 바로 전 명령의 상태를 저장하고 echo는 이를 출력합니다.

echo $?

0이 아닌 상태는 이번 시도가 실패했음을 뜻합니다. 연결 실패(주로 7), 시간 초과(28), HTTP 거부(22, -f 사용 시)는 서로 다른 관찰이며 하나만으로 모든 원인을 특정할 수 없습니다. 포트 거부는 호스트에 도달했지만 연결을 받는 서비스가 없다는 뜻일 수도 있습니다. 요청을 잘못 입력했다면 정확한 탭, 주소, 포트를 먼저 확인한 뒤 다시 시도하세요. VM을 초기화하지 마세요.

로컬 서비스와 세 번째 네트워크는 정상입니다. 이제 West Router가 Workshop에 어떤 경로를 사용할지 살펴봅니다.

라우터의 결정 읽기

여기서는 클라이언트 기본 게이트웨이와 라우터의 특정 목적지 경로를 구분합니다. Area A에서 시작하세요. ip route는 현재 경로 표를 읽고 ip route get은 프로그램 요청을 보내지 않은 채 커널이 고를 경로를 묻습니다.

ip route
ip route get 10.72.0.10

via 10.71.0.1 dev eth0가 나와야 합니다. 다음 홉은 인접한 West Router입니다. via는 이웃을, dev는 출력 인터페이스를 나타냅니다. 이것만으로 West Router가 나머지 경로를 안다는 뜻은 아닙니다.

West Router로 전환하세요. 강좌 작업 디렉터리는 /west로 끝납니다. 인터페이스와 경로를 읽습니다.

ip -4 addr show
ip route
ip route get 10.72.0.10

마지막 조회는 RTNETLINK answers: No route to host입니다. LAN 인터페이스는 10.71.0.1/24, transit은 172.22.0.1/24입니다. 인접한 East Router는 172.22.0.2/24를 사용하며 10.72.0.1/24로 Workshop에 연결합니다. Broadcast Room은 West Router의 broadcast 인터페이스 뒤에 있고 그 주소는 10.73.0.1/24입니다.

준비된 unreachable default metric 32760은 의도적인 기본 경로입니다. 이 격리 실습에서는 다른 경로와 일치하지 않는 목적지를 거부합니다. 일반적인 기본 경로는 게이트웨이를 사용할 수도 있습니다. 여기서는 기존 경로를 보존하세요. metric 32760은 같은 접두사 경로 사이의 우선순위이며 이 비교에서는 작은 metric이 우선합니다. 10.72.0.0/24 경로는 기본 경로보다 구체적이고 해당 구역의 길만 바꿉니다. 기본 경로를 교체하거나 표를 비우지 마세요.

Area Plan에서 West Router · live routing table을 펼쳐 같은 실제 경로 표를 비교합니다. 지도는 구조를 보여 주고 프로그램 요청은 실제 통신을 검증합니다. 이 첫 실습에서는 East Router의 반환 경로가 이미 준비되어 있습니다. West Router의 누락된 목적지 경로만 필요합니다.

범위를 한정한 경로 추가하기

여기서는 목적지 경로 하나를 추가하고 전체 원격 리소스를 가져옵니다. West Router에서 시작하세요. 이 터미널에는 강좌 네임스페이스 안의 관리 권한이 있습니다. ip route add는 현재 경로를 추가하며 10.72.0.0/24는 목적지 범위, via 172.22.0.2는 인접 라우터, dev transit은 해당 이웃으로 가는 링크입니다.

ip route add 10.72.0.0/24 via 172.22.0.2 dev transit

성공하면 보통 출력이 없습니다. 결정을 다시 읽으세요.

ip route get 10.72.0.10

via 172.22.0.2 dev transit를 확인합니다. 여기 표시된 src는 라우터 자신이 시작한 요청의 주소이며, 전달되는 Area A 트래픽은 자신의 주소를 유지합니다. Area A로 전환하여 실제 클라이언트 요청을 보냅니다.

curl --noproxy '*' -fsS --max-time 3 http://10.72.0.10:8080/programme.txt

Workshop, 종이 등불 워크숍, 리듬 모임과 Request received from: 10.71.0.10을 확인하세요.

프로그램 저장과 다른 경로 보존하기

이 단계에서는 원격 리소스를 저장하고 로컬 및 방송실 경로를 유지합니다. Area A에서 시작하세요. -o remote-programme.txt는 받은 바이트를 이 터미널 디렉터리에 저장합니다. cat은 저장된 파일을 읽습니다.

curl --noproxy '*' -fsS --max-time 3 -o remote-programme.txt http://10.72.0.10:8080/programme.txt
cat remote-programme.txt

보호 대상인 방송실 경로도 확인하세요.

curl --noproxy '*' -fsS --max-time 3 http://10.73.0.10:8080/programme.txt

Area Plan의 홈으로 돌아가 Workshop의 Request from Area A를 선택합니다. 같은 프로그램과 원래 출발지 주소를 읽으세요. 브라우저 뒤로 버튼으로 Main Stage와 Broadcast Room도 다시 요청합니다. 펼친 경로 표에는 원래 기본 경로와 직접 연결 경로가 남아 있어야 합니다.

add가 File exists를 보고하면 West Router에서 ip route를 읽으세요. replace는 지정한 접두사만 추가하거나 갱신합니다.

ip route replace 10.72.0.0/24 via 172.22.0.2 dev transit

실수로 10.72.1.0/24를 추가했다면 이 목적지와 일치하지 않습니다. ip route del 10.72.1.0/24로 그 잘못된 항목만 지우고 표시된 올바른 경로를 사용하세요. 다른 오타도 표를 읽고 자신이 추가한 불필요한 접두사만 제거합니다. flush는 절대 사용하지 마세요. 주소, 모든 원래 경로, 링크와 서비스를 유지합니다. 실패한 다운로드로 완전한 파일이 남지 않았다면 같은 다운로드를 반복합니다. 이 경로는 현재 세션에서만 적용되며 재부팅 후 유지는 실습 범위 밖입니다.

복구 후 두 실제 경로 표를 펼친 Area Plan

지도에서 두 전송 구간 이웃을 찾고 목적지 행과 보존된 기본 경로를 비교하세요. 펼친 표는 작동 중인 실습의 실제 커널 경로를 보여 줍니다.

요약

실제 목적지 조회와 한정된 경로로 축제 프로그램을 전달하면서 원래 주소와 다른 경로를 유지했습니다. 클라이언트 게이트웨이는 첫 홉일 뿐이며 각 라우터에는 다음으로 나아갈 유효한 결정이 필요합니다.