데비안 리눅스에서 IP 설정을 변경하는 방법은 하나가 아니다. 전통적인 /etc/network/interfaces 기반의 ifupdown 방식부터, 현대적인 서버 환경에서 사용되는 systemd-networkd, 그리고 도구 중심의 NetworkManager까지 여러 관리 방식이 공존하고 있다. 세 가지 IP 설정 방식을 정리하고, 현재 시스템이 어떤 네트워크 관리자를 사용하고 있는지 직접 확인하는 절차를 함께 설명한다.
데비안 리눅스에서 IP를 변경하는 가장 정석적인 방법은 네트워크 설정 파일을 직접 수정하는 것이다. 오랫동안 데비안 서버 환경에서는 /etc/network 디렉토리의 설정 파일을 nano와 같은 에디터로 열어,
IP 주소·넷마스크·게이트웨이를 직접 입력하는 방식을 사용해 왔다.
하지만 시간이 지남에 따라 systemd 기반 환경이 표준이 되었고, GUI와 자동화를 중시하는 다양한 네트워크 관리 도구들이 등장했다. 또한 가상 머신이나 클라우드 환경에서는 부팅 시 네트워크 설정을 자동으로 덮어쓰는 방식도 빈번하게 사용된다.
그 결과, 데비안에서 IP를 설정하는 방법은 더 이상 하나가 아니게 되었고, 초보자 입장에서는 IP를 변경하기 위해 무엇을 건드려야 하는지 혼란스러운 상황이 생긴다. 인터넷에서 본 방법대로 IP를 변경했는데 적용되지 않거나, 분명 적용된 것처럼 보였지만 재부팅 후 다시 원래 값으로 돌아간다거나 하는 상황이 생기는 것이다.
본 글에서는 데비안 리눅스 시스템에서 가장 많이 사용되는 세 가지 IP 설정 방식과, 시스템이 어떤 방식을 사용하고 있는지 확인하는 방법을 정리해 본다.
데비안 리눅스 시스템의 IP 변경 방식
ifupdown : /etc/network/interfaces 수정
데비안의 가장 전통적이고 표준적인 방식이다. 이어지는 모든 방식들은 결국 이 /etc/network/interfaces파일을 좀 더 편하고 정확하게 수정하는 도움을 주는 도구들이다.
# 고정 IP 설정 (eth0)
auto eth0
iface eth0 inet static
address 192.168.123.123
netmask 255.255.255.0
gateway 192.168.123.1
# resolvconf 패키지가 있을 때만 작동
dns-nameservers 1.1.1.1 8.8.8.8
# DHCP 설정 (eth1)
auto eth1
iface eth1 inet dhcp
파일을 수정 한 후에는 네트워크를 재시작 해 준다. 보통 systemctl restart networking 명령을 통해 실행하나, 이 경우 가끔 기존 IP가 남은 상태에서 새 IP가 추가되는 경우가 발생할 수 있다. 때문에 본 필자는 아래의 예와 같이 해당 인터페이스를 내렸다가 다시 올려주는 것을 추천한다.
현대적인 서버 환경 : systemd-networkd
systemd-networkd는 현대 리눅스 표준인 systemd 에 통합된 서버 지향 네트워크 관리자다. 전통적인 방식과 달리, 각 인터페이스를 선언적으로 정의하는 방식으로, 클라우드 이미지나 최신 서버 배포판에서는 이 방식이 점점 더 기본 선택지가 되고 있다.
systemd-networkd 역시 파일을 직접 수정하는 방식이다. 다만 수정 대상이 /etc/systemd/network/ 디렉토리 아래의 .network 파일로 바뀌었을 뿐이다. 파일 이름은 보통 우선순위와 인터페이스 이름을 사용한다.
/etc/systemd/network/10-eth0.network /etc/systemd/network/20-eth1.network
#고정 IP 설정 예시 (10-eth0.network) [Match] Name=eth0 [Network] Address=192.168.123.123/24 Gateway=192.168.123.1 DNS=1.1.1.1 DNS=8.8.8.8
#DHCP 설정 예시 (20-eth1.network) [Match] Name=eth1 [Network] DHCP=yes
참고로 systemd-networkd만 켜서는 DNS가 잡히지 않는다. 아래의 명령을 이용해 서비스를 활성화 해 주고 DNS 파일을 링크해 주어야 한다.
sudo systemctl enable --now systemd-networkd systemd-resolved sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf도구 기반 설정: NetworkManager
NetworkManager 패키지는 서버 등의 최소 구성에는 설치되어 있지 않기 때문에 추가적인 설치가 필요하다. 보통 데스크탑 환경이나 IP 주소가 빈번히 변경되는 환경에서 사용되며, 서버의 경우에는 잘 사용하지 않는다. 아래의 명령을 통해 패키지를 설치해 준다.
패키지가 설치되었다면 아래의 명령을 통해 네트워크 설정을 변경해 줄 수 있다.
nmtui
화살표와 엔터를 이용해 설정하려는 네트워크 인터페이스를 선택하고 필요한 정보를 입력해 줄 수 있다.
네트워크 관리자를 알아내는 절차
직접 설치한 시스템이 아니거나, 이미 운영 중인 서버를 인수받은 경우라면 이 시스템이 어떤 방식으로 네트워크를 관리하고 있는지부터 반드시 확인해야 한다. 그렇지 않으면 설정 파일을 아무리 수정해도 적용되지 않거나, 다른 도구에 의해 다시 덮어써질 수 있다.
1단계: NetworkManager 사용 여부 확인
systemctl status NetworkManager상태가 active (running)이라면, 이 시스템은 NetworkManager가 네트워크를 관리하고 있다는 얘기다. 이 경우 nmtui나 nmcli와 같은 도구를 사용해야 하며, 다른 설정 파일을 수정해도 적용되지 않는다.
2단계: systemd-networkd 사용 여부 확인
systemctl status systemd-networkdNetworkManager가 동작하지 않는 상태에서 systemd-networkd 서비스가 활성화되어 있다면, 이 시스템은 /etc/systemd/network/ 아래의 .network 파일을 통해 IP 설정을 관리한다.
3단계: ifupdown 방식 확인
cat /etc/network/interfaces앞선 두 서비스가 모두 비활성화되어 있고, /etc/network/interfaces 파일에 IP 설정 내용이 존재한다면, 이 시스템은 전통적인 ifupdown 방식으로 네트워크를 관리하고 있다.
보조 확인: 실제 네트워크 상태 확인
ip addrip addr 출력에서 인터페이스 옆에 managed라는 표시가 보인다면, 해당 인터페이스는 NetworkManager가 관리 중이라는 의미다.
마무리
IP 설정을 변경하기 전에 해야 할 첫 번째 작업은 설정 파일을 수정하는 것이 아니라, 이 시스템의 네트워크 관리자를 확인하는 것이다. 내가 직접 설치한 시스템일지라도 설치 과정에서 네트워크와 관련된 추가적인 패키지가 설치되어 있을 수 있다. 또한 배포본에 따라서 기본적인 관리 방법이 다를 수 있다. 이 방법을 통해 불필요한 시행착오를 대부분 피할 수 있게 된다.