nmcli - NetworkManager 명령행 도구

nmcli - NetworkManager 명령행 도구

nmcli는 NetworkManager를 명령행에서 제어할 수 있는 도구입니다.

ifcfg 계열 명렁어들은 10버전에서는 더 이상 지원하지 않습니다. 대안으로 ip 명령어와 함께 nmcli 를 사용하셔야 합니다.

기본 사용법

네트워크 상태 확인

전체 상태 확인

NetworkManager 상태 확인
# NetworkManager 전체 상태
nmcli general status

# 간단한 상태 확인
nmcli

디바이스 정보 확인

네트워크 디바이스 확인
# 모든 디바이스 목록
nmcli device

# 특정 디바이스 상세 정보
nmcli device show eno1

# 디바이스 상태만 확인
nmcli device status

연결 프로파일 확인

연결 프로파일 관리
# 모든 연결 프로파일 확인
nmcli connection show

# 활성 연결만 확인
nmcli connection show --active

# 특정 필드만 출력
nmcli -f device,name connection show

네트워크 연결 관리

유선 네트워크 설정

정적 IP 설정

정적 IP 설정
# 새 연결 프로파일 생성
nmcli connection add \
    type ethernet \
    con-name "static-connection" \
    ifname eno1 \
    ip4 192.168.1.100/24 \
    gw4 192.168.1.1

# DNS 서버 추가
nmcli connection modify static-connection ipv4.dns "8.8.8.8 8.8.4.4"

# 연결 활성화
nmcli connection up static-connection

DHCP 설정

DHCP 설정
# DHCP 연결 생성
nmcli connection add \
    type ethernet \
    con-name "dhcp-connection" \
    ifname eno1

# 연결 활성화
nmcli connection up dhcp-connection

무선 네트워크 설정

WiFi 관리

WiFi 네트워크 관리
# WiFi 어댑터 활성화
nmcli radio wifi on

# 사용 가능한 WiFi 네트워크 스캔
nmcli device wifi list

# WiFi 네트워크에 연결
nmcli device wifi connect "SSID_NAME" password "PASSWORD"

# WiFi 연결 프로파일 생성
nmcli connection add \
    type wifi \
    con-name "my-wifi" \
    ifname wlan0 \
    ssid "SSID_NAME" \
    wifi-sec.key-mgmt wpa-psk \
    wifi-sec.psk "PASSWORD"

연결 프로파일 수정

기본 설정 수정

연결 프로파일 수정
# IP 주소 변경
nmcli connection modify example_profile ipv4.addresses 192.168.1.200/24

# 게이트웨이 변경
nmcli connection modify example_profile ipv4.gateway 192.168.1.1

# DNS 서버 변경
nmcli connection modify example_profile ipv4.dns "1.1.1.1,8.8.8.8"

# DHCP 방식으로 변경
nmcli connection modify example_profile ipv4.method auto

인터페이스 바인딩 설정

인터페이스 바인딩 관리
# 특정 인터페이스에 바인딩 해제
nmcli connection modify example_profile connection.interface-name ""

# 여러 인터페이스에 매칭 설정
nmcli connection modify example_profile match.interface-name "provider0 eno5"

# 단일 인터페이스에 매칭 설정
nmcli connection modify example_profile match.interface-name "provider0"

연결 활성화/비활성화

연결 제어
# 연결 활성화
nmcli connection up example_profile

# 연결 비활성화
nmcli connection down example_profile

# 연결 자동 시작 설정
nmcli connection modify example_profile connection.autoconnect yes

고급 사용법

본딩(Bonding) 설정

네트워크 본딩 설정
# 본딩 인터페이스 생성
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup

# 슬레이브 인터페이스 추가
nmcli connection add type ethernet slave-type bond con-name bond0-slave1 ifname eno1 master bond0
nmcli connection add type ethernet slave-type bond con-name bond0-slave2 ifname eno2 master bond0

# 본딩에 IP 설정
nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24
nmcli connection modify bond0 ipv4.gateway 192.168.1.1
nmcli connection modify bond0 ipv4.method manual

# 본딩 활성화
nmcli connection up bond0

브리지(Bridge) 설정

브리지 네트워크 설정
# 브리지 인터페이스 생성
nmcli connection add type bridge con-name br0 ifname br0

# 브리지에 포트 추가
nmcli connection add type ethernet slave-type bridge con-name bridge-slave-eno1 ifname eno1 master br0

# 브리지에 IP 설정
nmcli connection modify br0 ipv4.addresses 192.168.1.100/24
nmcli connection modify br0 ipv4.method manual

# 브리지 활성화
nmcli connection up br0

VLAN 설정

VLAN 설정
# VLAN 인터페이스 생성
nmcli connection add type vlan con-name vlan100 ifname eno1.100 dev eno1 id 100

# VLAN에 IP 설정
nmcli connection modify vlan100 ipv4.addresses 192.168.100.10/24
nmcli connection modify vlan100 ipv4.method manual

# VLAN 활성화
nmcli connection up vlan100

문제 해결

네트워크 디버깅

네트워크 문제 진단
# 로그 확인
journalctl -u NetworkManager

# 상세 로그 활성화
nmcli general logging level DEBUG

# 연결 문제 해결
nmcli connection reload
nmcli device reapply eno1

# 네트워크 재시작
systemctl restart NetworkManager

설정 백업 및 복원

설정 관리
# 연결 프로파일 삭제
nmcli connection delete connection-name

# 설정 파일 위치
ls /etc/NetworkManager/system-connections/

# 프로파일 내보내기 (수동으로 파일 복사)
cp /etc/NetworkManager/system-connections/connection-name.nmconnection /backup/

실제 사용 예제

기존 시스템의 네트워크 인터페이스 정보:

시스템 네트워크 인터페이스 예제
[root@hpe-navix9 ~]# ip link show
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: eno5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 48:df:37:6b:95:4c brd ff:ff:ff:ff:ff:ff
    altname enp93s0f0
3: eno6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 48:df:37:6b:95:4d brd ff:ff:ff:ff:ff:ff
    altname enp93s0f1

위 시스템에서 eno6 인터페이스를 사용하여 네트워크를 설정하는 예제:

실제 시스템 설정 예제
# eno6 인터페이스에 정적 IP 설정
nmcli connection add type ethernet con-name "eno6-static" ifname eno6 \
    ip4 192.168.1.100/24 gw4 192.168.1.1

# DNS 서버 설정
nmcli connection modify eno6-static ipv4.dns "8.8.8.8,8.8.4.4"

# 연결 활성화
nmcli connection up eno6-static

# 연결 상태 확인
nmcli connection show eno6-static