Original article: w:NetworkManager
NetworkManager는 libudev와 기타 리눅스 커널 인터페이스 (및 몇 가지 다른 데몬) 꼭대기에 위치하고 네트워크 인터페이스의 구성을 위한 고급 인터페이스를 제공하는 데몬(daemon)입니다.
Rationale
NetworkManager는 컴퓨터 네트워크(computer networks)의 사용을 단순화하는 것을 목표로 하는 소프트웨어 유틸리티입니다. NetworkManager는 리눅스 커널-기반 및 기타 유닉스-계열 운영 시스템(operating systems)에서 사용할 수 있습니다.
Installation
데비안 저장소에서 설치할 수 있습니다:
- sudo apt install network-manager
Configurations
대부분의 배포판에서 기본 네트워크 관리자로서 설치되지만, 최근 우분투를 비롯해서 몇몇 배포판이 netplan으로 변경하려는 시도가 있습니다.
어쨌든, 생각처럼 동작하지 않는 경우도 있기 때문에, 이것을 설정하는 방법을 기억해 둘 필요가 있습니다.
보통, 시스템에 설치된 디바이스를 자동으로 찾아서 설정을 만들기 때문에, 2개의 파일 정도를 확인할 필요가 있습니다.
먼저, /etc/network/interfaces를 확인하십시오.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
이때, interfaces.d 디렉토리 아래에 수동으로 설치할 인터페이스의 정보를 기록할 수도 있습니다. 예를 들어,
auto enp1s0
allow-hotplug enp1s0
iface enp1s0 inet dhcp
이들 디바이스 목록은 아래에서 확인할 수 있습니다:
- cat /proc/net/dev
- ls /sys/class/net
다음으로, /etc/NetworkManager/NetworkManager.conf를 확인하십시오.
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=true
여기서, managed=false로 되어 있으면, 자동으로 디바이스를 만들지 않기 때문에, 위와 같이 수동으로 인터페이스 설정 파일을 만들어야 합니다.
How it works
컴퓨터를 서로 연결하기 위해, 다양한 통신 프로토콜이 개발되어 왔으며, 예를 들어 IEEE 802.3 (이더넷), IEEE 802.11 ("무선"), IEEE 802.15.1 (블루투스), PPPoE, PPPoA 등이 있습니다. 참여하는 각 컴퓨터는 적절한 하드웨어, 예를 들어, 네트워크 카드 또는 무선 네트워크 카드를 가져야 하고, 이 하드웨어는 연결을 설정할 수 있도록 적절히 구성되어야 합니다.
모놀리식 커널의 경우에서, 모든 장치 드라이버가 그것의 일부입니다. 하드웨어는 하드웨어를 구성하기 위해 구성 유틸리티에 의한 장치 드라이버를 통해 접근 (및 구성)되고, 웹 브라우저/SSH/NTP-클라이언트/등과 같은 프로그램을 통해 네트워크 패킷을 송수신합니다.
Configuration of network interfaces without NetworkManager
리눅스와 모든 유닉스-계열 운영 시스템에서, 유틸리티 ifconfig와 더 최신 ip (iproute2-묶음에서 제공)는 IEEE 802.3 및 IEEE 802.11 하드웨어를 구성하기 위해 사용됩니다. 이들 유틸리티는 커널을 직접 구성하고 그 구성은 즉시 적용됩니다. 부팅 후, 사용자는 이를 다시 구성해야 합니다.
매 부팅 후 같은 정적 구성을 적용하기 위해, PID1-프로그램이 사용됩니다: System V init은 쉘 스크립트와 바이너리 프로그램을 실행하고, systemd는 자체 conf-파일을 구문 분석합니다 (그리고 프로그램을 실행합니다). 네트워크 인터페이스에 대한 부팅 구성은 데비안 리눅스 배포판과 그 파생 배포판에 대해 /etc/network/interfaces에 저장되고, 페도라와 그 파생 배포판에 대해 /etc/sysconfig/network-scripts/에 ifcfg 파일이 저장되고, DNS-서버에 대해 /etc/resolv.conf에 저장됩니다. /etc/network/interfaces 또는 /etc/sysconfig/network-scripts/ifcfg-*는 사용될 정적 IP-주소나 dhclient를 정의할 수 있고, 모든 종류의 VPN도 마찬가지로 여기에서 구성될 수 있습니다.
구성을 변경해야 하는 경우에서, DHCP-프로토콜은 사용자가 알아차리지 못한 채 자동으로 변경 작업을 수행합니다.
Configuration of network interfaces with NetworkManager
- NetworkManager는 dbus를 통해 접근할 수 있습니다.
- 구성은 /etc/NetworkManager/NetworkManager.conf에 저장됩니다.
그러나, 물리적으로 큰 서버에서 사용자의 재량에 따라 플러그를 꽂거나 뽑을 수 있는 (또는 WiFi 핫스팟에서 WiFi 핫스팟으로 옮길 수 있는) 더욱 휴대성이 뛰어난 호스트로 전환함에 따라, 동적 구성 (즉, 정적 구성 파일에 저장되는 것이 아니라 호스트 외부에서 가져와 부팅 후에 잠재적으로 변경)이 더 널리 퍼진 구성이 되었습니다. Bootp는 이를 위해 사용된 초기 프로토콜이었고, 오늘날까지도 그 후손인 DHCP가 여전히 매우 공통적입니다. 많은 유닉스-계열 시스템에는 이 동적 구성을 처리하기 위해 dhclient라는 프로그램이 포함되어 있습니다. 상대적으로 정적이거나 간단한 동적 구성이 주어졌을 때, dhclient에 의해 수정된 정적 구성이 잘 작동합니다. 어쨌든, 네트워크와 그 토폴로지가 더 복잡해짐에 따라, 모든 네트워크 구성 정보에 대한 중앙 관리자가 더욱 필수적이 되었습니다.
Software architecture
NetworkManager는 두 가지 구성 요소를 가집니다:
- NetworkManager 데몬, 연결을 관리하고 네트워크 변경을 보고하는 실제 소프트웨어
- GNOME Shell, GNOME Panel, KDE Plasma Workspaces, Cinnamon, 등과 같은 다양한 그래픽 데스크톱 환경을 위한 여러 가지 그래픽 프런트-엔드
두 구성 요소 모두 개발자에 의해 합리적으로 이식-가능하도록 의도되었고, 애플릿은 GNOME, KDE Plasma Workspaces, Enlightenment (software) and Xfce를 포함하여 Freedesktop.org 시스템 트레이 프로토콜을 구현하는 데스크톱 환경에서 사용할 수 있습니다. 구성 요소가 D-Bus를 통해 통신하므로, 응용 프로그램은 "링크-인식"으로 작성되거나, 제공된 애플릿을 완전히 대체되도록 작성될 수 있습니다. 한 가지 예는 수저 리눅스에 대해 Novell에 의해 개발된 NetworkManager로의 KDE 프런트-엔드, KNetworkManager입니다.
Graphical front-ends and command line interfaces
nm-applet: nm-applet은 NetworkManager에 대한 그놈 애플릿입니다.
nmcli: nmcli는 2010년에 추가된 NetworkManager의 내장된 명령-줄 인터페이스입니다. nmcli는 NetworkManager의 현재 상태를 쉽게 표시하고, 연결과 장치를 관리하고, 연결을 모니터링하는 것을 허용합니다.
nmtui: nmtui는 내장된 텍스트-기반 사용자 인터페이스입니다. nmtui는 사용자에게 연결 추가/편집, 연결 활성화, 및 시스템의 호스트 이름 설정만을 허용하는 nmcli에 비해 상대적으로 기본적입니다.
cnetworkmanager: NetworkManager를 위한 cnetworkmanager 명령-줄 인터페이스입니다.
Mobile broadband configuration assistant
Antti Kaijanmäki는 2008년 4월 NetworkManager에 대해 모바일 브로드밴드 구성 어시스턴트의 개발을 발표했습니다; 그것은 NetworkManager 버전 0.7.0에서 사용할 수 있게 되었습니다. 패키지 mobile-broadband-provider-info와 함께 연결이 쉽게 구성됩니다.
History
Red Hat은 2004년에 리눅스 사용자에게 최신 네트워킹 요구 사항, 특히 무선 네트워킹을 보다 쉽게 처리할 수 있도록 하는 것을 목표로 NetworkManager 프로젝트를 시작했습니다. NetworkManager는 네트워크 선택에 기회주의적 접근 방식을 취하여, 중단이 발생하거나 사용자가 무선 네트워크 사이에 로밍할 때 최상의 사용 가능한 연결을 사용하려고 시도합니다. 그것은 사용자가 연결한 적이 없는 SSID를 갖는 무선 네트워크에 걸쳐 선호되는 "알려진" 무선 네트워크에 걸쳐 이더넷 연결을 선호합니다. 사용자에게 필요에 따라 WEP 또는 WPA 키를 입력하라는 메시지가 표시됩니다.
NetworkManager 프로젝트는 D-Bus와 HAL을 광범위하게 활용한 최초의 주요 리눅스 데스크톱 구성 요소 중 하나였습니다. 2009년 6월 이후로, 어쨌든, NetworkManager는 더 이상 HAL에 의존하지 않고, 0.9.10 (약 2014년) 이후로, 루트 작업을 위해 D-Bus 데몬을 실행할 필요가 없습니다.
References
- https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/main/CONTRIBUTING.md?ref_type=heads#legal
- Pennington, Havoc. "System Tray Protocol Specification". Standards.freedesktop.org. Retrieved 2012-02-04.
- "Initial pieces of nmcli, gitweb". cgit.freedesktop.org. Retrieved 2015-05-28.
- "Network Configuration Using a Text User Interface (nmtui) - Red Hat Customer Portal". Red Hat. Archived from the original on 2017-11-16. Retrieved 2017-11-16.
- "cnetworkmanager - Command Line Interface for NetworkManager". Vidner.net. Archived from the original on 2011-07-24. Retrieved 2012-02-04.
- "Announce on networkmanager-list". Mail.gnome.org. 2008-04-10. Retrieved 2012-02-04.
- "We'll Build A Dream House Of Net". Blogs.gnome.org. Retrieved 2015-05-28.
External links
- NetworkManager Homepage
- Service Provider Database
- NetworkManager in freedesktop.org
- NetworkManager status on the freebsd-gnome mailing list
- Original NetworkManager page at redhat.com via WaybackMachine
- Announcement of the first public release of NetworkManager
- How to use a WiFi interface with NetworkManager