개요
인터넷에서 수집한 덤프를 각색하면서 생소한 내용이거나 어려웠던 문제들을 선별해 저만의 풀이법으로 기록하며 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
이라는 인터페이스가 존재하네요.
이제부터 네트워크 설정을 해보겠습니다.
- Connection Profile을 생성해주세요.
nmcli connection add type ethernet con-name testprofile if-name ens3
- IPv4 주소와 IPv6 주소를 할당해주겠습니다.
nmcli connection modify testprofile ipv4.addresses 192.168.0.1/24 ipv6.addresses fd01::101/64
IP 할당 해줄 때 서브넷 마스크도 필수로 작성해주셔야 합니다.
- IP 주소를 수동(
manual
)로 지정해줍시다.
nmcli connection modify testprofile ipv4.method manual ipv6.method manual
NetworkManager가 DHCP를 통해 IP 주소를 자동으로 획득하지 않도록 해야합니다.
- 기본 게이트웨이 설정하기
nmcli connection modify testprofile ipv4.gateway 192.168.0.1 ipv6.gateway fd01::100
- DNS 주소 설정하기
nmcli connection modify testprofile ipv4.dns "8.8.8.8 8.8.4.4" ipv6.dns fd01::111
- DNS search domain 추가하기
nmcli connection modify testprofile ipv4.dns-search example.com ipv6.dns-search example.com
- 위에서 생성한
testprofile
연결 활성화하기
nmcli connection up testprofile
검증 해보기
- 현재
connection
이 active 상태인지 확인합시다.
nmcli connection show --active
- 생성한
testprofile
설정 확인하기
nmcli -p con show testprofile
- 인터페이스 주소가 정상적으로 변경 되었는지 확인하기
ip address show ens18
- 기본 게이트웨이 확인하기
ip route show
- DNS 주소 확인하기
cat /etc/resolv.conf
- 외부로
ping
날려보기
ping 8.8.8.8
2. 세컨더리 IP 설정
문제 01: testprofile
이라는 이름의 연결 프로필에 다음 보조 IPv4를 정적으로 추가해주세요. 기존 설정을 손상시키지 않는 방식으로 이 작업을 수행하셔야 합니다.
- 보조 IPv4 주소:
10.0.0.5/24
- 활성화된 네트워크 프로필 확인하기
nmcli connection show --active
현재 활성화된 모든 네트워크 연결 프로필을 출력해서 testprofile
이 활성 상태인지 확인해볼게요.
- 보조 IPv4 주소 추가하기
nmcli connection modify testprofile +ipv4.addresses 10.0.0.5/24
+ipv4.addresses
+
기호는 다른 구성을 덮어쓰지 않고 기존 주소에 새 IP를 추가합니다. (Secondary)
- 업데이트된 연결 활성화
네트워크를 다시 연결합니다.
nmcli connection up testprofile
또는 다음 명령어로 구성을 다시 로드할 수 있어요.
nmcli connection reload
- 새 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
방식
- 시스템 재부팅
GRUB 2 부팅 화면에서, 아래쪽 화살표 키를 사용하여 "Advanced options for Red Hat Enterprise Linux"를 선택합니다.
- 커널 부팅 옵션 편집
원하는 커널 버전 선택하고 e
키를 눌러서 부팅 옵션을 편집해야 합니다.
- 복구 모드 매개변수 추가
linux
로 시작하는 줄로 이동하여 Ctrl+E
를 눌러 줄 끝으로 넘어가주세요.
그리고 줄 끝에 rd.break
를 추가합니다.
(선택 사항: 충돌을 피하기 위해서 console=
또는 vconsole=keymap=
옵션을 제거할 수 있어요.)
- 비상 셸로 부팅하기
Ctrl+X
를 눌러서 수정된 매개변수로 부팅하면 비상 셸로 진입이 됩니다!
- 루트 파일시스템을 쓰기 가능으로 다시 마운트
mount -o remount,rw /sysroot
chroot
환경으로 진입하기
chroot /sysroot
- Root 비밀번호 재설정
passwd root
- SELinux 리레이블링 활성화
touch /.autorelabel
- 종료 및 재부팅
Ctrl+D
를 두 번 눌러 chroot
와 비상 셸을 종료합니다.
시스템이 재부팅되고, SELinux가 파일 컨텍스트를 리레이블링하여 보안 규정을 준수하도록 합니다!
단일 사용자 모드 init=/bin/bash
방식 (대안)
- 재부팅 및 부팅 매개변수 편집
GRUB 2 부팅 화면에서 커널을 선택하고, e
키를 누른 뒤 linux로 시작하는 줄의 끝으로 이동합니다.
- 단일 사용자 모드를 위한 부팅 매개변수 수정
init=/bin/bash
를 추가하고 ro
를 rw
로 교체합니다. (선택 사항: console= 또는 vconsole.keymap= 옵션을 제거할 수 있습니다.)
- 단일 사용자 셸로 부팅
Ctrl+X
를 눌러 변경된 내용으로 부팅합니다.
- Root 비밀번호 재설정
passwd root
- SELinux 리레이블링 활성화
touch /.autorelabel
- 시스템 재부팅
exec /sbin/init
4. 로컬 YUM/DNF 레포지토리 설정
문제 01: /mnt
디렉토리에 마운트된 RHEL-9 ISO 이미지를 사용하여서 로컬 YUM/DNF 레포지토리를 설정하세요.
이 실습을 진행하려면 시스템에 RHEL-9 ISO 이미지가 있어야 합니다!
- RHEL-9 ISO 이미지 마운트하기
RHEL-9.iso
파일을 루프 장비(loop device)로 /mnt
디렉토리에 마운트합니다.
mount -o loop RHEL-9.iso /mnt
-o loop
: ISO를 루프백 장치로 마운트하도록 지정합니다.- 루프 장치는 ISO를 물리적 디스크처럼 취급합니다.
- 진행하기 전에
RHEL-9.iso
파일이 있는지 확인하세요.
- [선택 사항] 마운트 영구 설정
부팅 시 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" 옵션이 명시적으로 자주 사용됩니다.
- 로컬 레포지토리 파일 생성
/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
- 파일 권한 설정
모든 사용자가 읽을 수 있도록 /etc/yum.repos.d/rhel9.repo
의 권한을 설정합니다
chmod 644 /etc/yum.repos.d/rhel9.repo
- 레포지토리 파일 편집
텍스트 편집기(예: 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/
- 시스템 캐시 정리
Yum/DNF 및 subscription-manager 캐시를 지웁니다
dnf clean all
subscription-manager clean
참고
"This system is not registered"라는 메시지가 나타날 수 있습니다.
이 메시지를 없애려면 /etc/yum/pluginconf.d/subscription-manager.conf
파일을 편집하여 enabled=0으로 설정해주세요.
- 리포지토리 설정 확인:
사용 가능한 리포지토리 목록을 확인해봅시다.
dnf repolist