LFCS 실습 환경 구성

배포판에 종속되지 않는 1대·2대 VM 토폴로지와 반복 가능한 초기 상태, 보조 디스크·네트워크·snapshot 구성


LFCS는 배포판별 플랫폼을 선택하는 시험이 아니다. 실습에서는 한 환경에 익숙해지되 package manager·network manager·firewall·service 이름을 현재 시스템에서 확인하는 습관을 만든다. 실제 시험 환경과 VM 사양이 같다고 가정하지 않는다.

작성·검증 상태: AI가 구조화와 초안 작성을 보조했다. Hyper-V·Rocky Linux 계열의 일반 절차를 중심으로 작성했으며, hypervisor별 메뉴 이름과 nested virtualization 지원은 설치한 제품 버전에서 다시 확인해야 한다.

학습 환경의 목표

좋은 실습 환경은 다음 조건을 만족한다.

  • OS disk와 포맷 가능한 연습용 disk가 분리되어 있다.
  • management network를 끊지 않고 route·bridge·bond·firewall을 연습할 수 있다.
  • NFS, SSH, proxy, time, LDAP client 같은 client/server 작업을 재현할 수 있다.
  • snapshot 또는 checkpoint로 깨끗한 상태를 반복 복원할 수 있다.
  • SELinux Enforcing 환경을 실제로 사용할 수 있다.
  • libvirt 실습이 필요하면 nested virtualization 지원 여부를 별도로 확인한다.

권장 토폴로지

최소 구성: VM 1대

개념 확인과 다음 작업에 사용할 수 있다.

  • local user·group·ACL·profile·limits
  • systemd, process, job, package, Git, certificate
  • loop device 또는 추가 disk를 이용한 LVM·filesystem·swap
  • local container와 SELinux
  • network 상태 조회와 제한적인 local firewall 실습
항목권장값
vCPU2
memory4 GiB 이상
OS disk30 GiB 이상
연습 disk5 GiB 2개 이상
NICmanagement용 1개, 가능하면 실습용 1개 추가

전체 구성: VM 2대

공개 문서의 전체 실습에는 2대 구성을 권장한다.

                    management/NAT network
                  package 설치·host SSH 접속
                           │
          ┌────────────────┴────────────────┐
          │                                 │
     lfcs-node1                         lfcs-node2
  192.168.56.11/24                  192.168.56.12/24
  + 빈 disk 2개                     + 빈 disk 1개
          │                                 │
          └──────── private lab network ────┘
역할node1node2
기본 작업client·관리 대상server·backend·remote peer
storageLVM·filesystem·initiatorNFS·iSCSI target
networkclient·router·proxybackend·SSH server
identityLDAP clientLDAP lab provider
webreverse proxy·load balancerHTTP backend 1·2

192.168.56.0/24는 예시다. host나 기존 VPN과 겹치지 않는 RFC1918 subnet을 사용한다.

NIC를 분리하는 이유

첫 NIC는 package 설치와 host SSH 접속을 위한 management path로 유지한다. 두 번째 NIC나 private network에서 다음을 연습한다.

  • static IPv4·IPv6
  • static route
  • bridge·bond
  • forwarding·NAT·port redirection
  • packet filtering

현재 SSH가 통과하는 유일한 connection을 수정하면 VM console 없이는 복구하기 어렵다. network 실습 전에는 hypervisor console과 snapshot 복원을 먼저 확인한다.

배포판 선택

주 실습 환경

SELinux가 공식 competency에 포함되므로 SELinux Enforcing을 기본으로 사용할 수 있는 최신 RHEL-compatible distribution을 주 환경으로 두는 것이 편하다. Rocky Linux나 AlmaLinux 같은 선택지가 여기에 해당한다.

보조 실습 환경

Debian/Ubuntu 계열 VM을 하나 더 준비하면 다음 차이를 직접 확인할 수 있다.

영역RHEL-compatible 예Debian/Ubuntu 예
packagednf, RPMapt, dpkg
network주로 NetworkManagerNetworkManager, systemd-networkd, netplan 등
firewallfirewalld 또는 nftablesnftables 또는 다른 frontend
MACSELinux가 주 학습 대상AppArmor가 기본인 경우가 많으므로 SELinux 실습을 대체하지 않음
service 이름·설정package별 확인package별 확인

command 이름만 치환하지 않는다. service unit, configuration path, package가 제공하는 example, 적용 command까지 현재 시스템에서 확인한다.

cat /etc/os-release
command -v dnf apt rpm dpkg
command -v nmcli networkctl
command -v firewall-cmd nft
systemctl list-unit-files --type=service | less

VM 생성과 기본 설치

hypervisor는 snapshot·추가 disk·private network·console을 제공하면 된다. 설치 때 최소 환경을 선택해도 되지만 실습에 필요한 man page와 관리 도구를 package repository에서 설치할 수 있어야 한다.

권장 설치 기준:

  • hostname: lfcs-node1, lfcs-node2
  • 일반 관리자 계정: student
  • 일반 계정은 sudo 또는 배포판의 관리자 그룹 사용
  • OpenSSH server 활성화
  • SELinux 지원 배포판은 Enforcing 유지
  • firewall은 끄지 않고 현재 backend·zone을 확인
  • system locale은 원하는 언어를 사용할 수 있지만 command·log 검색을 위해 영어 출력에도 익숙해질 것

첫 부팅 뒤:

hostnamectl
localectl
cat /etc/os-release
uname -r
id
sudo -l
systemctl is-system-running
systemctl --failed

추가 disk 준비

hypervisor에서 OS disk와 분리된 빈 virtual disk를 연결한다. guest에서 device 이름을 추측하지 말고 크기·serial·현재 filesystem을 확인한다.

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,FSVER,LABEL,UUID,MOUNTPOINTS,MODEL,SERIAL
findmnt
swapon --show
pvs
vgs
lvs

연습 disk는 다음 조건을 모두 확인한다.

  • /, /boot, /home, active swap을 포함하지 않는다.
  • 현재 mount되어 있지 않다.
  • 기존 PV·RAID·filesystem signature가 필요한 데이터가 아니다.
  • snapshot 복원으로 초기 상태를 되돌릴 수 있다.

wipefs, partition 삭제, pvcreate, mkfs는 대상 확인 뒤 각 storage 실습에서 실행한다. 환경 구성 단계에서 불필요하게 초기화하지 않는다.

private network 준비

hypervisor에 host-only, internal 또는 private switch를 만든다. guest의 두 번째 NIC를 이 network에 연결하고 interface 이름과 MAC address를 기록한다.

ip -brief link
ip -brief address
ip route
nmcli device status 2>/dev/null || true
networkctl list 2>/dev/null || true

private network의 주소 예시:

nodeIPv4IPv6 documentation prefix 예시
node1192.168.56.11/242001:db8:56::11/64
node2192.168.56.12/242001:db8:56::12/64

2001:db8::/32는 문서용 prefix이며 공용 인터넷 routing에 사용하지 않는다. private lab 안에서만 사용한다.

주소를 적용한 뒤 양쪽에서 확인한다.

ip -brief address
ip route
ping -c 2 192.168.56.12
getent hosts lfcs-node2

hostname resolution은 처음에는 /etc/hosts로 단순화할 수 있다. DNS 구성 실습에서는 이 entry가 결과를 가리지 않도록 source를 확인한다.

SSH 작업 환경

host terminal에서 일반 계정으로 접속하고 필요한 경우 root shell로 전환한다.

ssh student@NODE_ADDRESS
sudo -i

SSH 접속 전후:

hostname
id
pwd
printf '%s\n' "$SSH_CONNECTION"

network·SSH server·firewall을 변경할 때는 hypervisor console을 열어 둔다. 기존 session 하나를 유지한 채 새 session에서 변경 결과를 시험하면 lockout 위험을 줄일 수 있다.

libvirt와 nested virtualization

guest VM 안에서 libvirt VM을 실제 실행하려면 CPU virtualization extension을 guest에 노출하는 nested virtualization이 필요할 수 있다. hypervisor·CPU·보안 정책에 따라 지원 여부가 다르다.

guest에서 먼저 확인한다.

lscpu | grep -i virtualization
grep -E -m1 '(vmx|svm)' /proc/cpuinfo
virt-host-validate 2>/dev/null || true

지원되지 않는 환경에서 무리하게 kernel module을 조작하지 않는다. 별도의 KVM-capable Linux host를 사용하거나, libvirt XML 정의·조회·storage/network 객체 관리까지 연습하고 실제 guest boot 검증의 한계를 기록한다.

Hyper-V를 사용하는 경우 host 관리자 PowerShell에서 해당 VM의 nested virtualization 지원 방법과 현재 Microsoft 문서를 확인해야 한다. VM이 꺼진 상태에서 변경하며 production VM에 적용하지 않는다.

기준 상태 확인

각 snapshot을 만들기 전에 다음 출력을 저장한다.

cat /etc/os-release
uname -r
hostnamectl
getenforce 2>/dev/null || true
systemctl is-active firewalld 2>/dev/null || true
systemctl --failed
ip -brief link
ip -brief address
ip route
ss -lntup
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
findmnt
swapon --show
pvs 2>/dev/null || true
vgs 2>/dev/null || true
lvs 2>/dev/null || true

전체 출력을 공개 문서에 붙이는 대신 배포판·kernel·interface·disk·SELinux·firewall 상태와 확인 날짜를 실습 기록에 남긴다.

snapshot·checkpoint 전략

이름포함 상태사용 전
00-baseOS, update, SSH, sudo, management NIC모든 실습의 최종 복구점
10-two-nodeprivate NIC와 node 간 연결network·remote service 실습
20-storage-blank추가 disk가 비어 있음LVM·filesystem·swap·iSCSI
30-services-baseweb·container·SELinux 실습 전service·proxy·container

snapshot 생성만으로 복구 가능성을 증명하지 못한다.

  1. snapshot을 만든다.
  2. 작은 test file 또는 hostname marker를 만든다.
  3. snapshot으로 복원한다.
  4. marker가 사라지고 VM boot·network·SSH가 정상인지 확인한다.

memory state를 포함한 checkpoint는 실행 중 연결·시간 상태까지 되돌릴 수 있다. 가능하면 VM을 정상 종료한 clean snapshot도 별도로 보관한다.

실습마다 기록할 최소 정보

주제:
배포판·버전:
host와 대상 device/interface:
시작 상태:
목표 상태:
사용한 문서·man page:
시작/종료 시각:
최종 검증:
초기화 또는 snapshot 복원 결과:

공개 Docs의 예제 성공 여부와 개인 수행 기록은 분리한다. 다른 사람이 재현할 수 있는 기술 조건만 공개 문서에 반영한다.

시험 환경과 구분할 점

공식 안내상 실제 시험은 제공된 remote desktop과 Linux terminal에서 수행한다. 개인 VM의 hostname·disk·NIC 이름·package·service 이름을 시험에서도 같다고 가정하지 않는다.

연습 때 다음 습관을 만든다.

  • 매 task 시작 때 현재 host와 대상 객체를 확인한다.
  • 문제에서 제공한 device·interface·path를 그대로 사용한다.
  • base system의 session, management network와 요구하지 않은 service를 건드리지 않는다.
  • 재부팅이 꼭 필요한지 먼저 판단한다.
  • man page, /usr/share의 배포판 문서와 설치된 package help에서 답을 찾는다.
  • 마지막에는 요청된 host에서 실제 동작과 영속성을 확인한다.

시험별 보호 대상·금지 port·node 안내는 바뀔 수 있으므로 시작 화면의 현재 지시를 우선한다.

환경 완료 기준

  • VM snapshot을 생성하고 실제 복원해 보았다.
  • OS disk와 비어 있는 연습 disk를 출력으로 구분한다.
  • management NIC와 private lab NIC를 구분한다.
  • node1과 node2가 private IPv4로 통신한다.
  • SSH 변경 중에도 사용할 hypervisor console이 있다.
  • SELinux Enforcing 환경을 사용할 수 있다.
  • libvirt 실습의 nested virtualization 지원 여부를 확인했다.

다음 문서

  1. LFCS 수행에 필요한 Linux 기초
  2. Linux 기초 실습
  3. 2노드 실습 서비스 준비
  4. 문제 해석과 막혔을 때 찾는 순서
  5. LFCS 단계별 실전 훈련 로드맵

참고 자료