개인적으로 RHEL 계열 7 시리즈까지는 NetworkManager 서비스를 끄거나 패키지를 삭제한 후 network-scripts를 이용하여 네트워크 설정을 하고, network 서비스만을 이용해서 네트워크 제어를 한다. NetworkManager가 다소 불안정한 모습을 보이기 때문이다.
RHEL 계열 8 시리즈에서는 특수한 경우를 제외하곤 NetworkManager만을 이용하여 네트워크 설정과 제어를 한다. network-scripts가 여전히 혼재되어 있지만, NetworkManager가 많이 안정화되었기 때문이다. RHEL 계열 7 시리즈에서와 같이 network-scripts를 이용하여 네트워크 설정을 하고, network 서비스만을 이용해서 네트워크 제어를 하기 위해서는 network-scripts 패키지를 별도로 설치해야 한다.
RHEL 계열 9 시리즈에서부터는 network-scripts가 완전히 퇴출되었다. NetworkManager만을 이용하여 네트워크 설정과 제어를 해야 한다.
📌 network-scripts : /etc/sysconfig/network-scripts에 네트워크 설정 파일들이 있다.
📌 NetworkManager : /etc/NetworkManager에 네트워크 설정 파일들이 있다.
📌 RHEL 계열 8 시리즈 까지는 /etc/sysconfig/network-scripts의 설정 파일들을 수정한 후 NetworkManager에서 reload하여 네트워크 설정을 적용하는 것이 가능하다.
📌 네트워크 설정에는 재부팅해도 지속적으로 적용되는 영구 적용과 재부팅하면 사라지는 임시 적용이 있다.
[root@calintzcs ~]# ip link show
[root@calintzcs ~]# ip l (줄여서)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:4a:01:64 brd ff:ff:ff:ff:ff:ff
altname enp3s0
[root@calintzcs ~]# nmcli dev status
[root@calintzcs ~]# nmcli d (줄여서)
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
lo loopback unmanaged --
1.1. /etc/sysconfig/network-scripts/ifcfg-[ifname] 파일 생성, 또는 수정
[root@calintzcs ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens160
UUID=6b077e50-3aec-41a6-b960-13ae4840ba6a
DEVICE=ens160
ONBOOT=no
📌 새로 생성되는 파일이라면 아무 내용도 없겠지만, 일반적으로 위와 같은 서식으로 작성되어 있다.
1.2. 중요하지 않은 항목 삭제 및 IP 주소 정보 입력
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
UUID=6b077e50-3aec-41a6-b960-13ae4840ba6a
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.6.14
PREFIX=24
GATEWAY=192.168.6.1
DNS1=1.1.1.1
TYPE
BOOTPROTO
NAME
UUID
DEVICE
ONBOOT
IPADDR
PREFIX
GATEWAY
DNS1
📌 Name = ID = Profile name = Connection name
항목의 명칭을 좀 통일해 줬으면 좋겠다. 설정할 때마다 너무 헷갈린다.
일반적으로 관리 편의를 위해 네트워크 인터페이스 이름(ifname)과 동일하게 설정한다.
📌 그 외 설정할 수 있는 항목들이 30여 가지나 된다.
해당 항목들을 입력하지 않을 경우 대부분 기본값으로 설정되며, 기본값으로 적용되어도 네트워크 동작에는 지장 없다.
1.3. 설정 적용
[root@calintzcs ~]# nmcli connection reload
[root@calintzcs ~]# nmcli c r (줄여서)
[root@calintzcs ~]# nmcli network off
[root@calintzcs ~]# nmcli n off (줄여서)
[root@calintzcs ~]# nmcli network on
[root@calintzcs ~]# nmcli n on (줄여서)
또는, 특정 네트워크 인터페이스만 설정을 적용할 경우
[root@calintzcs ~]# nmcli connection reload
[root@calintzcs ~]# nmcli c r (줄여서)
[root@calintzcs ~]# nmcli connection up ens160
[root@calintzcs ~]# nmcli c up ens160 (줄여서)
📌 nmcli connection up
이미 up 상태의 네트워크 인터페이스라 하더라도 변경된 설정이 있다면 "nmcli connection up" 명령을 통해 즉시 변경사항을 적용할 수 있다.
굳이 "nmcli connection down" 후 "nmcli connection up"을 할 필요가 없다.
[root@calintzcs ~]# systemctl restart network.service
2.1. 기존 정보 삭제 후 IP 주소 설정
[root@calintzcs ~]# nmcli connection delete ens160
[root@calintzcs ~]# nmcli connection add type ethernet con-name ens160 ifname ens160
[root@calintzcs ~]# nmcli connection modify ens160 ipv4.method manual
[root@calintzcs ~]# nmcli connection modify ens160 ipv4.address 192.168.6.13/24
[root@calintzcs ~]# nmcli connection modify ens160 ipv4.gateway 192.168.6.1
[root@calintzcs ~]# nmcli connection modify ens160 ipv4.dns 1.1.1.1
[root@calintzcs ~]# nmcli connection modify ens160 +ipv4.dns 8.8.8.8
[root@calintzcs ~]# nmcli connection modify ens160 autoconnect yes
[root@calintzcs ~]# nmcli c d ens160
[root@calintzcs ~]# nmcli c a type ethernet con-name ens160 ifname ens160
[root@calintzcs ~]# nmcli c m ens160 ipv4.method manual ipv4.address 192.168.6.13/24 ipv4.gateway 192.168.6.1 ipv4.dns 1.1.1.1 +ipv4.dns 8.8.8.8 ipv4.may-fail no autoconnect yes
📌 nmcli connection add
Profile 기준으로 동작
해당 Profile이 없으면 새로 생성하고, 있으면 하나 더 추가한다.
📌 nmcli connection modify
Profile의 내용(항목) 기준으로 동작
해당 내용(항목)이 없으면 추가하고, 있으면 수정한다.
📌 nmcli의 modify 옵션에서 +는 추가, -는 삭제, 아무것도 붙이지 않는다면 수정의 의미를 갖는다.
📌 nmcli에서 동일한 항목을 하나 더 추가하고 싶다면 modify 옵션과 함께 추가할 항목 앞에 +를 붙이면 된다.
예 : DNS 주소 2개 입력 nmcli connection modify ens160 ipv4.dns 1.1.1.1 +ipv4.dns 8.8.8.8
📌 nmcli에서 특정 항목만 삭제하고 싶다면 modify 옵션과 함께 -를 사게할 항목 앞에 -를 붙이면 된다.
예 : IP 주소 삭제 nmcli connection modify ens160 -ipv4.address 192.168.6.13/24
2.2. 위 명령으로 작성된 /etc/sysconfig/network-scripts 파일(RHEL 계열 8 시리즈까지)
[root@calintzcs ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.6.13
PREFIX=24
GATEWAY=192.168.6.1
DNS1=1.1.1.1
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens160
UUID=61d2742a-1f40-4552-bc34-79fb13f8eaca
DEVICE=ens160
ONBOOT=yes
2.3. 위 명령으로 작성된 /etc/NetworkManager/system-connections 파일(RHEL 계열 9 시리즈부터)
[root@calintzcs ~]# vi /etc/NetworkManager/system-connections/ens160.nmconnection
[connection]
id=ens160
uuid=61d2742a-1f40-4552-bc34-79fb13f8eaca
type=ethernet
interface-name=ens160
[ethernet]
[ipv4]
address1=192.168.6.13/24,192.168.6.1
dns=1.1.1.1;8.8.8.8;
may-fail=false
method=manual
[ipv6]
addr-gen-mode=default
method=auto
📌 /etc/NetworkManager/system-connections/[ifname].nmconnection 파일을 직접 생성, 또는 수정하고 nmcli connection reload 명령 후 nmcli connection up [ifname] 명령을 통해 즉시 변경사항을 적용할 수도 있다.
2.4. 설정 적용
[root@calintzcs ~]# nmcli network off
[root@calintzcs ~]# nmcli n off (줄여서)
[root@calintzcs ~]# nmcli network on
[root@calintzcs ~]# nmcli n on (줄여서)
또는, 특정 네트워크 인터페이스만 설정을 적용할 경우
[root@calintzcs ~]# nmcli connection up ens160
[root@calintzcs ~]# nmcli c up ens160 (줄여서)
3.1. nmtui 실행
[root@calintzcs ~]# nmtui
📌 nmtui
NetworkManager 패키지와 함께 NetworkManager-tui 패키지가 설치되어 있어야 한다.
3.2. NetworkManager TUI 메인 화면에서 Edit a connection 선택
📌 TAB 키와 방향 키로 이동이 가능하고, Enter 키로 선택이 가능하다.
3.3. Profile 선택 화면에서 설정되어 있는 네트워크 인터페이스 Profile이 없다면 Add 선택, Profile이 있다면 해당 Profile 선택
3.4. New Connection에서 Ethernet 선택
3.5. Profile name과 해당 Profile을 적용할 Device 입력
📌 Profile name
다시 한번 더 강조하지만 Name = ID = Profile name = Connection name 모두 같은 의미다.
📌 설정 파일이 새로 생성될 때 파일 이름에 Profile name이 포함되므로 Profile name을 네트워크 인터페이스 이름(ifname)과 동일하게 설정하면 설정 파일 이름만으로 어떤 네트워크 인터페이스에 대한 설정 파일인지 알아보기 쉽다.
3.6. IPv4 CONFIGURATION 항목의 Automatic 선택
3.7. 확장 메뉴에서 Manual 선택하고 Show 선택
3.7. Addresses 항목의 Add 선택하고 IP 주소, Prefix, Gateway 정보 입력
3.8. DNS servers 항목의 Add 선택하고 DNS 주소 정보 입력 후 OK 선택
3.10. Profile 선택 화면에서 Back 선택
3.11. NetworkManager TUI 메인 화면에서 Active a connection 선택
3.12. 앞서 생성한 Profile 선택 후 Activate 선택하여 활성화
📌 Profile name 앞에 *이 붙여 있다면 활성화되어 있는 상태라는 의미다.
📌 해당 Profile이 활성화되는 순간 별다른 추가적인 명령이나 조작 없이 즉시 설정이 적용된다.
3.13. Back 선택하여 NetworkManager TUI 메인 화면으로 복귀
3.14. Quit 선택하여 NetworkManager TUI 종료
3.15. NetworkManager TUI로부터 작성된 /etc/sysconfig/network-scripts 파일(RHEL 계열 8 시리즈까지)
[root@calintzcs ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.9.19
PREFIX=24
GATEWAY=192.168.6.1
DNS1=1.1.1.1
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens160
UUID=608166e6-e457-4d02-99c6-2c6676570311
DEVICE=ens160
ONBOOT=yes
3.16. NetworkManager TUI로부터 작성된 /etc/NetworkManager/system-connections 파일(RHEL 계열 9 시리즈부터)
[root@calintzcs ~]# vi /etc/NetworkManager/system-connections/ens160.nmconnection
[connection]
id=ens160
uuid=608166e6-e457-4d02-99c6-2c6676570311
type=ethernet
interface-name=ens160
[ethernet]
[ipv4]
address1=192.168.6.19/24,192.168.6.1
dns=1.1.1.1;8.8.8.8;
may-fail=false
method=manual
[ipv6]
addr-gen-mode=default
method=auto
[proxy]
설정 파일 이름 보다는 설정 파일 내용 중 어떤 네트워크 인터페이스에 대한 설정인가를 지정하는 DEVICE 항목과 NetworkManager에서 보여질 Profile name을 지정하는 NAME 항목이 중요하다.
설정 파일 이름이 ifcfg-ens192, 또는 ens192.nmconnection이더라도 DEVICE=ens160으로 지정되어 있다면 곧 죽어도 ens160이라는 네트워크 인터페이스에 적용되는 설정 파일이다.
마찬가지로 설정 파일 이름이 ifcfg-abcd, 또는 abcd.nmconnection이더라도 NAME=ens160, 또는 id=ens160으로 지정되어 있다면 NetworkManager에서 보여질 Profile name은 ens160이다.
일반적으로 관리 편의상 설정 파일 이름에 네트워크 인터페이스 이름을 넣어서 ifcfg-[ifname], [ifname].nmconnection와 같은 형태로 관리하긴 하지만, ifcfg-1Gb_Port4, 10Gb_Port2.nmconnection와 같은 형태로 관리해도 상관없다.