ifconfig: command not found의 이유! Debian Linux 9에서 ifconfig와 net-tools가 사라진 이유와 대체 명령 ip, eth0가 enp11s0 형태로 바뀐 Predictable Network Interface Names 도입까지 정리합니다.
2017년 어느 날, 수 년 만에 리눅스를 다시 설치할 일이 생겨 Debian 9(stretch)을 설치했다. 그전 마지막 설치가 5.2였으니, 한 6년 만에 설치하는 데비안 리눅스였다. 어찌어찌 설치를 완료하고 네트워크 설정을 변경하기 위해 너무나도 자연스럽게 ifconfig를 입력한 필자는 출력되는 메시지를 보고 당황했다.
# ifconfig -bash: ifconfig: command not found (그딴 명령어는 없어, 공부 더 하고 오셈!)
패키지가 잘못 설치된 줄 알고 재설치를 해봐도 결과는 동일했다. 그제서야 구글에 검색해 보니 이런 문구를 찾을 수 있었다.
The new and recommended alternative for examining a network configuration on Debian Linux is the ip command.
네트워크 설정을 확인하려면 이제ip명령을 사용하시라.
즉, 기존 ifconfig 대신 ip address(또는 ip addr, ip a) 명령어로 네트워크 인터페이스 정보를 확인해야 한다는 뜻이었다.
그 이후 몇 년이 지난 지금까지도 “왜 ifconfig가 없나요?”라는 질문은 여전히 많다. 그래서 이 글에서는 다음 세 가지를 기준으로 내용을 정리해 보려고 한다.
- 현재 리눅스 배포본에서 ifconfig를 기본적으로 사용할 수 있는가?
- Debian에서는 언제부터 net-tools(ifconfig)가 기본 설치에서 제외되었는가?
- 왜 기존의 eth0 같은 이름이 enp11s0 같은 형태로 바뀌었는가?
ifconfig 대신 ip
ifconfig 명령은 net-tools 패키지에 포함된 명령어(프로그램)이다. 이 패키지에는 netstat, route 같이 흔히 알고 있는 ‘전통적인’ 명령어들이 함께 포함되어 있다.
이 net-tools 패키지는 2001년을 전후해 별다른 유지보수가 진행되지 않았다. 반면, 커널 네트워크 기능을 더 잘 지원하고 더 많은 기능을 제공하는 iproute2가 등장하면서, 점차 많은 리눅스 배포판들이 net-tools를 기본 설치 목록에서 제외하기 시작했다.
때문에 기존의 레거시(legacy) 명령들을 사용하기 위해서는 직접 패키지를 추가 설치해 주어야 한다.
sudo apt install net-tools # Debian / Ubuntu sudo yum install net-tools # RHEL 계열 sudo pacman -S net-tools # Arch
언제부터 net-tools가 기본 설치되지 않았나?
Debian의 릴리스 노트를 보면 “어느 버전부터 net-tools가 100% 제거되었다”고 명시한 부분은 없다. 하지만 인터넷 상에 올라온 사람들의 질문글의 빈도와 설치 이미지 구성을 살펴보면, Debian 9(stretch, 2017년)을 기점으로 net-tools가 기본 설치 패키지에서 빠진 것으로 보인다.
즉, Debian 9 이후 버전에서는 net-tools가 기본 설치되지 않는 것이 일반적이며, 필요하다면 사용자가 직접 설치해야 한다. 이는 Debian만의 흐름이 아니라, 대부분의 리눅스 배포판에서 이미 10여 년 전부터 진행돼 온 변화다.
새로운 장치명 : eth0 대신 enp11s0
한편, eth0, wlan0처럼 익숙한 인터페이스 명이 enp11s0 같은 형태로 바뀐 것도 많은 사용자가 당황하는 부분이다.
이는 Predictable Network Interface Names라는 새로운 네트워크 장치명 규칙 때문이며, 하드웨어의 물리적 위치(버스, 슬롯 번호 등)를 기준으로 이름을 부여하는 방식이다.
기존 방식은 부팅 순서나 장치 인식 순서가 달라지는 경우 장치명이 바뀌는 문제가 있었다. 때문에 멀쩡히 동작하던 eth0가 재부팅을 하고 나니 갑자기 eth1이 되면서 서버 네트워크가 중단되어 버리는 경우가 종종 발생했다.
이 문제를 해결하기 위해 장치명이 절대 바뀌지 않도록 버스/슬롯 정보를 기반으로 이름을 구성하게 된 것이다.
- en = Ethernet
- wl = Wireless
- p3 = PCI bus 3
- s0 = 슬롯 0
위의 규칙을 따라 enp11s0을 해석해 보면, PCI 버스 3번 + 슬롯 0에 꼽힌 이더넷 랜카드 라는 의미가 된다.
2009년을 전후해 필요성이 논의되기 시작했고, Fedora 15(2011년)에서 처음 본격적으로 적용을 시작했다. 그 뒤를 이어 주요 배포판들에도 적용되기 시작해, 현재는 거의 대부분의 리눅스 배포판이 이 방식으로 하드웨어의 이름을 사용한다.
마무리
필자가 컴퓨터를 다뤄오면서 어느 순간, 스스로의 지식이 한순간에 뒤처진다는 무력감을 느낀 순간이 몇 번 있었다. 그 중 하나가 이 글을 작성했던 2017년, Debian 9를 설치한 뒤 ifconfig가 실행되지 않아 당황했던 때였다.
기술, 특히 정보통신 분야는 끊임없이 변화한다. 불과 몇 달만 손을 놓아도 흐름을 따라가기 어려워지는 분야다. 익숙했던 것들이 사라져도, 더 강력하고 효율적인 새로운 도구들을 익히는 것을 게을리하면 안 된다. 과거에 하던 대로만 머물면 어느 순간 매몰되어 버리고 결국 쇠퇴하게 된다.