안녕하세요, 오픈소스컨설팅에서 리눅스를 담당하고 있는 강주희입니다.

RHEL(Red Hat Enterprise Linux) 8 버전은 2019년 5월 7에 8.0이 처음 릴리즈되고, 2022년 11월 9일에는 RHEL8.7 릴리즈 되었습니다. RHEL8 릴리즈 버전이 중반기를 지나면서 프로덕션 환경에서도 사용되고 있는 것을 자주 볼 수 있습니다. 레드햇 Life Cycle Planning 에 의하면 2023년 중반부에는 RHEL9.4 버전이 릴리즈 되는데, 해당 시기에는 RHEL9도 신규 장비에 주로 도입될 거라고 예상됩니다.

Life Cycle: RHEL 9 Planning Guide (출처: 레드햇)

2022년 5월 17일에 RHEL9 버전이 릴리즈되면서 Network 관리 도구의 추세가 변화하고 있다는 것을 알 수 있습니다. 네트워크 Initscripts 방식은 더 이상 사용하지 않게 되면서 NetworkManager를 통해서만 네트워크를 설정 및 관리하게 되었습니다.

이러한 추세는 RHEL8 부터 체감할 수 있었습니다.

RHEL7에는 InitscriptsNetworkManager를 모두 지원하였지만 RHEL8 부터는 Initscripts가 기본 패치에서 제외되어 별도의 패키지를 설치해야 사용할 수 있었습니다.

이번 포스팅에서는 네트워크 관리 도구 별 특징과 Red Hat에서 추구하는 네트워크 관리 도구의 방향성에 대해 다루어보려고 합니다.

1. 네트워크 관리 도구 별 특징

1) Initscripts 란?

initscripts는 ifupifdown 명령어와 SysV-style init service인 network 를 제공합니다.

Fedora와 RHEL에서는 /etc/sysconfig/network-scripts 경로의 ifcfg-rh 파일 형식으로 네트워크를 구성합니다. initscriptsnetwork-scripts 부분은 ifcfg-rh 파일을 구문 분석하고, 네트워크를 구성하는 쉘 스크립트 묶음입니다. 커널에서 인터페이스와 IP 주소를 설정하기 위해 iproute2를 호출합니다.

initscripts는 다음의 기능을 포함하고 있습니다.

  • network-scripts – legacy scripts for manipulating of network devices
  • readonly-root – service for configuring the read-only root support
  • netconsole – service for initializing of network console logging

2) NetworkManager 란?

NetworkManager는 Linux에서 네트워크를 구성하기 위한 데몬입니다.

NetworkMnager는 네트워크를 편리하게 구성하기 위해 CLI 도구인 nmcli 와 GUI 도구인 nmtui를 지원합니다.

NetworkManager는 INI 형식(keyfile)의 파일이나 ifcfg-rh 파일 형식으로 파일을 구성할 수 있습니다.

우선, INI 파일은 속성을 키-값 쌍(key-value pairs) 형식의 구성 파일입니다. INI 형식의 구성 파일은 /{etc,run,usr/lib}/NetworkManager/system-connections 경로에 정의 되며, 사용자는 /etc/NetworkManager/system-connections 경로에서 네트워크를 구성할 수 있습니다. 예를 들어 DHCP를 사용하는 ethernet device는 다음과 같이 구성할 수 있습니다.

# cat /etc/NetworkManager/system-connections/example.nmconnection
[connection]
id=example_connection
type=ethernet
autoconnect=true

[ipv4]
method=auto

[ipv6]
method=auto

[ethernet]
mac-address=00:53:00:8f:fa:66

NetworkManager는 네트워크 구성 파일을 /etc/sysconfig/network-scripts 경로의 ifcfg-rh 파일로 함께 사용합니다.

NetworkManager가 어떤 파일을 우선으로 사용하는 지는 /etc/NetworkManagerNetworkManager.conf 파일의 main.plugins 설정값으로 결정합니다. 앞에 위치한 값 일수록 우선으로 사용하는 파일 형식입니다. 예를 들어 main.plugins=keyfile,ifcfg-rh 이라면 keyfile 형식을 우선으로 사용하고, ifcfg-rh는 차순위로 사용됩니다. RHEL8 버전은 ifcfg-rh 파일이 선 순위로 사용하는 것이 기본값이고, RHEL9 버전에는 keyfile 파일을 선 순위로 사용하는 것이 기본값입니다.

  • RHEL8.4 의 NetworkManager.confmain.plugins 설정값
[root@rhel84 ~]# cat /etc/NetworkManager/NetworkManager.conf |grep -A1 '\[main\]'
[main]
#plugins=ifcfg-rh
  • RHEL9.1 의 NetworkManager.confmain.plugins 설정값
[root@rhel91 ~]# cat /etc/NetworkManagerNetworkManager.conf |grep -A1 '\[main\]'
[main]
#plugins=keyfile,ifcfg-rh

2. RHEL8과 9에서 ifup / ifdown 이 동작하는 방식이 다르다?

Fedora는 Red Hat Enterprise Linux(이하 RHEL) 버전의 업스트림 역할을 합니다. RHEL은 Fedora 레포지토리로 부터 파생되며, 안정성과 품질 보증을 거쳐 릴리즈 됩니다. 따라서 RHEL의 네트워크 관리 도구의 방향성을 이해하려면 Fedora의 방향성을 이해할 필요가 있습니다. RHEL는 다음과 같이 Fedora 버전을 기반으로 배포됩니다.

  • Fedora 19, 20 → Red Hat Enterprise Linux 7
  • Fedora 28 → CentOS Stream 8 → Red Hat Enterprise Linux 8
  • Fedora 34 → CentOS Stream 9 → Red Hat Enterprise Linux 9
Fedora Linux 와 RHEL 의 관계

Fedora 29에서 network-scripts패키지가 initscripts 패키지로부터 분리되었습니다.

Fedora 29 이전 버전은 network-scriptsinitscripts 패키지에서 지원하고, Fedora 29 이후 버전은 network-scriptsNetworkManager에서 지원됩니다. 앞서 설명하였듯이 initscripts쉘스크립트 묶음이고, NetworkManager데몬입니다.

따라서 ifup / ifdown 은 Fedora 28의 다운스트림인 RHEL8에서는 쉘스크립트인 initscripts를 통해서 동작하고, Fedora 34의 다운스트림인 RHEL9에서는 데몬인 NetworkManger 동작합니다.

RHEL8, 9에서 ifup 명령어가 어떻게 동작하는 지 확인해 보면 알 수 있습니다.

1) RHEL9에서 ifup 은 어떻게 동작할까?

[root@rhel91 ~]# dnf provides *bin/ifup
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Last metadata expiration check: 2:46:51 ago on Wed 14 Dec 2022 02:31:11 PM KST.
NetworkManager-initscripts-updown-1:1.40.0-1.el9.noarch : Legacy ifup/ifdown
     ...: scripts for NetworkManager that replace initscripts (network-scripts)
Repo        : BaseOS
Matched from:
Other       : *bin/ifup

(... 생략 ...)
 
[root@rhel91 ~]# dnf list NetworkManager-initscripts-updown
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Last metadata expiration check: 2:47:56 ago on Wed 14 Dec 2022 02:31:11 PM KST.
Available Packages
NetworkManager-initscripts-updown.noarch          1:1.40.0-1.el9           BaseOS

[root@rhel91 ~]# dnf install NetworkManager-initscripts-updown.noarch
(... 생략 ...)

[root@rhel91 ~]# rpm -qi NetworkManager-initscripts-updown.noarch
Name        : NetworkManager-initscripts-updown
Epoch       : 1
Version     : 1.40.0
Release     : 1.el9
Architecture: noarch
Install Date: Wed 14 Dec 2022 05:29:23 PM KST
Group       : System Environment/Base
Size        : 2163
License     : GPLv2+ and LGPLv2+
Signature   : RSA/SHA256, Mon 29 Aug 2022 06:46:39 PM KST, Key ID 199e2f91fd431d51
Source RPM  : NetworkManager-1.40.0-1.el9.src.rpm
Build Date  : Sat 27 Aug 2022 06:33:44 AM KST
Build Host  : aarch64-001.build.eng.bos.redhat.com
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : https://networkmanager.dev/
Summary     : Legacy ifup/ifdown scripts for NetworkManager that replace initscripts (network-scripts)
Description :
Installs alternative ifup/ifdown scripts that talk to NetworkManager.
This is only for backward compatibility with initscripts (network-scripts).
Preferably use nmcli instead

[root@rhel91 ~]# rpm -ql NetworkManager-initscripts-updown
/usr/libexec/nm-ifdown
/usr/libexec/nm-ifup
/usr/sbin/ifdown
/usr/sbin/ifup

[root@rhel91 ~]# ls -al /usr/sbin/ifup
lrwxrwxrwx. 1 root root 22 Dec 14 17:29 /usr/sbin/ifup -> /etc/alternatives/ifup
[root@rhel91 ~]# ls -al /etc/alternatives/ifup
lrwxrwxrwx. 1 root root 20 Dec 14 17:29 /etc/alternatives/ifup -> /usr/libexec/nm-ifup
[root@rhel91 ~]# ls -al /usr/libexec/nm-ifup
-rwxr-xr-x. 1 root root 1066 Aug 26 22:25 /usr/libexec/nm-ifup
  • RHEL9에서는 ifupNetworkManager-initscripts-updown 패키지에서 지원합니다.
  • NetworkManager-initscripts-updown 패키지는 BaseOS 레포지토리에서 지원합니다.
  • NetworkManager-initscripts-updown 패키지 정보를 보면 ifup/ ifdown 스크립트는 NetworkManager와 통신하여 동작한다고 설명되어 있습니다.
  • NetworkManager-initscripts-updown/usr/sbin/ifdown, /usr/sbin/ifup 을 제공합니다.
  • /usr/sbin/ifup/usr/libexec/nm-ifup에 링크되어 있습니다.

2) RHEL8에서 ifup 은 어떻게 동작할까?

[root@rhel84 ~]# dnf provides ifup
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Last metadata expiration check: 2:29:46 ago on Fri 16 Dec 2022 10:11:37 PM KST.
NetworkManager-1:1.30.0-7.el8.x86_64 : Network connection manager and user applications
Repo        : @System
Matched from:
Filename    : /usr/sbin/ifup

network-scripts-10.00.15-1.el8.x86_64 : Legacy scripts for manipulating of network devices
Repo        : @System
Matched from:
Filename    : /usr/sbin/ifup

[root@rhel84 ~]# dnf install network-scripts
(... 생략 ...)

[root@rhel84 ~]# rpm -qi network-scripts
Name        : network-scripts
Version     : 10.00.15
Release     : 1.el8
Architecture: x86_64
Install Date: Tue 30 Nov 2021 05:40:59 PM KST
Group       : Unspecified
Size        : 176186
License     : GPLv2
Signature   : RSA/SHA256, Thu 18 Feb 2021 04:11:05 PM KST, Key ID 199e2f91fd431d51
Source RPM  : initscripts-10.00.15-1.el8.src.rpm
Build Date  : Tue 16 Feb 2021 12:30:56 AM KST
Build Host  : x86-vm-56.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : https://github.com/fedora-sysv/initscripts
Summary     : Legacy scripts for manipulating of network devices
Description :
This package contains the legacy scripts for activating & deactivating of most
network interfaces. It also provides a legacy version of 'network' service.

The 'network' service is enabled by default after installation of this package,
and if the network-scripts are installed alongside NetworkManager, then the
ifup/ifdown commands from network-scripts take precedence over the ones provided
by NetworkManager.

If user has both network-scripts & NetworkManager installed, and wishes to
use ifup/ifdown from NetworkManager primarily, then they has to run command:
 $ update-alternatives --config ifup

Please note that running the command above will also disable the 'network'
service.

[root@rhel84 ~]# ls -al /usr/sbin/ifup
lrwxrwxrwx. 1 root root 22 Nov 24  2021 /usr/sbin/ifup -> /etc/alternatives/ifup
[root@rhel84 ~]# ls -al /etc/alternatives/ifup
lrwxrwxrwx. 1 root root 35 Nov 30  2021 /etc/alternatives/ifup -> /etc/sysconfig/network-scripts/ifup
[root@rhel84 ~]# ls -al /etc/sysconfig/network-scripts/ifup
-rwxr-xr-x. 1 root root 5463 Feb 16  2021 /etc/sysconfig/network-scripts/ifup
  • RHEL8에서는 ifup 명령어를 network-scriptsNetwork-Manager 에서 같이 제공한다는 것을 알 수 있습니다.
  • network-scripts 패키지 정보를 보면 이 패키지를 설치하면 network 서비스가 기본적으로 활성화됩니다.
  • network-scriptsNetwork-Manager 와 함께 설치된 경우 network-scripts 에서 제공하는 ifup / ifdown 명령이 우선으로 적용된 다는 것을 확인 할 수 있습니다.
  • /usr/sbin/ifup/etc/sysconfig/network-scripts/ifup 에 링크되어 있습니다.

3) 정리

명령어로 확인한 RHEL8, 9의 ifup 동작 방식을 정리하자면 다음 표와 같습니다.

RHEL8RHEL9
/usr/sbin/ifup 동작 방식/etc/sysconfig/network-scripts/ifup 에 링크되어 실행된다./usr/libexec/nm-ifup 가 링크되어 실행된다.
ifup 명령어를 지원하는 패키지network-scriptsNetwork-Manager 패키지NetworkManager-initscripts-updown 패키지
ifup 명령어를 지원하는 패키지 정보 (rpm -qi 로 확인한 결과)network-scripts 패키지 정보를 보면 이 패키지를 설치하면 network 서비스가 기본적으로 활성화한다.network-scriptsNetwork-Manager 와 함께 설치된 경우 network-scripts 에서 제공하는 ifup / ifdown 명령이 우선으로 적용된 다는 것을 확인 할 수 있다.NetworkManager-initscripts-updown 패키지는 BaseOS 레포지토리에서 지원한다.NetworkManager-initscripts-updown 패키지 정보를 보면 ifup/ ifdown 스크립트는 NetworkManager와 통신하여 동작한다고 설명되어 있다.
RHEL8, 9에서의 ifup 동작 비교

3. Red Hat에서 추구하는 네트워크 관리 도구의 방향성

RHEL7에는 InitscriptsNetworkManager를 OS에 기본 패치하여 지원하였지만 RHEL8 부터는 Initscripts 가 기본 패치에서 제외되어 기본적으로 NetworkManager를 통해서 네트워크를 관리할 수 있습니다. RHEL8, 9에서도 network-scripts 에서 제공하는 ifupifdown 을 사용할 수 있는 방법은 있습니다. 비록 RHEL8, 9 의 기본 패치에서 제외되었지만 이전 버전과의 호환성을 위해 별도로 패키지 설치해서 사용할 수 있습니다. RHEL8 에서는 network-scripts 패키지에서 ifupifdown 명령어와 SysV-style init service인 network 서비스를 제공합니다. RHEL9에서는 NetworkManager-initscripts-updown 패키지에서 ifup , ifdown 명령어만을 제공합니다. 즉, RHEL9 에서는 모든 네트워크 관리를 NetworkManager 서비스가 전담하는 것을 알수 있습니다.

이렇게 Initscripts가 RHEL8, 9 의 기본 패치에서 제외된 이유가 있습니다. Initscripts는 systemd가 아닌 init script로 구성되어 있습니다. 따라서 동기식으로 로드되도록 설계되었습니다.

[root@rhel84 ~]# systemctl status network
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; generated)
   Active: active (exited) since Fri 2022-12-16 21:31:41 KST; 2h 20min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 855 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
  
(... 생략 ...)

[root@rhel84 ~]# ls -al /etc/init.d/network
-rwxr-xr-x. 1 root root 8069 Feb 16  2021 /etc/init.d/network

대부분의 주요 Linux 배포판은 이미 systemd 로 전환되었습니다. Red Hat에서는 RHEL7 버전부터 부팅 프로세스가 systemd로 인해 병렬화 되어 서비스를 병렬로 제어가 가능합니다. 하지만 Initscripts는 병렬로 로드되지 않기 때문에 시스템 부팅 속도를 늦추게 하는 원인으로 지목되고 있습니다.

정리하자면 Initscripts는 systemd의 주요 이점인 서비스의 병렬적인 제어에 상반되는 특징을 가지므로 이를 개선하기 위해 NetworkManager를 중심으로 네트워크를 관리하는 것을 권장하는 추세라는 것을 알 수 있습니다.

4. 참고 문서

[1] Life Cycle: RHEL 9 Planning Guide
https://access.redhat.com/support/policy/updates/errata#RHEL8_Planning_Guide

[2] What’s the difference between Network Initscript and NetworkManager in RHEL 7
https://access.redhat.com/solutions/783533

[3] Initscript 개념
https://github.com/fedora-sysv/initscripts

[4] Fedora와 RHEL 릴리즈
https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux#Relationship_with_Fedora_Linux
https://access.redhat.com/articles/3078

[5] Initscripts’ ifcfg-rh Format in NetworkManager and its Future
https://blogs.gnome.org/thaller/2021/02/02/initscripts-ifcfg-rh-format-in-networkmanager-and-its-future/

강주희
Solutions Architect

오픈소스컨설팅 Linux 팀에서 리눅스를 기반으로 한 솔루션 아키텍트로 활동하고 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

One reply on “[인사이트] RHEL9 에서 본 네트워크 관리 도구의 사용 추세 ”