Red Hat Certified System Administrator (RHCSA) #10 기본 네트워킹: NetworkManager (nmcli), hostname, /etc/hosts
#9 시스템 운영에서 chronyd로 시간을 맞추고 journald와 cron으로 로그와 작업을 관리했다면, 이번에는 시스템을 외부와 연결하는 네트워킹을 다룹니다. RHEL 9에서 네트워크 설정의 출발점이자 종착점은 NetworkManager이며, 시험에서 손으로 다루는 도구는 그 명령행 클라이언트인 nmcli입니다.
RHCSA에서 네트워킹 작업의 핵심은 단순합니다. 정적 IP를 설정하고, 그 설정이 재부팅 후에도 살아 있게 만드는 것입니다. 인터넷이 없는 시험 환경에서 IP 한 글자를 잘못 치면 검증조차 막히므로, 이번 글은 nmcli로 연결을 만들고 고치는 흐름을 확실히 손에 익히겠습니다.
NetworkManager란 무엇인가 #
RHEL 9의 네트워크는 NetworkManager라는 데몬이 관리합니다. 과거에 손으로 고치던 /etc/sysconfig/network-scripts/ifcfg-* 방식은 사라졌고, 이제 모든 설정은 NetworkManager가 보관하고 적용합니다. 시험에서 네트워크를 바꾼다는 것은 곧 NetworkManager에게 변경을 지시하는 것입니다.
NetworkManager를 이해하려면 두 개념을 구분해야 합니다.
| 개념 | 의미 |
|---|---|
| device(장치) | eth0, ens160처럼 실제(또는 가상) 네트워크 인터페이스 |
| connection(연결) | 한 device에 적용하는 설정 묶음(IP,게이트웨이,DNS 등) |
device는 하드웨어에 가깝고, connection은 그 device에 입히는 설정 프로필입니다. 하나의 device에 여러 connection을 만들어 두고 상황에 따라 바꿔 끼울 수도 있습니다. 시험에서 “정적 IP로 설정하라"는 작업은 결국 그 device에 적용된 connection을 수정하는 일입니다.
NetworkManager 자체가 떠 있는지부터 확인하겠습니다.
systemctl status NetworkManager
systemctl is-enabled NetworkManager데몬이 떠 있지 않으면 nmcli 명령이 동작하지 않으므로, 작업 전에 활성 상태를 확인하는 습관을 들이겠습니다.
nmcli로 현재 상태 보기 #
nmcli는 NetworkManager의 명령행 클라이언트입니다. 시험에서 GUI나 텍스트 메뉴(nmtui)도 쓸 수 있지만, 빠르고 정확하게 처리하려면 nmcli를 손에 익히는 편이 안전합니다.
가장 먼저 device의 상태를 봅니다.
nmcli device status출력의 STATE 열에서 connected인지 disconnected인지, 그리고 어떤 connection이 적용되어 있는지를 확인합니다.
connection 목록은 다음으로 봅니다.
nmcli connection showNAME(연결 이름), UUID, TYPE, DEVICE 네 열이 나옵니다. 여기서 NAME이 곧 작업 대상의 이름입니다. 특정 connection의 상세 설정을 모두 보려면 이름을 뒤에 붙입니다.
nmcli connection show "System ens160"이 명령은 그 connection의 모든 속성을 ipv4.method, ipv4.addresses, ipv4.gateway, ipv4.dns처럼 키와 값으로 나열합니다. 정적 IP를 설정할 때 이 키 이름들을 그대로 modify에 씁니다.
정적 IP 영구 설정: RHCSA의 핵심 #
이번 글에서 가장 중요한 작업입니다. 시험에서 “이 시스템에 정적 IP 192.0.2.10/24를 설정하고, 게이트웨이는 192.0.2.1, DNS는 192.0.2.53으로 하라"와 같은 문제가 자주 나옵니다. nmcli로 처리하는 흐름은 다음과 같습니다.
기존 connection을 수정하는 방법 #
이미 적용된 connection이 있다면 새로 만들 필요 없이 modify로 고치는 편이 깔끔합니다. 연결 이름이 System ens160이라고 가정하겠습니다.
nmcli connection modify "System ens160" \
ipv4.addresses 192.0.2.10/24 \
ipv4.gateway 192.0.2.1 \
ipv4.dns 192.0.2.53 \
ipv4.method manual각 키의 의미는 다음과 같습니다.
| 키 | 의미 |
|---|---|
ipv4.addresses | 할당할 IP 주소와 프리픽스(/24는 넷마스크 255.255.255.0) |
ipv4.gateway | 기본 게이트웨이 |
ipv4.dns | DNS 서버 주소 |
ipv4.method | manual(정적) 또는 auto(DHCP) |
여기서 결정적으로 중요한 키가 **ipv4.method manual**입니다. addresses만 넣고 method를 auto로 둔 채로 두면 DHCP가 받은 주소가 함께 붙어 의도와 달라집니다. 정적 IP라면 반드시 method를 manual로 바꿔야 합니다.
변경을 적용하기 #
modify는 설정 파일에 기록할 뿐, 즉시 인터페이스에 반영하지는 않습니다. 변경을 적용하려면 connection을 다시 올려야 합니다.
nmcli connection up "System ens160"up은 connection을 활성화하고, down은 비활성화합니다.
nmcli connection down "System ens160"
nmcli connection up "System ens160"modify로 저장한 설정은 NetworkManager가 디스크에 기록하므로 재부팅 후에도 그대로 유지됩니다. 이 점이 RHCSA에서 핵심입니다. 손으로 ip addr add만 한 설정은 재부팅하면 사라지지만, nmcli connection으로 저장한 설정은 영구적입니다.
새 connection을 만드는 방법 #
기존 connection을 건드리지 않고 새로 만드는 방법도 알아두면 좋습니다. connection add를 씁니다.
nmcli connection add \
type ethernet \
con-name static-ens160 \
ifname ens160 \
ipv4.addresses 192.0.2.10/24 \
ipv4.gateway 192.0.2.1 \
ipv4.dns 192.0.2.53 \
ipv4.method manual| 키 | 의미 |
|---|---|
type | 연결 종류(ethernet이 일반 유선) |
con-name | 새로 만들 connection의 이름 |
ifname | 연결을 묶을 device 이름 |
add로 만든 connection도 디스크에 저장되어 재부팅 후 유지됩니다. 만들고 나서 nmcli connection up static-ens160으로 활성화하면 적용됩니다.
DNS를 여러 개 넣거나 추가하기 #
DNS 서버를 둘 이상 지정하려면 쉼표로 나열합니다.
nmcli connection modify "System ens160" ipv4.dns "192.0.2.53,192.0.2.54"기존 값에 추가만 하고 싶다면 키 앞에 +를, 일부만 빼고 싶다면 -를 붙입니다.
nmcli connection modify "System ens160" +ipv4.dns 8.8.8.8
nmcli connection modify "System ens160" -ipv4.dns 8.8.8.8DHCP로 되돌리기 #
반대로 정적 설정을 DHCP로 돌리는 작업이 나올 수도 있습니다. method를 auto로 바꾸고, 남아 있는 정적 값을 비웁니다.
nmcli connection modify "System ens160" ipv4.method auto
nmcli connection modify "System ens160" ipv4.addresses "" ipv4.gateway ""
nmcli connection up "System ens160"method만 auto로 바꾸고 addresses를 그대로 두면 정적 주소가 DHCP 주소와 같이 붙으므로, 되돌릴 때는 값을 비우는 것까지 잊지 않겠습니다.
hostname 설정 #
호스트명은 hostnamectl 명령으로 다룹니다. 현재 호스트명과 시스템 정보를 보려면 인자 없이 실행합니다.
hostnamectl호스트명을 바꾸려면 set-hostname을 씁니다.
hostnamectl set-hostname server1.example.com이 명령은 호스트명을 /etc/hostname 파일에 기록하므로 재부팅 후에도 유지됩니다. 적용 결과는 hostname 명령이나 hostnamectl로 다시 확인할 수 있습니다.
hostname호스트명을 바꾼 뒤 현재 셸의 프롬프트에는 옛 이름이 남아 보일 수 있는데, 새 셸을 열거나 다시 로그인하면 갱신됩니다. 시험에서는 파일에 올바로 기록되었는지가 채점 대상이므로, 프롬프트 표시보다 hostnamectl 출력으로 검증하겠습니다.
/etc/hosts로 이름 해석하기 #
DNS 서버 없이도 특정 호스트명을 IP로 해석하게 하려면 /etc/hosts 파일에 직접 항목을 적습니다. 형식은 IP 주소, 그다음 호스트명들입니다.
192.0.2.10 server1.example.com server1
192.0.2.20 server2.example.com server2한 줄에 IP 하나와 그 IP가 가리키는 이름을 공백으로 나열합니다. 첫 이름을 정규 이름(FQDN)으로, 뒤에 짧은 별칭을 붙이는 관례를 따르면 깔끔합니다.
/etc/hosts는 시스템이 이름을 해석할 때 보통 DNS보다 먼저 참조하므로, 시험에서 “server2를 192.0.2.20으로 해석되게 하라"와 같은 문제는 이 파일에 한 줄을 추가하는 것으로 해결됩니다. 추가한 항목은 getent hosts server2로 검증할 수 있습니다.
getent hosts server2.example.com이 명령은 시스템의 이름 해석 경로(/etc/hosts와 DNS 모두)를 거쳐 결과를 보여주므로, 설정이 실제로 먹히는지 확인하는 데 적합합니다.
ip 명령으로 결과 확인하기 #
nmcli로 설정을 마쳤다면, 실제 커널에 반영된 상태를 ip 명령으로 검증하겠습니다. ip 명령은 확인용이며, 여기서 직접 주소를 더하는 작업은 영구적이지 않다는 점을 기억하겠습니다.
인터페이스에 붙은 주소를 봅니다.
ip addr show ens160출력에서 inet 192.0.2.10/24가 보이면 IP가 제대로 적용된 것입니다.
라우팅 테이블, 특히 기본 게이트웨이를 봅니다.
ip routedefault via 192.0.2.1 dev ens160처럼 default 경로가 의도한 게이트웨이를 가리키는지 확인합니다.
DNS 설정과 전반적인 connection 상태는 다시 nmcli로 확인하는 편이 정확합니다.
nmcli connection show "System ens160" | grep ipv4ip 명령으로 보이는 주소와 게이트웨이, nmcli로 보이는 DNS와 method가 모두 의도와 맞으면 작업이 끝난 것입니다. 실제 통신은 ping -c 3 192.0.2.1로 빠르게 확인합니다.
흔히 막히는 지점은 다음과 같습니다.
ipv4.method를 manual로 안 바꿈. addresses만 넣어 DHCP 주소가 함께 붙는다- modify 후 up을 안 함. 설정은 저장됐지만 인터페이스에 반영되지 않는다
- 프리픽스 누락.
192.0.2.10처럼/24를 빠뜨리면 적용에 실패한다 - connection 이름 오타. 따옴표 안의 이름이
connection show의 NAME과 정확히 같아야 한다
시험 포인트 #
이번 글에서 RHCSA 채점과 직결되는 부분을 정리하겠습니다.
- 정적 IP는 nmcli connection으로 영구 설정.
ipv4.addresses,ipv4.gateway,ipv4.dns,ipv4.method manual을 modify나 add로 지정한다 ipv4.method manual을 반드시 지정. 정적 IP인데 method가 auto면 의도와 달라진다- modify 뒤에는
connection up. 저장과 적용은 별개다 ip addr,ip route는 확인용. 직접 추가한 주소는 재부팅 후 사라진다- 호스트명은
hostnamectl set-hostname./etc/hostname에 기록되어 영구 유지된다 - 이름 해석은
/etc/hosts에 한 줄 추가.getent hosts로 검증한다
정리 #
이번 글에서 잡은 것:
- NetworkManager가 RHEL 9 네트워크를 관리. device(장치)와 connection(설정 프로필)을 구분한다
- nmcli 명령.
device status로 장치를,connection show로 연결을 보고,connection modify,add로 설정하며up,down으로 적용한다 - 정적 IP 영구 설정. addresses,gateway,dns에 method manual을 더해 저장하면 재부팅 후에도 유지된다
- hostname.
hostnamectl set-hostname으로 영구 변경한다 /etc/hosts. IP와 호스트명을 한 줄로 적어 DNS 없이 이름을 해석한다- 검증.
ip addr,ip route로 적용을 확인하고 ping으로 통신을 점검한다
다음: 사용자/그룹 #
네트워크로 시스템을 외부와 연결했다면, 이제 그 시스템을 누가 어떤 권한으로 쓰는지를 다룹니다.
#11 사용자/그룹: UID/GID, sudo, ACL, 비밀번호 정책에서는 사용자와 그룹을 만들고 UID,GID를 지정하는 법, sudo로 권한을 위임하는 법, ACL로 파일별 세밀한 접근 권한을 주는 법, 그리고 비밀번호 만료 정책을 설정하는 법까지 직접 쳐 보며 정리하겠습니다.