알 수 없는 인터페이스로 인해 시스템 네트워크 서비스가 실패합니다.

알 수 없는 인터페이스로 인해 시스템 네트워크 서비스가 실패합니다.

내 문제는 USB 테더링 및 네트워크 인터페이스와 관련이 있습니다.

을 실행하면 ifconfig -a일반적으로 루프백, WiFi 및 이더넷의 3가지 인터페이스가 표시됩니다. NET에서 각각에 대한 게이트웨이, 넷마스크 및 브로드캐스트를 정의했습니다 /etc/networking/interfaces.

때로는 USB 테더링을 위해 휴대폰을 컴퓨터에 연결하고 실행할 때 ifconfig -a이름이 다른 1개의 인터페이스를 볼 수 있습니다 enp0s20u2. 이 인터페이스는 휴대폰이 연결되어 있고 USB 테더링이 활성화된 경우에만 나타납니다. 해당 인터페이스를 불러오기 위해 다음 줄을 추가했습니다 /etc/networking/interfaces.

# For USB tethering
auto enp0s20u2
iface enp0s20u2 inet dhcp
    address 192.168.42.56
    gateway 192.168.42.1
    netmask 255.255.255.0
    broadcast 192.168.42.255

이렇게 하면 휴대폰을 연결하면 인터페이스가 자동으로 나타나서 구성됩니다.

질문즉, 전화가 연결되어 있지 않으면 systemd 서비스를 시작할 수 없습니다. enp0s20u2대부분의 경우 인터페이스를 알 수 없으므로 systemctl부팅 시나 수동으로 실행할 때 시작할 수 없습니다 systemctl restart networking.

이 인터페이스 구성으로 인해 서비스 시작 실패가 발생하지 않도록 하는 방법이 있습니까?

답변1

지시문을 바꾸면 이 문제가 우아하게 해결됩니다 auto. allow-hotplug인터페이스는 더 이상 ifup -a서비스에 의해 시작되지 않지만, 연결되거나 부팅 시 감지되면 시작됩니다 systemd networking.udev

# For USB tethering
allow-hotplug enp0s20u2
iface enp0s20u2 inet dhcp
    address 192.168.42.56
    gateway 192.168.42.1
    netmask 255.255.255.0
    broadcast 192.168.42.255

에서 man 5 interfaces:

"allow-"로 시작하는 줄은 해당 하위 시스템에서 자동으로 시작해야 하는 인터페이스를 식별합니다. 이는 "allow-hotplug" 줄에 나열된 경우 eth0 또는 eth1만 표시하는 "ifup --allow=hotplug eth0 eth1"과 같은 명령을 사용하여 수행할 수 있습니다. "allow-auto"와 "auto"는 동의어입니다. ("allow-hotplug"라고 표시된 인터페이스는 udev가 이를 감지하면 시작됩니다. 인터페이스가 이미 존재하는 경우 부팅 중에 시작하거나 나중에 USB 네트워크 카드를 연결할 때 시작할 수 있습니다. 참고 이는 연결된 네트워크 케이블을 감지하는 것과 아무 관련이 없습니다).

관련 정보