Profile picture

[Linux] RHCSA v9 취득을 위한 문제 풀이 정리

JaehyoJJAng2025년 08월 01일

개요

인터넷에서 수집한 덤프를 각색하면서 생소한 내용이거나 어려웠던 문제들을 선별해 저만의 풀이법으로 기록하며 RHCSA 취득을 위한 여정에 떠나보겠습니다!


사실 자격증 취득이 급한게 아니기도 하고, 주말을 이용해 여유롭게 공부할 계획이라서 문제 풀이 업데이트가 조금 뜸할 수도 있습니다!


최종 목표는 CKAD, CKA까지! RHCSA부터 힘내서 같이 시작해 봅시다!


1. Network 설정

문제 01: ens18와 같은 네트워크 인터페이스에 대해 testprofile 이라는 이름의 NetworkManager 연결 프로필을 구성하세요. 다음의 정적 설정을 적용하시면 됩니다.

  • IPv4.Address: 192.168.0.1/24
  • IPv6.Address: fd01::101/64
  • IPv4 Default Gateway: 192.168.0.1
  • IPv6 Default Gateway: fd01::100
  • IPv4 DNS Servers: 8.8.8.8, 8.8.4.4
  • IPv6 DNS Server: fd01::111
  • DNS Search Domain: example.com

먼저, 현재 시스템에 구성된 인터페이스 상태를 확인해보겠습니다.

nmcli device status

DEVICE  TYPE      STATE          CONNECTION 
ens18   ethernet  연결됨         ens18      
lo      loopback  연결됨 (외부)  lo

현재 구성된 시스템에는 ens18 이라는 인터페이스가 존재하네요.


이제부터 네트워크 설정을 해보겠습니다.


  1. Connection Profile을 생성해주세요.
nmcli connection add type ethernet con-name testprofile if-name ens3

  1. IPv4 주소와 IPv6 주소를 할당해주겠습니다.
nmcli connection modify testprofile ipv4.addresses 192.168.0.1/24 ipv6.addresses fd01::101/64

IP 할당 해줄 때 서브넷 마스크도 필수로 작성해주셔야 합니다.


  1. IP 주소를 수동(manual)로 지정해줍시다.
nmcli connection modify testprofile ipv4.method manual ipv6.method manual

NetworkManager가 DHCP를 통해 IP 주소를 자동으로 획득하지 않도록 해야합니다.


  1. 기본 게이트웨이 설정하기
nmcli connection modify testprofile ipv4.gateway 192.168.0.1 ipv6.gateway fd01::100

  1. DNS 주소 설정하기
nmcli connection modify testprofile ipv4.dns "8.8.8.8 8.8.4.4" ipv6.dns fd01::111

  1. DNS search domain 추가하기
nmcli connection modify testprofile ipv4.dns-search example.com ipv6.dns-search example.com

  1. 위에서 생성한 testprofile 연결 활성화하기
nmcli connection up testprofile

검증 해보기

  1. 현재 connection이 active 상태인지 확인합시다.
nmcli connection show --active

  1. 생성한 testprofile 설정 확인하기
nmcli -p con show testprofile

  1. 인터페이스 주소가 정상적으로 변경 되었는지 확인하기
ip address show ens18

  1. 기본 게이트웨이 확인하기
ip route show

  1. DNS 주소 확인하기
cat /etc/resolv.conf

  1. 외부로 ping 날려보기
ping 8.8.8.8

2. 세컨더리 IP 설정

문제 01: testprofile이라는 이름의 연결 프로필에 다음 보조 IPv4를 정적으로 추가해주세요. 기존 설정을 손상시키지 않는 방식으로 이 작업을 수행하셔야 합니다.

  • 보조 IPv4 주소: 10.0.0.5/24

  1. 활성화된 네트워크 프로필 확인하기
nmcli connection show --active

현재 활성화된 모든 네트워크 연결 프로필을 출력해서 testprofile이 활성 상태인지 확인해볼게요.


  1. 보조 IPv4 주소 추가하기
nmcli connection modify testprofile +ipv4.addresses 10.0.0.5/24
  • +ipv4.addresses + 기호는 다른 구성을 덮어쓰지 않고 기존 주소에 새 IP를 추가합니다. (Secondary)

  1. 업데이트된 연결 활성화

네트워크를 다시 연결합니다.

nmcli connection up testprofile

또는 다음 명령어로 구성을 다시 로드할 수 있어요.

nmcli connection reload

  1. 새 IP 적용이 안되는 경우 NetworkManager 서비스를 재시작해주세요.
systemctl restart NetworkManager

3. root 비밀번호 복구 (rd.break, init=/bin/bash)

문제 01: 서버의 root 비밀번호를 분실하였습니다. 시스템에 다시 접근하기 위해서 root 비밀번호를 재설정하세요.


root 비밀번호를 복구하는 방법에는 rd.break, init=/bin/bash 두 가지 방식이 있습니다.


RHEL 9.0 버전으로 올라와서부터 rd.break가 안된다는 소문이 있어서,

제가 rhel.9.3에서 테스트를 진행해봤습니다.


rd.break, init=/bin/bash 두 가지 방식 모두 정상 동작합니다.

그러나 시험 환경에서는 안될 수도 있으므로, 두 가지 방식 다 모두 직접 실습해보는 것을 권장합니다.


이제부터 각각의 방식에 대한 풀이법을 기록해보겟습니다.


복구 모드(Rescue Mode) rd.break 방식


  1. 시스템 재부팅

GRUB 2 부팅 화면에서, 아래쪽 화살표 키를 사용하여 "Advanced options for Red Hat Enterprise Linux"를 선택합니다.
image


  1. 커널 부팅 옵션 편집

원하는 커널 버전 선택하고 e 키를 눌러서 부팅 옵션을 편집해야 합니다.
image


  1. 복구 모드 매개변수 추가

linux로 시작하는 줄로 이동하여 Ctrl+E를 눌러 줄 끝으로 넘어가주세요.


그리고 줄 끝에 rd.break를 추가합니다.
(선택 사항: 충돌을 피하기 위해서 console= 또는 vconsole=keymap= 옵션을 제거할 수 있어요.)
image


  1. 비상 셸로 부팅하기

Ctrl+X를 눌러서 수정된 매개변수로 부팅하면 비상 셸로 진입이 됩니다!
image


  1. 루트 파일시스템을 쓰기 가능으로 다시 마운트
mount -o remount,rw /sysroot

  1. chroot 환경으로 진입하기
chroot /sysroot

  1. Root 비밀번호 재설정
passwd root

  1. SELinux 리레이블링 활성화
touch /.autorelabel

  1. 종료 및 재부팅

Ctrl+D를 두 번 눌러 chroot와 비상 셸을 종료합니다.


시스템이 재부팅되고, SELinux가 파일 컨텍스트를 리레이블링하여 보안 규정을 준수하도록 합니다!


단일 사용자 모드 init=/bin/bash 방식 (대안)

  1. 재부팅 및 부팅 매개변수 편집

GRUB 2 부팅 화면에서 커널을 선택하고, e 키를 누른 뒤 linux로 시작하는 줄의 끝으로 이동합니다.


  1. 단일 사용자 모드를 위한 부팅 매개변수 수정

init=/bin/bash를 추가하고 rorw로 교체합니다. (선택 사항: console= 또는 vconsole.keymap= 옵션을 제거할 수 있습니다.)
image


  1. 단일 사용자 셸로 부팅

Ctrl+X를 눌러 변경된 내용으로 부팅합니다.


  1. Root 비밀번호 재설정
passwd root

  1. SELinux 리레이블링 활성화
touch /.autorelabel

  1. 시스템 재부팅
exec /sbin/init

4. 로컬 YUM/DNF 레포지토리 설정

문제 01: /mnt 디렉토리에 마운트된 RHEL-9 ISO 이미지를 사용하여서 로컬 YUM/DNF 레포지토리를 설정하세요.


이 실습을 진행하려면 시스템에 RHEL-9 ISO 이미지가 있어야 합니다!


  1. RHEL-9 ISO 이미지 마운트하기

RHEL-9.iso 파일을 루프 장비(loop device)로 /mnt 디렉토리에 마운트합니다.

mount -o loop RHEL-9.iso /mnt
  • -o loop: ISO를 루프백 장치로 마운트하도록 지정합니다.
  • 루프 장치는 ISO를 물리적 디스크처럼 취급합니다.
  • 진행하기 전에 RHEL-9.iso 파일이 있는지 확인하세요.

  1. [선택 사항] 마운트 영구 설정

부팅 시 ISO가 자동으로 마운트되도록 설정하고 싶다면 /etc/fstab에 마운트 명령어를 다음과 같이 추가해줍시다.

echo "/path/to/RHEL-9.iso /mnt iso9660 loop 0 0" >> /etc/fstab
  • /path/to/RHEL-9.iso를 실제 ISO 파일 위치로 바꿔주세요.
  • 만약 "iso9660 defaults"를 사용하면, 시스템은 ISO9660 마운트를 위한 기본 옵션을 적용합니다.
  • 만약 "iso9660 loop"를 사용하면, ISO 이미지 마운트를 위해 루프백 장치를 사용하도록 명시적으로 지정합니다.
  • 두 접근 방식 모두 유효하지만, ISO 파일을 다룰 때는 마운트 과정에 루프백 장치가 사용된다는 것을 명확히 하기 위해 "iso9660 loop" 옵션이 명시적으로 자주 사용됩니다.

  1. 로컬 레포지토리 파일 생성

/mnt/media.repo 파일을 /etc/yum.repos.d/rhel9.repo로 복사하거나, 새로운 /etc/yum.repos.d/rhel9.repo 파일을 생성합니다

cp /mnt/media.repo /etc/yum.repos.d/rhel9.repo

  1. 파일 권한 설정

모든 사용자가 읽을 수 있도록 /etc/yum.repos.d/rhel9.repo의 권한을 설정합니다

chmod 644 /etc/yum.repos.d/rhel9.repo

  1. 레포지토리 파일 편집

텍스트 편집기(예: vim)로 /etc/yum.repos.d/rhel9.repo 파일을 엽니다.

기존 내용을 다음 내용으로 교체해주세요.

[InstallMedia-BaseOS]
name=RHEL 9 - BaseOS
metadata_expire=-1
gpgcheck=0
enabled=1
baseurl=file:///mnt/BaseOS/

[InstallMedia-AppStream]
name=RHEL 9 - AppStream
metadata_expire=-1
gpgcheck=0
enabled=1
baseurl=file:///mnt/AppStream/

  1. 시스템 캐시 정리

Yum/DNF 및 subscription-manager 캐시를 지웁니다

dnf clean all
subscription-manager clean

참고

"This system is not registered"라는 메시지가 나타날 수 있습니다.

이 메시지를 없애려면 /etc/yum/pluginconf.d/subscription-manager.conf 파일을 편집하여 enabled=0으로 설정해주세요.


  1. 리포지토리 설정 확인:

사용 가능한 리포지토리 목록을 확인해봅시다.

dnf repolist

image

    Tag -

Loading script...