행사 장치 연결하기

LinuxBeginner
지금 연습하기

소개

Maple Yard가 주말 행사를 준비하고 있습니다. 참조 데스크는 이미 네트워크 설정을 자동으로 받습니다. 새 방문객 장치 두 대에도 같은 서비스가 필요하지만, 라우터나 고정 데스크에 예약된 주소를 사용해서는 안 됩니다.

작은 DHCP 주소 범위를 구성하고 두 클라이언트가 실제 임대를 받게 한 다음, 전달받은 게이트웨이와 DNS를 통해 행사 프로그램을 다운로드합니다. 기본 터미널 입력과 이름이 있는 탭 전환만 할 줄 알면 됩니다. 프로그래밍이나 DHCP 관리 경험은 필요하지 않습니다.

서버 설정 편집은 Network Desk, 클라이언트 명령은 Guest A와 Guest B, 실행 중인 노드 관찰은 Network Map을 사용합니다. 이들은 하나의 커널을 공유하는 격리된 Linux 네트워크 노드입니다. 디렉터리와 네트워크 상태는 분리되어 있습니다. 탭을 열거나 다시 연결해도 과정은 초기화되지 않습니다.

새 장치를 위한 주소 공간 만들기

이번 단계에서는 안전한 동적 주소 범위를 선택하고 DHCP 서버가 이를 제공하게 합니다. 먼저 Network Map을 엽니다. reference 카드를 찾아 Request programme을 선택하세요. Maple Yard 프로그램이 나타나야 합니다. 이것은 기존에 작동하던 예시이며, 아직 여러분이 만든 새 결과는 아닙니다.

IPv4 주소는 이 네트워크의 장치를 식별합니다. /24는 10.77.0.10/24에서처럼 사용되며, 10.77.0으로 시작하는 주소가 이 로컬 서브넷에 속함을 뜻합니다. 게이트웨이는 다른 서브넷의 프로그램 서버로 트래픽을 전달합니다. DNS는 programme.event.test 같은 이름을 주소로 바꿉니다. 주소를 받았다는 사실만으로 다른 설정도 유용하다고 증명되지는 않습니다.

Network Desk로 전환합니다. 이 터미널은 /home/labex/project/event-network에서 시작합니다. pwd는 현재 디렉터리를, cat은 텍스트 파일을 보여 줍니다.

pwd
cat devices.tsv

MAC 주소는 준비된 이 네트워크에서 장치의 링크 계층 식별 정보입니다. IPv4 주소나 읽기 쉬운 탭 이름과 다릅니다. 참조 데스크는 10.77.0.10, 라우터와 DNS는 10.77.0.1을 사용합니다. 이 고정 주소들은 바꾸지 마세요. 방문객 범위는 10.77.0.100부터 10.77.0.109까지 양 끝을 포함하며, 마스크는 255.255.255.0으로 동일한 /24를 나타냅니다.

편집 가능한 서버 파일을 읽습니다.

cat dhcp.conf

conf-file 행은 준비된 참조 서비스를 포함합니다. 이 행을 유지하세요. dhcp-range는 시작 주소, 끝 주소, 서브넷 마스크, 임대 기간을 지정합니다. 임대는 일시적인 할당입니다. 2h는 두 시간이지 영구 소유가 아닙니다.

다음 here-document는 작은 파일 전체를 씁니다. >는 이전 내용을 대체합니다. 따옴표로 감싼 'CONF'는 블록을 문자 그대로 유지합니다. 마지막 CONF는 줄 맨 앞에서 혼자 있어야 합니다. 블록 전체를 복사하세요.

cat > dhcp.conf <<'CONF'
conf-file=/opt/labex/event-network/server-base.conf
dhcp-range=10.77.0.100,10.77.0.109,255.255.255.0,2h
CONF

--test는 다른 서버를 시작하지 않고 구문만 검사합니다. --conf-file은 사용할 파일을 선택합니다.

dnsmasq --test --conf-file=dhcp.conf

dnsmasq: syntax check OK.가 나와야 합니다. 오류가 나면 cat으로 저장된 파일을 읽고, 위 블록으로 복원한 뒤 다시 검사하세요. 구문 오류가 있는 것을 알면서 작동 중인 서비스를 재시작하지 마세요.

sudo는 이 관리 명령 하나를 실행합니다. systemctl restart는 바뀐 설정을 event-dhcp라는 과정 전용 서비스에 불러옵니다.

sudo systemctl restart event-dhcp

재시작이 성공하면 보통 아무것도 출력하지 않습니다. 방문객의 임대를 요청하는 작업은 아닙니다. 서버가 제공할 내용을 준비했으니 이제 클라이언트가 요청해야 합니다. 첫 실습에서는 dnsmasq가 준비된 자신의 로컬 주소를 기본 게이트웨이와 DNS로 알립니다. 다음 실습에서 명시적인 서버 옵션으로 이 값을 제어하는 법을 배웁니다.

각 방문객이 임대를 요청하게 하기

이번 단계에서는 실제 DHCP 요청으로 새 클라이언트 두 대를 연결합니다. Guest A로 전환합니다. 이 터미널은 격리된 클라이언트의 관리자 셸이며, 이미 전용 작업 디렉터리에 있습니다. eth0는 과정 링크이지 플랫폼 인터페이스가 아닙니다. 이 명령들을 Network Desk에서 실행하지 마세요.

dhclient는 제공된 ISC DHCP 클라이언트입니다. 과정은 수정하지 않은 로컬 복사본과 준비된 hook을 사용하여 받은 옵션만 격리된 노드에 적용합니다. 주소를 만들어 내거나 플랫폼 리졸버를 변경하지 않습니다. -4는 IPv4를 선택하고, -v는 교환 내용을 보여 주며, -1은 서버 응답이 없으면 이번 획득 시도를 끝냅니다. -cf client.conf는 제공된 설정을 선택합니다. -pf client.pid와 -lf client.leases는 이 클라이언트의 프로세스 및 임대 상태를 전용 디렉터리에 보관합니다. 준비된 임대 파일은 처음에 비어 있으며 클라이언트가 실제 받은 임대를 기록합니다. 준비된 파일들을 유지하세요.

다음을 한 줄로 실행합니다.

dhclient -4 -v -1 -cf client.conf -pf client.pid -lf client.leases eth0

DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK를 찾아보세요. 첫 교환에서 클라이언트는 서버를 찾고, 제안을 받고, 그 제안을 요청한 뒤 확인을 받습니다. 기존 임대가 있으면 나중 교환은 짧아질 수 있습니다. 마지막 bound to 10.77.0...는 할당된 주소입니다. 구체적인 방문객 주소와 갱신 시각은 범위 내에서 달라질 수 있습니다.

ip -4 addr show는 선택한 인터페이스의 IPv4 주소를 표시합니다.

ip -4 addr show dev eth0

10.77.0.100–10.77.0.109 중 하나의 주소와 /24가 보여야 합니다.

Guest B로 전환합니다. 이 클라이언트도 전용 디렉터리와 상태를 가집니다. 여기에서도 완전한 명령을 실행합니다.

dhclient -4 -v -1 -cf client.conf -pf client.pid -lf client.leases eth0
ip -4 addr show dev eth0

두 주소는 모두 범위 안에 있어야 하고 서로 달라야 합니다. No DHCPOFFERS received가 보이면 먼저 올바른 탭인지 확인한 뒤 Network Desk로 돌아가 dhcp.conf를 읽고 구문을 검사하고 event-dhcp를 재시작하세요. 아직 기다리는 클라이언트에서만 획득을 재시도합니다. 오타를 고치기 위해 임대 파일을 지우거나 VM을 초기화하지 마세요.

Network Map에서 페이지를 새로 고칩니다. 두 방문객 카드에 실제 주소가 나타나야 합니다. 이 관찰은 임대를 요청하거나 복구하지 않습니다.

받은 설정으로 프로그램 가져오기

이번 단계에서는 각 클라이언트가 받은 설정을 사용할 수 있음을 증명하고 실제 프로그램 파일을 저장합니다. 먼저 Guest A를 엽니다.

ip route show default는 로컬 서브넷 밖의 목적지에 사용하는 게이트웨이를 표시합니다. /etc/resolv.conf는 이 클라이언트의 DNS 리졸버를 나열합니다.

ip route show default
cat /etc/resolv.conf

게이트웨이 10.77.0.1, 인터페이스 eth0, nameserver 10.77.0.1을 확인하세요. 준비된 라우터는 DNS도 제공합니다. 프로그램 자체는 다른 서브넷에 있으므로 두 설정이 모두 필요합니다.

curl은 HTTP 리소스를 요청합니다. --noproxy '*'는 로컬 실습이 외부 프록시를 거치지 않게 합니다. 따옴표는 *를 문자 그대로 유지합니다. -f는 HTTP 오류를 실패로 처리하고, -s는 진행 표시를 숨기며, -S는 여전히 오류를 보여 줍니다. --max-time 5는 대기 시간을 5초로 제한합니다. -o programme.txt는 현재 클라이언트 디렉터리에 응답 바이트를 저장합니다.

curl --noproxy '*' -fsS --max-time 5 -o programme.txt http://programme.event.test:8080/programme.txt
cat programme.txt

예상 내용은 다음과 같습니다.

MAPLE YARD | Weekend programme
10:00 Welcome desk opens
11:00 Bicycle repair
13:00 Seed exchange
15:00 Community workshop

Guest B로 전환하여 독립적으로 받은 설정을 검사합니다.

ip route show default
cat /etc/resolv.conf

여기에서도 프로그램을 다운로드하고 읽습니다.

curl --noproxy '*' -fsS --max-time 5 -o programme.txt http://programme.event.test:8080/programme.txt
cat programme.txt

Could not resolve host는 이름 해석 문제를 가리킵니다. 연결 시간 초과는 경로나 게이트웨이 문제일 수 있습니다. Connection refused는 선택한 목적지의 해당 포트에서 연결을 받아 주는 서비스가 없다는 뜻입니다. HTTP 응답이 성공해도 잘못된 리소스가 담길 수 있으므로 모든 프로그램 항목을 읽으세요.

주소는 있는데 요청이 실패하면 게이트웨이와 DNS를 위 값과 비교합니다. 클라이언트 설정을 수동으로 지정하지 말고 올바른 서버 파일로 돌아가세요. 임대를 해제하고 다시 요청해야 한다면, -r은 이 클라이언트의 현재 임대를 해제하고 이전 클라이언트 프로세스를 종료합니다.

dhclient -4 -v -r -cf client.conf -pf client.pid -lf client.leases eth0

그다음 이미 배운 획득 명령을 사용하고 다운로드를 반복합니다. 복구 작업은 영향을 받은 방문객 탭에서만 실행하세요.

마지막으로 Network Map을 새로 고칩니다. 두 방문객과 참조 데스크에서 Request programme을 선택합니다. 세 장치 모두 전체 프로그램을 반환해야 합니다. 저장한 파일과 실제 요청이 서버 설정이 그럴듯해 보이는 것뿐 아니라 실제로 사용 가능함을 보여 줍니다.

실제 클라이언트 요청 후 Network Map

각 카드의 IPv4 주소, 게이트웨이, DNS를 비교한 뒤 버튼 아래 프로그램 응답을 읽습니다. 방문객에게 할당된 구체적인 주소는 예시와 다를 수 있습니다.

요약

고정 장치를 제외하는 범위를 선택하고, 서로 다른 실제 DHCP 임대를 얻고, 적용된 게이트웨이와 DNS를 읽고, 두 클라이언트에서 전체 프로그램을 다운로드했습니다. 참조 데스크의 정상 기능도 유지했습니다.

이 설정은 현재 교육용 VM 안의 임시 설정입니다. 재부팅 후 유지, 공용 인터넷 접근, 모든 DHCP 클라이언트와의 호환성을 보장하지 않습니다. 다음 안내형 실습은 장치 예약과 설정 복구를 위한 새 환경을 독립적으로 준비합니다.