NetworkManager, networkd, netplan, ifupdown2 및 iproute2는 정확히 어떻게 상호 작용합니까?

NetworkManager, networkd, netplan, ifupdown2 및 iproute2는 정확히 어떻게 상호 작용합니까?

저는 Kubuntu 18.04 워크스테이션에서 Linux 네트워킹을 배우고 있는데 두 가지가 모두 NetworkManager실행되고 있습니다 networkd-dispatcher.

oleg@eclectic:~$ sudo ps -ef | grep -i net
root        56     2  0 Oct11 ?        00:00:00 [netns]
root      1097     1  0 Oct11 ?        00:00:02 /usr/sbin/NetworkManager --no-daemon
root      1098     1  0 Oct11 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1250     1  0 Oct11 ?        00:00:02 /usr/sbin/inetd
root      1593  1097  0 Oct11 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper...

NetworkManager다음을 통해 "모든 것"을 처리하도록 구성된 것 같습니다 netplan.

oleg@eclectic:~$ cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

나는 그것이 설치되지 않았다면 netplan모든 것이 그것에 전달 될 것이라고 믿습니다.networkdNetworkManager

또한 많은 파일이 있는데 /etc/network/무엇을 처리하는지 잘 모르겠습니다. 많은 패키지가 이 디렉토리를 사용하는 것 같습니다:

oleg@eclectic:~$ dpkg -S /etc/network
avahi-daemon, ifupdown2, wpasupplicant, openvpn, postfix, netbase, avahi-autoipd, wireless-tools, clamav-freshclam: /etc/network

NetworkManager인터넷 검색 후 처음에는 과 가 모두 networkd실행 중이라고 생각했지만 netplan생성된 구성은 실제로 하나만 수행하는 것과 같습니다. 그러나 나는 이것을 검증하는 방법, 작업 체인을 파악하는 방법, dummy0에 대한 나의 사악한 계획에 맞게 구성하는 방법을 모릅니다.

질문:NetworkManager, networkd 및 netplan은 정확히 어떻게 함께 작동합니까? 즉, 컴퓨터가 부팅될 때 어떤 프로세스가 어떤 프로세스에 무엇을 넘겨주나요? net-tools, ifupdown2, 및 디렉토리 iproute2의 도구는 /etc/network/이 모든 것에 어떻게 적합합니까? 마지막으로 이 문제를 직접 해결하고 명령줄을 사용하여 자세한 내용을 알아보려면 어떻게 해야 합니까?

고쳐 쓰다:나는 높은 수준의 개요를 찾고 있지 않습니다. 대신 이러한 구성 요소가 커널 수준이나 이와 유사한 수준에서 어떻게 상호 작용하고, 충돌하거나, 충돌을 방지하는지 알고 싶습니다.

답변1

systemd-networkd활성화되면 구성을 따르세요./etc/systemd/network

대신 NetworkManager유선 연결이 발견되면 유선 연결에 연결을 시도하는 등 일부 자동 규칙을 따릅니다.

둘 다 systemd서비스로 활성화 및 비활성화되며 systemd는 udev를 사용하여 네트워크 어댑터용 장치 파일을 생성합니다. 일반적으로 두 가지를 동시에 활성화하면 안 되지만, 그렇게 하는 경우 구성이 충돌하지 않도록 주의해야 합니다.

netplan네트워크 관리자 중 하나가 시작되기 전에 자체 구성을 기반으로 두 네트워크 관리자에 대한 구성을 만듭니다. 이러한 방식으로 netplan은 실제로 구성 추상화이며 systemd-networkd를 사용하는지 NetworkManager를 사용하는지 여부는 구성의 일부입니다.

iproute2명령줄에서 네트워크 인터페이스를 구성하기 위한 툴킷입니다. 여기에는 네트워크 관리자 및 이전 ifconfig와 유사한 링크 구성이 포함됩니다. 대신 /etc/network/ net-toolsinterfaces 의 네트워크 구성을 사용하여 인터페이스를 구성 및 구성 해제하십시오 ipupdown.ifupdown2

ifupdown또는 다른 버전을 사용하여 네트워크를 관리할 수 있지만 자동은 아니지만 부팅 시 systemd 서비스를 사용하여 시작할 수 있습니다.

ifupdown2systemd네트워크 인터페이스와 유사한 종속성 그래프를 사용합니다 . 또한 다음과 같은 다른 도구에 대한 추상화 역할을 합니다.iproute2

답변2

귀하의 질문 전체에 답변을 드리지는 않겠지
만, 이러한 시스템이 어떻게 서로 조화를 이루는지 이해하는 데 도움이 되는 몇 가지 사항을 찾았습니다.
이것이 나를 혼란스럽게 하기 때문에 이것이 누군가에게 도움이 되기를 바랍니다.


1 - 이전 네트워크 interfaces구성 파일, 해당 ifup& ifdown명령:

이것/etc/network/interfaces네트워크 구성 파일은 꽤 오래된 것 같지만 여전히 ifup, ifdown및 에서 사용됩니다 ifquery.

이는 네트워크 "인터페이스"(MAC 기반 링크) 및 "연결"(IP 기반 연결)을 열고 닫는 오래된 방법인 것으로 보입니다.

man 8 ifup설명하다:


설명IFUP그리고다운된 경우파일의 인터페이스 정의에 따라 네트워크 인터페이스를 구성(또는 개별적으로 구성 해제)하는 데 명령을 사용할 수 있습니다. /etc/네트워크/인터페이스.

이것중요한의미는 다음과 같습니다.

ifup/ifdown 에 인터페이스가 정의되어 있지 않으면 /etc/network/interfaces관리되지 않습니다.


2 - ifconfig이전 명령은 어떻습니까?

이전 네트워크 패키지 이름은 다음과 같습니다.net-toolsDebian에서는 더 이상 사용되지 않는 , , arp, ifconfig, ipmaddr, iptunnel, iwconfig및 명령 nameif을 포함합니다 .netstatroutevconfig

이제 이름이 지정된 패키지를 사용하고 싶습니다.iproute2대신 최신 ip, iw및 명령 ss이 포함됩니다 ifrename.


3 - 이 명령으로 인터페이스를 열거나 닫을 수 있다면 and를 ip사용하는 대신 이 명령을 사용하는 것이 어떨까요 ?ifupifdown

패키지 또는 Python 재작성을 통해 ifup/down수행 하는 작업은 네트워크 변경 전후에 레거시 스크립트를 실행하는 작업이 아닙니다. 하지만 다음 내용을 참고하시기 바랍니다 .ifupdownifupdown2ipman ifup

노트

이 프로그램은 네트워크 인터페이스를 직접 구성하지 않으며 다음과 같은 하위 수준 유틸리티를 실행합니다.아이피더러운 일을 하세요.

당신은 또한 볼 수 있습니다
인터페이스(5), IP(8), ifconfig(8).

따라서 ifup/ifdown은 더 이상 사용되지 않는 백엔드 사용에서 최신 패키지에서 제공하는 백엔드 ifconfig사용 으로 업그레이드된 것 같습니다 .ipiproute2


4 - NetworkManager는 어떻습니까? (2004년)

~에서man 5 NetworkManager,

[위 아래라면]

이 섹션에는 ifupdown 관련 옵션이 포함되어 있으므로 ifupdown 플러그인을 사용할 때만 유효합니다.

관리하다

true로 설정하면 /etc/network/interfaces에 나열된 인터페이스가 NetworkManager에 의해 관리됩니다. false로 설정하면 NetworkManager는 /etc/network/interfaces에 나열된 모든 인터페이스를 무시합니다. NetworkManager는 기본 경로를 제어하므로 해당 인터페이스가 무시되므로 NetworkManager는 기본 경로를 다른 인터페이스에 할당할 수 있습니다.

따라서 NetworkManager가 스크립트도 실행할 수 있는지 여부는 확실하지 않지만 , NetworkManager가 아직 사용 중인 레거시 인터페이스(다시 "MAC 기반 하드웨어 링크") ifup/ifdown에서 벗어날 수 있다는 점은 확실합니다 . ifup/ifdown즉, ifup은 하드웨어 연결이나 NetworkManager 또는 다른 것을 사용하지만 ifup과 NetworkManager를 모두 사용하지는 않습니다.


5 - 시스템 네트워크(2010년)

NetworkManager보다 최신 버전으로 유선 서버에서 사용되며 GUI 환경을 사용할 수 없는 경우에 사용됩니다.

그러나 무선 연결의 경우 systemd-networkd를 수동으로 구성하는 것이 더 어렵기 때문에 NetworkManager가 최선의 선택인 것 같습니다.

그것은 man 8 systemd-networkd말한다,

systemd-networkd는 .network 파일에서 찾은 모든 링크의 네트워크 주소와 경로를 관리합니다.적절한 [Match] 섹션이 있는 경우 systemd.network(5)(실제 네트워크 장치)를 참조하세요. 이러한 링크의 경우 장치를 부팅할 때 기존 네트워크 주소와 경로를 새로 고칩니다. .network 파일 중 하나와 일치하지 않는 링크는 무시됩니다. Unmanagement=yes 옵션을 사용하여 링크를 무시하도록 systemd-networkd에 명시적으로 지시할 수도 있습니다. systemd.network(5)를 참조하세요.

이 문제를 해결할 수 있기를 바랍니다. 그렇지 않은 경우 알려 주시기 바랍니다. 감사해요.

답변3

이것은 매우 상세한 질문입니다. 최선을 다해 분석하겠습니다.

Netplan: 다양한 백엔드에 대한 YAML 네트워크 구성 추상화입니다. NetworkManager 또는 네트워크에 대한 구성 파일을 생성할 수 있습니다. 이를 통합 인터페이스로 사용하여 원하는 네트워크 구성을 설명할 수 있습니다. 그런 다음 Netplan은 시스템 요구 사항에 따라 NetworkManager 또는 Networkd를 백엔드로 사용하여 이 구성을 적용합니다. 사용되는 특정 백엔드는 Netplan 구성 파일의 renderer: 속성에 의해 제어됩니다.

NetworkManager: 가능한 경우 네트워크 장치와 연결을 활성 상태로 유지하도록 설계된 동적 네트워크 제어 및 구성 시스템입니다. NetworkManager는 주로 Kubuntu와 같은 데스크탑 시스템을 대상으로 합니다. 무선 네트워크, 유선 네트워크, VPN 등 일반 사용자 워크스테이션의 다양한 네트워크 설정을 관리하는 데 적합합니다.

networkd: 네트워크를 관리하는 시스템 서비스입니다. 네트워크 장치가 발생하면 이를 감지하고 구성하며 필요에 따라 네트워크 구성을 동적으로 생성할 수 있습니다. Networkd는 일반적으로 단순성과 자동화가 선호되는 서버 환경에서 사용됩니다.

networkd-dispatcher: systemd-networkd 연결 상태 변경을 위한 디스패처 서비스입니다. NetworkManager의 Dispatcher.d와 기능적으로 동일합니다. 네트워크 장치의 상태(작동, 정지 등)가 변경되면 networkd-dispatcher는 해당 구성 디렉터리에 있는 모든 스크립트를 실행하여 네트워크 구성 변경이 발생할 때 이에 대응할 수 있도록 합니다.

/etc/network/: 이 디렉터리의 파일은 Debian 기반 시스템의 네트워킹을 위한 일반적인 구성 파일이며 ifup 및 ifdown 명령에서 사용됩니다. 이러한 파일은 NetworkManager를 실행하는 시스템에서 사용할 수 있지만 일반적으로 NetworkManager가 네트워크 구성 자체를 관리하고 이러한 파일을 무시하기 때문에 NetworkManager를 실행하는 시스템에서는 사용할 수 없습니다.

이러한 구성 요소가 어떻게 함께 작동하는지 더 잘 이해하려면 시작 프로세스를 살펴봐야 합니다.

시스템이 시작되면 Ubuntu의 초기화 시스템인 systemd에 의해 네트워크 서비스가 시작됩니다. Netplan은 YAML 구성 파일을 읽고 사용하도록 구성된 렌더러에 따라 NetworkManager 또는 Networkd에 대한 구성 파일을 생성합니다. NetworkManager 또는 networkd(해당하는 경우)는 Netplan에서 생성된 구성 파일을 시작하고 읽습니다. 네트워크 구성이 변경되면 NetworkManager 또는 networkd가 적절하게 응답하고 networkd-dispatcher는 변경 사항에 응답하도록 설정된 모든 스크립트를 트리거합니다. 어떤 도구가 어떤 인터페이스를 관리하는지 결정하는 좋은 출발점은 systemd-networkd에서 볼 수 있는 네트워크 링크 상태를 표시하는 systemd에서 제공하는 명령인 networkctl의 출력을 살펴보는 것입니다.

언급한 도구인 net-tools(더 이상 사용되지 않음), iproute2 및 ifupdown2는 Linux에서 네트워크 인터페이스를 조작하고 구성하기 위한 유틸리티입니다. Linux 커널과 직접 상호 작용하여 네트워크 인터페이스, 라우팅 등을 관리합니다. NetworkManager 및 네트워크 연결과 공존할 수 있지만 NetworkManager 또는 네트워크 연결로 관리되는 시스템에서는 구성보다 진단에 더 많이 사용됩니다.

관련 정보