Debian 해결 방법 838871: 부팅 프로세스를 차단하지 않고 dhcp 네트워크 구성

Debian 해결 방법 838871: 부팅 프로세스를 차단하지 않고 dhcp 네트워크 구성

해결책이 있나요?데비안 버그 #838871?

질문: 다음 속성을 사용하여 Debian에서 네트워크 구성을 갖고 싶습니다:

  • 케이블 연결 시 자동 ifup 네트워크 인터페이스
  • 연결 케이블 없이 오랫동안 컴퓨터를 켜도 지연이 없습니다.
  • 초기화 시스템을 전환하지 않음

이를 수행하는 표준 방법은 다음 코드 조각입니다 /etc/network/interfaces.

allow-hotplug eth0
iface eth0 inet dhcp

그러나 이로 인해 연결된 버그 보고서에 설명된 문제가 발생합니다. 네트워크 케이블이 연결되어 있지 않으면 다음 메시지와 함께 부팅 프로세스가 1분 이상 차단됩니다.

configuring network interfaces... ifup: waiting for lock on /run/network/ifstate.eth0

주어진 솔루션이 문제allow-hotplug다음과 같이 변경되는 것 같습니다 auto.

auto eth0
iface eth0 inet dhcp

이렇게 하면 부팅 차단 메시지가 효과적으로 사라지지만 이제 tty1이 로그인 프롬프트를 표시하기 전에 시스템이 차단됩니다. 이번에는 dhclient가 연결되지 않은 eth0에서 dhcp 응답을 얻으려고 시도하면서 차단되고 여러 번의 시도가 시간 초과될 때까지 기다립니다. 로그인 프롬프트는 dhclient가 시간 초과된 후에만 나타납니다.

그래픽 DE를 사용하는 사용자에게는 tty1에 로그인할 필요가 없지만 DE가 부팅되고 dhclient 메시지가 표시되지 않으므로 이는 문제가 되지 않을 수 있습니다.

또 다른 해결 방법은 Network Manager를 사용하는 것입니다 network-manager. 이상적으로는 Network Manager를 사용하고 싶지 않지만 최후의 수단으로 사용해 보았습니다. 그러나 데비안 버스터에서는 네트워크 관리자의 종속성 체인이 sysvinit-core내 초기화 시스템과 충돌합니다.

내가 생각한 마지막 대안은 인터페이스(5)에서 eth0을 구성하지 않는 것이었습니다. 이렇게 하면 모든 부팅 블록이 사라지지만 ifup eth0이더넷 케이블을 연결한 후 수동으로 부팅 해야 합니다 .

더 좋은 아이디어가 있나요?

업데이트: @sourcejedi의 인용문을 해결하기 위해 Debian 문서에서 "allow-hotplug"는 "커널이 인터페이스에서 핫플러그 이벤트를 감지하면 인터페이스 시작"으로 지정됩니다.데비안 네트워크.관련 질문:/etc/network/interfaces 구문에 대한 자세한 설명은 무엇입니까?그리고인터페이스에 대한 핫 플러그 ​​이벤트란 무엇입니까?

답변1

이전에는 network-manager"케이블을 연결하면 자동으로 네트워크 인터페이스를 연결하는" 방법이 잘 알려져 있었습니다. (원저자 참고 사항: -P). 데비안에서는 여전히 사용 가능합니다. 나는 최근에 이것에 대한 경험이 없습니다.ifupifplugdifplugd

auto eth0먼저 또는 줄을 제거합니다 . 여전히 라인이 필요합니다. (이 줄은 네트워크 인터페이스 이름과 ipv6 지원 추가 여부 등에 따라 달라집니다.)allow hotplug eth0/etc/network/interfacesiface eth0 inet dhcp

ifplugd이 인터페이스가 표시되도록 구성하려면 네트워크 인터페이스의 이름을 포함하도록 /etc/default/ifplugd설정을 편집하십시오 . INTERFACES=또는 value 를 사용할 수 있음을 제안합니다 auto. auto최근 시스템에서 얼마나 잘 작동하는지 모르겠습니다 :-).

https://manpages.debian.org/buster/ifplugd/ifplugd.conf.5.en.html


이 기능은 다음에서 제공되지 않습니다 allow-hotplug.

링크 상태 확인은 항상 존재하는 것은 아니며 시작 시에만 수행됩니다.케이블을 연결하지 않은 상태에서 부팅한 다음 나중에 연결하는 것은 지원하지 않습니다.--메시지 #20

이에 반대되는 출처는 잘못되었습니다. 이 기능을 원하면 "netlink" 이벤트를 기다리는 데몬을 실행해야 합니다. [*] 데비안 패키지에는 ifupdown데몬이 포함되어 있지 않습니다. allow-hotplug필요한 netlink 이벤트를 읽지 않는 udev 데몬에 의존합니다.

udev 데몬은 udev "hotplug" 이벤트("uevent")만 읽습니다. 이더넷 장치가 링크 상태 변경을 감지하면 "uevent"가 없습니다. 를 사용하여 이를 확인할 수 있습니다 udevadm monitor.

Linux 커널 개발자는 의도적으로 이러한 목적으로 "uevent"를 제공하지 않기로 결정했습니다. 바라보다:Re: 문: netdev: 네트워크 이벤트에서 kobject uevent를 생성하는 중입니다..


[*] Pedant: ifplugd링크 상태를 주기적으로 폴링하여 기술적으로 작동합니다. 따라서 반드시 "netlink" 이벤트에 의존할 필요는 없습니다. 이 차이점을 지적했는데 netplug, 여기서하다"netlink" 이벤트를 사용하세요. netplug와 동일한 기능이 모두 포함되어 있지 않습니다 ifplugd.

답변2

데비안에는 언급한 NetworkManager 문제의 영향을 받지 않는 ConnMan 패키지도 있습니다. 확인하시면 혜택을 받으실 수 있습니다일반적인 문제"팁과 요령"그러나 Arch Wiki 페이지의 섹션입니다.

귀하와 다른 시스템에서는 policykit-1가능한 경우 업스트림 ConnMan을 사용하여 권한이 없는 사용자에게 선택적으로 액세스 권한을 부여할 수 있습니다. 그러나 Debian ConnMan 패키지는 정책 패키지 라이브러리에 동적으로 연결되지도 않습니다. 그래서 권한이 없는 사용자의 액세스를 제어하는 ​​방법을 잘 모르겠습니다.

만약 너라면했다NetworkManager를 사용하고 싶다면 데비안 패키지가 데몬을 강제로 설치하지 않고도 문제를 해결할 수 있어야 한다고 생각합니다. policykit-1따라서 libpam-systemd 등이 있습니다. 인터페이스를 제어하는 ​​데 사용하면 됩니다 sudo nmcli. 예를 들어, 다른 패키지는 udisks이에 의존하지 않고 policykit-1단지 권장할 뿐입니다. 이것은 매우 일반적인 소망은 아닐 수도 있지만, 다른 사람들이 원한다면 데비안에 "위시리스트" 버그를 제출할 수도 있습니다.

관련 정보