서버 NIC 교체 후 IP가 사라져 서비스가 내려갔습니다. 임시로 ip addr를 넣어 복구했지만 재부팅하자 같은 장애가 다시 발생했습니다.
인터페이스 설정은 현재 상태와 영구 설정을 구분해야 합니다. nmcli를 알아야 반복 장애를 막을 수 있습니다.
서버 IP 할당과 네트워크 인터페이스 제어
서버 관리에서 IP 주소 설정은 가장 기본적이면서도 잘못하면 서버와 연결이 완전히 끊기는 위험한 작업입니다. 이 챕터에서는 NIC 개념부터 ip addr, nmcli를 이용한 고정 IP 설정까지, 실수 없이 작업하는 방법을 배웁니다.
- 1NIC(Network Interface Card)의 개념과 물리/가상 인터페이스 구분
- 2ip addr / ip link 명령어로 인터페이스 상태 확인
- 3nmcli를 사용한 고정 IP 설정과 연결 프로파일 관리
- 4DHCP와 수동(manual) IP 설정 방식의 차이
- 5인터페이스 활성화·비활성화 및 변경 사항 즉시 적용
- 6잘못된 IP 설정으로 SSH가 끊겼을 때 콘솔 복구 방법
ip addr showsystemctl status NetworkManagernmcli con show --activeNIC와 네트워크 인터페이스 기초 개념
신입 엔지니어가 서버에 처음 접속해서 네트워크 설정을 확인하려 할 때, ifconfig를 치면 "command not found"가 납니다. ip 명령어도 생소하고, 출력에 나오는 eth0, ens3, lo가 각각 무엇인지 알 수 없습니다. 인터페이스 개념을 이해하지 못하면 네트워크 관련 작업을 시작조차 할 수 없습니다.

NIC란 무엇인가?
NIC(Network Interface Card)는 서버가 네트워크에 연결되기 위한 하드웨어 장치입니다. 물리적 서버에는 실제 카드가 꽂혀 있고, 가상머신(VM)이나 컨테이너에는 가상 NIC가 존재합니다.
물리 서버:
┌──────────────────────────┐
│ 서버 메인보드 │
│ ┌────────────────────┐ │
│ │ NIC (eth0) │ │──── RJ45 케이블 ──── L2 스위치
│ │ NIC (eth1) │ │──── RJ45 케이블 ──── 이중화
│ └────────────────────┘ │
└──────────────────────────┘
가상머신(VM):
┌──────────────────────────┐
│ VM (KVM/VMware/Xen) │
│ ┌────────────────────┐ │
│ │ 가상 NIC (ens3) │ │──── 가상 브리지 ──── 호스트 NIC
│ └────────────────────┘ │
└──────────────────────────┘
인터페이스 이름 규칙
리눅스의 인터페이스 이름은 시스템마다 다를 수 있습니다.
구형 방식 (레거시):
eth0, eth1, eth2 — 순서대로 번호 부여
문제: 재부팅 시 순서가 바뀔 수 있음
신형 방식 (Predictable Network Interface Names):
ens3 — Embedded NIC (슬롯 번호 3)
enp2s0 — PCIe 버스 2번, 슬롯 0번
eno1 — On-board NIC 1번
wlan0 — 무선 LAN
lo — Loopback (127.0.0.1, 내부 통신 전용)
IP 주소와 NIC의 관계
하나의 NIC에 여러 IP를 할당할 수 있고, 하나의 서버에 여러 NIC가 있을 수 있습니다.
서버 네트워크 구성 예시:
eth0 (외부 통신용):
└── 192.168.1.100/24 (주 IP)
└── 192.168.1.101/24 (가상 IP, VIP)
eth1 (내부 백본 통신용):
└── 10.0.0.100/24
lo (루프백):
└── 127.0.0.1/8 (localhost)
NetworkManager란?
NetworkManager는 리눅스에서 네트워크 인터페이스를 관리하는 데몬(백그라운드 서비스)입니다. RHEL/CentOS/Rocky Linux/Fedora/Ubuntu 등 대부분의 배포판에서 기본으로 사용합니다.
# 실습 디렉토리 준비
mkdir -p /tmp/networking/part2/exam_6 && cd /tmp/networking/part2/exam_6
# NetworkManager 상태 확인
systemctl status NetworkManager
# 출력:
# ● NetworkManager.service - Network Manager
# Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service)
# Active: active (running) since Mon 2026-03-27 09:00:00 KST
#
# NetworkManager가 실행 중이지 않으면 nmcli 명령어가 작동하지 않음!
- 핵심 출력—명령 결과에서 성공/실패를 가르는 값을 먼저 확인합니다
- 대상 식별—IP, 포트, 인터페이스, 프로세스명처럼 다음 조치를 결정하는 필드를 봅니다
- 다음 분기—결과가 기대와 다르면 어느 계층을 이어서 점검할지 정합니다
**nmcli(NetworkManager Command Line Interface)**는 NetworkManager를 CLI에서 제어하는 도구입니다. GUI 없이 서버에서 네트워크를 설정하는 주요 방법입니다.
ip 명령어와 ifconfig — 인터페이스 상태 읽기
서버에 IP가 제대로 붙어있는지, 인터페이스가 올라와 있는지 확인하는 것은 네트워크 진단의 첫 번째 단계입니다. 그런데 구형 서버에서는 ifconfig가 작동하고 최신 배포판에서는 작동하지 않습니다. ip addr 출력을 처음 보면 어디를 읽어야 할지 모르겠습니다. 두 명령어의 차이와 출력 해석 방법을 모르면 상태 확인 자체가 막힙니다.

ip addr: 현재의 표준 명령어
ip 명령어는 iproute2 패키지의 일부로, 구형 ifconfig를 대체하는 현재 표준입니다.
# 모든 인터페이스 표시 (ip addr show의 줄임)
ip a
# 출력 예시:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo ← 루프백 IP
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
link/ether 52:54:00:ab:cd:ef brd ff:ff:ff:ff:ff:ff ← MAC 주소
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 ← IP/서브넷
valid_lft forever preferred_lft forever ← forever = 고정 IP
inet 192.168.1.101/24 brd 192.168.1.255 scope global secondary eth0
inet6 fe80::5054:ff:feab:cdef/64 scope link ← IPv6 Link-local
valid_lft forever preferred_lft forever
주요 필드 해석:
ip addr 출력에서 자주 나오는 필드의 의미를 알면 현재 인터페이스 상태를 빠르게 판독할 수 있습니다.
| 필드 | 의미 |
|---|---|
UP | 인터페이스 활성화 상태 |
LOWER_UP | 물리적 연결(케이블) 있음 |
mtu 1500 | 최대 전송 단위 1500 바이트 |
state UP/DOWN | 링크 상태 |
inet x.x.x.x/24 | IPv4 주소와 서브넷 |
valid_lft forever | 영구 할당 (DHCP면 시간 표시) |
scope global | 외부 통신에 사용되는 주소 |
scope link | 링크-로컬 주소 (같은 L2 내에서만) |
특정 인터페이스만 확인
모든 인터페이스 대신 특정 인터페이스만 조회하면 출력이 간결합니다. IP 주소만 추출하는 원라이너도 자주 사용합니다.
# eth0만 확인
ip addr show eth0
ip addr show dev eth0
# 간단히 IP만 추출
ip addr show eth0 | grep 'inet ' | awk '{print $2}'
# 192.168.1.100/24
ifconfig: 구형 명령어 (참고용)
ifconfig는 구형 시스템이나 일부 컨테이너 환경에서 여전히 보입니다. 출력 형식이 ip addr과 다르므로 필드 대응 관계를 파악해두는 것이 좋습니다.
# 구형 시스템이나 일부 환경에서 여전히 사용
ifconfig
# 출력:
# eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
# inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
# inet6 fe80::5054:ff:feab:cdef prefixlen 64 scopeid 0x20<link>
# ether 52:54:00:ab:cd:ef txqueuelen 1000 (Ethernet)
# RX packets 12345 bytes 1234567 (1.1 MiB)
# TX packets 9876 bytes 987654 (964.5 KiB)
# ifconfig가 없으면 설치 필요
sudo yum install net-tools -y # RHEL/CentOS
sudo apt install net-tools -y # Ubuntu/Debian
ip route: 라우팅 테이블 확인
라우팅 테이블은 패킷이 어떤 인터페이스와 게이트웨이를 통해 나가는지 결정합니다. default 항목이 기본 게이트웨이입니다.
ip route show
# 또는 ip r
# 출력:
# default via 192.168.1.1 dev eth0 proto static metric 100
# ↑ 기본 게이트웨이 (모든 트래픽의 출구)
# 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
# ↑ 직접 연결된 네트워크 (로컬 통신)
# 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.100
# ↑ eth1을 통한 내부 네트워크
ip link: 인터페이스 레이어 2 정보
ip link는 IP 주소 없이 인터페이스의 MAC 주소, 링크 상태, MTU 같은 레이어 2 정보만 표시합니다. 인터페이스를 직접 올리거나 내릴 때도 사용합니다.
ip link show
# 또는 ip l
# 인터페이스 활성화/비활성화 (root 필요)
sudo ip link set eth0 up
sudo ip link set eth0 down
본격적인 설정 변경 전에, 현재 상태를 완전히 파악하는 것이 안전한 작업의 첫걸음입니다.
전체 연결 프로파일 목록 확인
# 모든 연결 프로파일 표시
nmcli con show
# 출력:
# NAME UUID TYPE DEVICE
# System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
# lo a5ed19b0-8ac5-430c-8db6-c2fd6c91d7c6 loopback lo
# 활성화된 연결만 표시
nmcli con show --active
# 특정 연결의 상세 정보 (모든 속성 표시)
nmcli con show "System eth0"
# 출력 중 중요한 필드들:
# connection.id: System eth0 ← 프로파일 이름
# connection.interface-name: eth0 ← 인터페이스
# ipv4.method: auto ← auto=DHCP, manual=고정
# ipv4.addresses: -- ← 고정 IP (manual일 때)
# ipv4.gateway: -- ← 게이트웨이
# ipv4.dns: -- ← DNS 서버
# GENERAL.STATE: activated ← 현재 활성화됨
# IP4.ADDRESS[1]: 192.168.1.100/24 ← 실제 현재 IP
# IP4.GATEWAY: 192.168.1.1 ← 실제 현재 게이트웨이
디바이스 상태 확인
# 물리 인터페이스(device) 상태
nmcli device status
# 출력:
# DEVICE TYPE STATE CONNECTION
# eth0 ethernet connected System eth0
# eth1 ethernet disconnected --
# lo loopback unmanaged --
# 특정 디바이스 상세 정보
nmcli device show eth0
# 출력:
# GENERAL.DEVICE: eth0
# GENERAL.TYPE: ethernet
# GENERAL.HWADDR: 52:54:00:AB:CD:EF ← MAC 주소
# GENERAL.MTU: 1500
# GENERAL.STATE: 100 (connected)
# GENERAL.CONNECTION: System eth0
# IP4.ADDRESS[1]: 192.168.1.100/24
# IP4.GATEWAY: 192.168.1.1
# IP4.DNS[1]: 8.8.8.8
네트워크 전체 상태 요약
# 한눈에 보는 네트워크 상태
nmcli
# 출력:
# eth0: connected to System eth0
# "Red Hat Virtio network device"
# ethernet (virtio_net), 52:54:00:AB:CD:EF, hw, mtu 1500
# ip4 default
# inet4 192.168.1.100/24
# route4 0.0.0.0/0 (192.168.1.1)
# route4 192.168.1.0/24
# inet6 fe80::5054:ff:feab:cdef/64
NetworkManager 설정 파일 위치 파악
# 연결 프로파일 파일 위치
ls /etc/NetworkManager/system-connections/
# 'System eth0.nmconnection'
# 파일 내용 확인 (민감 정보 포함 시 root만 읽기 가능)
sudo cat '/etc/NetworkManager/system-connections/System eth0.nmconnection'
# [connection]
# id=System eth0
# type=ethernet
# interface-name=eth0
#
# [ipv4]
# method=auto ← DHCP
#
# [ipv6]
# method=auto
고정 IP 설정은 잘못하면 SSH 연결이 끊깁니다. 단계별로 신중하게 진행하세요.
작업 전 필수 체크리스트
# ✅ 1. 현재 IP 확인 (변경 전 백업)
ip addr show eth0
# inet 192.168.1.100/24 ← 현재 IP 기록
# ✅ 2. 현재 게이트웨이 확인
ip route show default
# default via 192.168.1.1 dev eth0 ← 게이트웨이 기록
# ✅ 3. 현재 DNS 확인
cat /etc/resolv.conf
# nameserver 8.8.8.8 ← DNS 기록
# ✅ 4. 설정할 고정 IP가 사용 중인지 확인
ping -c 2 192.168.1.200 # 할당하려는 IP ping 테스트
# 응답이 없어야 사용 가능 (응답 있으면 다른 장비가 사용 중)
# ✅ 5. tmux/screen 세션 활용 권장
# SSH 연결이 끊겨도 서버에서 작업이 이어지도록
tmux new-session -s network-config
방법 1: 기존 연결 프로파일 수정 (권장)
# 현재 연결 프로파일 이름 확인
nmcli con show
# NAME UUID TYPE DEVICE
# System eth0 ... ethernet eth0
# IP 설정 변경 (DHCP → 고정 IP)
# [주의] 아래 명령어들은 modify이므로 즉시 적용 안 됨 (con up 후 적용)
# IPv4 방식을 수동으로 변경
sudo nmcli con modify "System eth0" ipv4.method manual
# 고정 IP 및 서브넷 설정
sudo nmcli con modify "System eth0" ipv4.addresses 192.168.1.200/24
# 기본 게이트웨이 설정
sudo nmcli con modify "System eth0" ipv4.gateway 192.168.1.1
# DNS 서버 설정 (여러 개는 쉼표로 구분)
sudo nmcli con modify "System eth0" ipv4.dns "8.8.8.8,8.8.4.4"
# 설정 확인 (아직 적용 전)
nmcli con show "System eth0" | grep -E "ipv4\.(method|addresses|gateway|dns)"
# ipv4.method: manual
# ipv4.addresses: 192.168.1.200/24
# ipv4.gateway: 192.168.1.1
# ipv4.dns: 8.8.8.8,8.8.4.4
인터페이스 재시작으로 설정 적용
# [⚠️ 주의] 이 시점부터 SSH 연결이 끊길 수 있습니다!
# 새 IP로 재접속 준비를 먼저 하세요
# 연결 내리기
sudo nmcli con down "System eth0"
# 연결 올리기 (새 IP로 활성화)
sudo nmcli con up "System eth0"
# 또는 한 줄로
sudo nmcli con down "System eth0" && sudo nmcli con up "System eth0"
설정 적용 후 확인
# 새 IP로 SSH 재접속 후 확인
ip addr show eth0
# inet 192.168.1.200/24 brd 192.168.1.255 scope global eth0
ip route show
# default via 192.168.1.1 dev eth0 proto static metric 100
cat /etc/resolv.conf
# nameserver 8.8.8.8
# 연결 테스트
ping -c 3 192.168.1.1 # 게이트웨이 통신
ping -c 3 8.8.8.8 # 인터넷 통신
ping -c 3 google.com # DNS 해석
방법 2: 새 연결 프로파일 생성 (기존 설정 보존)
# 기존 프로파일을 건드리지 않고 새 프로파일 생성
sudo nmcli con add \
type ethernet \
con-name "static-eth0" \
ifname eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.200/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8,8.8.4.4"
# 기존 프로파일 비활성화, 새 프로파일 활성화
sudo nmcli con down "System eth0"
sudo nmcli con up "static-eth0"
# 문제 발생 시 쉽게 롤백 가능
sudo nmcli con down "static-eth0"
sudo nmcli con up "System eth0" # 원래대로
재부팅 후에도 설정 유지 확인
# 자동 연결 설정 확인
nmcli con show "static-eth0" | grep autoconnect
# connection.autoconnect: yes ← 재부팅 시 자동 활성화
# yes가 아니면 활성화
sudo nmcli con modify "static-eth0" connection.autoconnect yes
# 재부팅 후 확인
sudo reboot
# ... 재접속 후
ip addr show eth0
# 고정 IP가 유지되어야 함
운영 중 인터페이스를 제어하거나 서비스 IP(VIP)를 추가해야 하는 상황의 실습입니다.
인터페이스 UP/DOWN 제어
# nmcli로 인터페이스 내리기
sudo nmcli con down "System eth0"
# Connection 'System eth0' successfully deactivated
# nmcli로 인터페이스 올리기
sudo nmcli con up "System eth0"
# Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
# 디바이스 레벨에서 직접 제어 (연결 프로파일과 무관)
sudo nmcli device disconnect eth0
sudo nmcli device connect eth0
# ip 명령어로도 가능 (일시적, NetworkManager 관리 범위 밖)
sudo ip link set eth0 down
sudo ip link set eth0 up
다중 IP 추가 (Secondary IP)
하나의 NIC에 여러 IP를 할당하는 것은 가상 IP(VIP), 멀티 도메인 웹 서버 등에서 활용됩니다.
# 기존 고정 IP에 보조 IP 추가
# + 기호로 기존 설정에 추가 (= 기호는 덮어씀)
sudo nmcli con modify "System eth0" +ipv4.addresses 192.168.1.201/24
# 적용
sudo nmcli con up "System eth0"
# 확인
ip addr show eth0
# inet 192.168.1.200/24 brd 192.168.1.255 scope global eth0
# inet 192.168.1.201/24 brd 192.168.1.255 scope global secondary eth0
# 보조 IP 제거
sudo nmcli con modify "System eth0" -ipv4.addresses 192.168.1.201/24
sudo nmcli con up "System eth0"
ip 명령어로 임시 IP 추가 (재부팅 시 사라짐)
# 임시로 IP 추가 (테스트용)
sudo ip addr add 192.168.1.201/24 dev eth0
# 확인
ip addr show eth0 | grep inet
# 임시 IP 제거
sudo ip addr del 192.168.1.201/24 dev eth0
인터페이스별 MTU 조정
# 현재 MTU 확인
ip link show eth0 | grep mtu
# mtu 1500
# Jumbo Frame 설정 (NAS/스토리지 네트워크에서 성능 향상)
sudo nmcli con modify "System eth0" ethernet.mtu 9000
sudo nmcli con up "System eth0"
# 확인
ip link show eth0 | grep mtu
# mtu 9000
연결 프로파일 삭제
# 더 이상 필요 없는 프로파일 삭제
sudo nmcli con delete "old-connection"
# 삭제 확인
nmcli con show
상황
서버에 고정 IP 192.168.1.200을 설정하고 인터페이스를 재시작했는데 SSH 연결이 끊겼습니다. 새 IP로 다시 접속을 시도해도 연결이 되지 않습니다.
# 로컬에서 새 IP로 접속 시도
ssh admin@192.168.1.200
# ssh: connect to host 192.168.1.200 port 22: Connection refused
# 기존 IP로도 접속 시도
ssh admin@192.168.1.100
# ssh: connect to host 192.168.1.100 port 22: Connection timed out
서버와 통신 자체가 안 됩니다.
ping 192.168.1.200
# Request timeout for icmp_seq 0
ping 192.168.1.100
# Request timeout for icmp_seq 0
원인 분석 (나중에 콘솔 접속 후 파악)
# 서버 콘솔에서 확인
ip addr show eth0
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
# link/ether 52:54:00:ab:cd:ef brd ff:ff:ff:ff:ff:ff
# inet 192.168.2.200/24 brd 192.168.2.255 scope global eth0
# ↑ !!! 192.168.2.x 대역 — 게이트웨이와 다른 대역
ip route show
# default via 192.168.1.1 dev eth0
# 192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.200
# 문제 파악: IP는 192.168.2.200/24로 입력됐는데
# 게이트웨이는 192.168.1.1 (다른 서브넷!)
# → 게이트웨이 unreachable → 통신 불가
원인별 흔한 실수들
실수 1: 서브넷 대역 오타
# 잘못된 설정
sudo nmcli con modify "eth0" ipv4.addresses 192.168.2.200/24 # 2를 1로 써야 했는데
sudo nmcli con modify "eth0" ipv4.gateway 192.168.1.1 # 게이트웨이는 1 대역
# → 서로 다른 서브넷 → 통신 불가
실수 2: 서브넷 마스크 오류
# 잘못된 설정
sudo nmcli con modify "eth0" ipv4.addresses 192.168.1.200/25 # /24가 맞는데 /25 입력
# → 서버는 192.168.1.128-255 범위만 인식
# → 게이트웨이 192.168.1.1이 다른 서브넷으로 판단
실수 3: 게이트웨이 오타
# 잘못된 설정
sudo nmcli con modify "eth0" ipv4.gateway 192.168.1.254 # 실제는 192.168.1.1
# → 게이트웨이 없음 → 외부 통신 불가
복구 방법: iDRAC/iLO/KVM 콘솔 접속
SSH가 완전히 차단된 상황에서는 하드웨어 원격 관리 인터페이스를 사용해야 합니다.
하드웨어 원격 콘솔 종류:
Dell 서버: iDRAC (Integrated Dell Remote Access Controller)
HP 서버: iLO (Integrated Lights-Out)
Supermicro: IPMI / iKVM
가상머신: VNC, SPICE, VMware Console, AWS SSM Session Manager
# iDRAC 접속 예시 (별도 관리 네트워크 IP)
# 웹 브라우저: https://192.168.100.10 (iDRAC 관리 IP)
# 또는 iDRAC CLI
ssh admin@192.168.100.10 # iDRAC IP (서버 IP와 별도)
# 콘솔 접속 후 서버 화면 직접 제어
# Virtual Console 또는 Text Console 선택
콘솔에서 IP 수정
이 명령은 서버의 라우팅 또는 인터페이스 설정을 바꿔 원격 접속이 끊길 수 있습니다. 콘솔 접근과 현재 라우팅 백업을 확보한 뒤 실행하세요.
# 콘솔로 접속 완료 후 잘못된 설정 수정
ip addr show eth0 # 현재 상태 확인
# 잘못된 IP 제거 후 올바른 IP 추가
sudo ip addr del 192.168.2.200/24 dev eth0
sudo ip addr add 192.168.1.200/24 dev eth0
# 게이트웨이 수정
sudo ip route del default
sudo ip route add default via 192.168.1.1 dev eth0
# 즉시 연결 테스트
ping -c 2 192.168.1.1
# 올바른 설정이 확인되면 nmcli에도 영구 반영
sudo nmcli con modify "System eth0" \
ipv4.method manual \
ipv4.addresses 192.168.1.200/24 \
ipv4.gateway 192.168.1.1
sudo nmcli con up "System eth0"
예방 방법
# 1. 설정 전 반드시 기존 정보 기록
ip addr show > /tmp/network-backup-$(date +%Y%m%d).txt
ip route show >> /tmp/network-backup-$(date +%Y%m%d).txt
# 2. 적용 전 설정값 이중 확인
nmcli con show "System eth0" | grep ipv4
# 3. 가능하면 tmux에서 작업
# → 연결 끊겨도 서버에서 작업이 이어짐
# 4. 테스트 환경에서 먼저 검증 후 프로덕션 적용
상황
새 서버에서 고정 IP를 설정하려고 연결 프로파일을 만들었는데 적용이 안 됩니다.
sudo nmcli con add \
type ethernet \
con-name "static-ip" \
ifname eth0 \
ipv4.method manual \
ipv4.addresses 10.0.1.100/24 \
ipv4.gateway 10.0.1.1
sudo nmcli con up "static-ip"
# Error: Connection 'static-ip' is not available on device eth0 because device is strictly unmanaged.
# 또는
# Error: No suitable device found for this connection (device 'eth0' not found).
원인 분석
# 실제 인터페이스 이름 확인
ip link show
# 출력:
# 1: lo: <LOOPBACK,UP,LOWER_UP>
# 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> ← eth0가 아닌 ens3!
# 또는
nmcli device status
# DEVICE TYPE STATE
# ens3 ethernet disconnected ← eth0 아님
# lo loopback unmanaged
해결 방법
# 잘못 만든 프로파일 삭제
sudo nmcli con delete "static-ip"
# 올바른 인터페이스 이름(ens3)으로 다시 생성
sudo nmcli con add \
type ethernet \
con-name "static-ip" \
ifname ens3 \ # ← eth0 → ens3로 수정
ipv4.method manual \
ipv4.addresses 10.0.1.100/24 \
ipv4.gateway 10.0.1.1 \
ipv4.dns "8.8.8.8"
sudo nmcli con up "static-ip"
# Connection successfully activated
추가 사례: NetworkManager가 인터페이스를 관리하지 않는 경우
이 명령은 실행 중인 서비스 상태를 바꿔 순간적인 중단이나 설정 반영 실패를 만들 수 있습니다. 운영 트래픽 영향과 재시작 후 확인 명령을 먼저 준비하세요.
nmcli device status
# DEVICE TYPE STATE CONNECTION
# eth0 ethernet unmanaged -- ← unmanaged!
# /etc/NetworkManager/NetworkManager.conf 확인
cat /etc/NetworkManager/NetworkManager.conf
# [main]
# plugins=keyfile
#
# [keyfile]
# unmanaged-devices=interface-name:eth0 ← 명시적으로 제외됨!
# unmanaged-devices 설정 제거 후 NetworkManager 재시작
sudo sed -i '/unmanaged-devices/d' /etc/NetworkManager/NetworkManager.conf
sudo systemctl restart NetworkManager
nmcli device status
# DEVICE TYPE STATE CONNECTION
# eth0 ethernet disconnected -- ← 이제 관리 가능
실제 업무에서 고정 IP 설정이 필요한 상황
서버 엔지니어로 일하다 보면 고정 IP 설정이 필요한 상황이 자주 발생합니다.
신규 서버 랙 입고 시
데이터센터에 새 서버가 들어오면 IP 설정이 첫 번째 작업입니다.
신규 서버 설정 절차:
1. 네트워크팀으로부터 IP 할당 요청서 수령
- 서버 IP: 10.100.5.50/24
- 게이트웨이: 10.100.5.1
- DNS: 10.100.1.10, 10.100.1.11
- VLAN: 100 (서비스망)
2. 서버 콘솔(iDRAC) 또는 KVM으로 접속
3. nmcli로 고정 IP 설정
4. 네트워크팀에 개통 확인 요청
(ping, 게이트웨이 통신 확인)
서비스 이전(Migration) 시
기존 서버의 IP를 신규 서버로 이관해야 할 때:
# 기존 서버에서 IP 제거 (서비스 중단 시점)
sudo nmcli con modify "prod-eth0" ipv4.addresses 10.100.5.51/24 # 임시 IP로 변경
sudo nmcli con up "prod-eth0"
# 신규 서버에 서비스 IP 설정
sudo nmcli con modify "prod-eth0" ipv4.addresses 10.100.5.50/24 # 기존 서비스 IP
sudo nmcli con up "prod-eth0"
# DNS/로드밸런서 업데이트
# ARP 테이블 갱신 (네트워크 장비에 새 MAC 알림)
sudo arping -A -I eth0 10.100.5.50 -c 3
고가용성(HA) 환경의 VIP 관리
Keepalived를 사용하는 Active-Standby 구성에서는 VIP(Virtual IP)가 자동으로 이동합니다. 수동으로 개입해야 할 때:
# VIP 강제 추가 (Keepalived 우회, 긴급 복구 시)
sudo ip addr add 10.100.5.100/24 dev eth0 label eth0:vip
# 확인
ip addr show eth0
# inet 10.100.5.50/24 scope global eth0
# inet 10.100.5.100/24 scope global secondary eth0:vip
# Keepalived 정상화 후 VIP 제거
sudo ip addr del 10.100.5.100/24 dev eth0
자격증 및 커리어 연관성
RHCSA(Red Hat Certified System Administrator) 시험에서 nmcli를 이용한 네트워크 설정이 반드시 출제됩니다. 이 챕터의 내용은 RHCSA 시험의 "네트워크 구성" 섹션과 직접 연결됩니다.
리눅스 서버 엔지니어, 시스템 관리자, 클라우드 엔지니어 면접에서 "고정 IP 설정 방법을 설명하시오"는 기본 질문입니다.
핵심 정리
인터페이스 상태 확인:
ip addr show # 모든 인터페이스 IP 정보
ip route show # 라우팅 테이블
nmcli con show # 연결 프로파일 목록
nmcli device status # 디바이스 상태
고정 IP 설정 순서:
# 1. 현재 설정 확인 및 기록
# 2. 프로파일 수정
sudo nmcli con modify "연결명" ipv4.method manual
sudo nmcli con modify "연결명" ipv4.addresses IP/서브넷
sudo nmcli con modify "연결명" ipv4.gateway 게이트웨이
sudo nmcli con modify "연결명" ipv4.dns "DNS1,DNS2"
# 3. 적용 (SSH 끊김 주의!)
sudo nmcli con down "연결명" && sudo nmcli con up "연결명"
SSH 끊길 위험이 있을 때: 반드시 iDRAC/iLO/VNC 같은 대체 접속 수단을 확보하고 작업하세요.