Netplan/Networkd가 정적 이더넷 인터페이스를 표시하지 않는 이유는 무엇입니까?

Netplan/Networkd가 정적 이더넷 인터페이스를 표시하지 않는 이유는 무엇입니까?

Ubuntu Server 18.04를 실행하는 컴퓨터가 있습니다. 네트워크는 Netplan을 사용하여 구성되었으므로 다음 위치에 이 구성이 있습니다 /etc/netplan/01-netcfg.yaml.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0f0:
      optional: false
      addresses:
        - 10.0.0.1/24    
  wifis:
    wlp2s0:
      optional: true
      dhcp4: yes
      access-points:
        [...]

enp1s0f0(부팅 시 또는 다른 시간에) 켜져 있거나 켜져 있지 않을 수 있는 장치에 연결되어 있습니다. 이 인터페이스에서 DHCP 서버를 실행하고 싶습니다.

문제는 부팅할 때 몇 분 정도 지연이 발생하고 다음 메시지가 표시된다는 것입니다.

A start job is running for Wait for Network to be Configured

결국 시간이 초과되고 부팅이 계속되지만 enp1s0f0구성되거나 실행되지 않습니다. ip link show enp1s0f0다음을 제공합니다:

2: enp1s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 10:dd:b1:ef:65:21 brd ff:ff:ff:ff:ff:ff

나는 의 중요성이 무엇인지 모르지만 NO-CARRIER관련성이 있는 경우 다음의 결과를 보여줍니다 sudo lspci -v.

01:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM57766 Gigabit Ethernet PCIe (rev 01)
    Subsystem: Broadcom Limited NetXtreme BCM57766 Gigabit Ethernet PCIe
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at a0400000 (64-bit, prefetchable) [size=64K]
    Memory at a0410000 (64-bit, prefetchable) [size=64K]
    Capabilities: [48] Power Management version 3
    Capabilities: [50] Vital Product Data
    Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
    Capabilities: [a0] MSI-X: Enable+ Count=6 Masked-
    Capabilities: [ac] Express Endpoint, MSI 00
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [13c] Device Serial Number 00-00-10-dd-b1-ef-65-21
    Capabilities: [150] Power Budgeting <?>
    Capabilities: [160] Virtual Channel
    Capabilities: [1b0] Latency Tolerance Reporting
    Kernel driver in use: tg3
    Kernel modules: tg3

이제 연결된 장치를 켜면 충분히 enp1s0f0나타납니다.

2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 10:dd:b1:ef:65:21 brd ff:ff:ff:ff:ff:ff

하지만 지금은 아무 소용이 없습니다. DHCP 서버는 enp1s0f0부팅할 때 아무 것도 없이 시작할 수 없기 때문에 작동하지 않습니다. 부팅하는 동안 설정 enp1s0f0하고 구성해야 하는데, 이것이 고정 IP 구성의 핵심이라고 생각했습니다. 더 이상한 점은 작동이 중단된 경우에도 항상 IPv6 주소를 가지고 있다는 것입니다.

2: enp1s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 10:dd:b1:ef:65:21 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::12dd:b1ff:feef:6521/64 scope link 
       valid_lft forever preferred_lft forever

Netplan의 디버그 출력을 확인하면 다음이 표시됩니다.

$ sudo netplan --debug apply
** (generate:1555): DEBUG: 20:39:27.253: Processing input file //etc/netplan/01-netcfg.yaml..
** (generate:1555): DEBUG: 20:39:27.254: starting new processing pass
** (generate:1555): DEBUG: 20:39:27.254: wlp2s0: adding wifi AP 'Jeff Winger's Wireless Hairbrush'
** (generate:1555): DEBUG: 20:39:27.254: wlp2s0: setting default backend to 1
** (generate:1555): DEBUG: 20:39:27.254: enp1s0f0: setting default backend to 1
** (generate:1555): DEBUG: 20:39:27.254: Generating output files..
** (generate:1555): DEBUG: 20:39:27.254: wlp2s0: Creating wpa_supplicant configuration file run/netplan/wpa-wlp2s0.conf
** (generate:1555): DEBUG: 20:39:27.254: Creating wpa_supplicant service enablement link /run/systemd/system/multi-user.target.wants/[email protected]
** (generate:1555): DEBUG: 20:39:27.254: NetworkManager: definition wlp2s0 is not for us (backend 1)
** (generate:1555): DEBUG: 20:39:27.254: NetworkManager: definition enp1s0f0 is not for us (backend 1)
DEBUG:netplan generated networkd configuration exists, restarting networkd
DEBUG:no netplan generated NM configuration exists
DEBUG:replug enp1s0f0: unbinding 0000:01:00.0 from /sys/bus/pci/drivers/tg3
DEBUG:replug enp1s0f0: rebinding 0000:01:00.0 to /sys/bus/pci/drivers/tg3
DEBUG:device wlp2s0 operstate is up, not replugging
DEBUG:netplan triggering .link rules for wlp2s0
DEBUG:device lo operstate is unknown, not replugging
DEBUG:netplan triggering .link rules for lo

내 구성에는 다음이 isc-dhcp-server포함됩니다 /etc/default/isc-dhcp-server.

INTERFACESv4="enp1s0f0"

...그리고 /etc/dhcp/dhcpd.conf다음을 포함합니다:

subnet 10.0.0.0 netmask 255.255.255.0 {
...
}

이론적으로 이것은 DHCP를 통해 서비스를 제공해야 합니다 enp1s0f0. 그러나 enp1s0f0이 발생하지 않으므로 DHCP 서버가 시작되지 않습니다.

No subnet declaration for enp1s0f0 (no IPv4 addresses).
** Ignoring requests on enp1s0f0.  If this is not what
   you want, please write a subnet declaration
   in your dhcpd.conf file for the network segment
   to which interface enp1s0f0 is attached. **


Not configured to listen on any interfaces!

이것은 아래의 문제가 아니었습니다 ( 케이블의 다른 쪽 끝에 아무것도 있는지 여부에 관계없이 부팅 중에 왜 나타나지 않는지 ifupdown모르겠습니다 . 이것이 고정 IP를 갖는 요점이라고 생각했습니다). enp1s0f0Netplan에서 작동시킬 수 있나요? 아니면 DHCP 서버가 enp1s0f0작동 중일 때 시작되도록 할 수 있습니까 ?

답변1

다음으로 해결될 버그에 부딪힌 것 같습니다.https://github.com/CanonicalLtd/netplan/pull/34- 현재 장치는 이동통신사가 있는 경우에만 구성되지만 해당 요구 사항은 사라집니다.

그동안 장치를 systemd-networkd직접 구성하여 이 문제를 해결할 수 있습니다. enp1s0f0netplan 구성에서 스탠자를 제거 하고 다음과 같은 (테스트되지 않은) systemd 구성을 추가하십시오 /etc/systemd/network/10-enp1s0f0.network.

[Match]
Name=enp1s0f0

[Link]
RequiredForOnline=no

[Network]
ConfigureWithoutCarrier=true
Address=10.0.0.1/24

핵심은 ConfigureWithoutCarrier제가 끌어오기 요청에서 직접 가져온 것입니다.

(netplan이 생성하는 내용을 확인하고 거기에서 이동할 수 있습니다. 파일은 에 있습니다 /run/systemd/network.)

또는 netplan과 ifupdown이 공존할 수 있다는 점을 활용 apt install ifupdown하고 enp1s0f0ifupdown으로 구성할 수 있습니다.

답변2

Netplan에는 iface에 링크가 있는지 여부를 파악하고 링크가 활성화될 때만 자동으로 주소를 할당하는 스마트 시스템이 있는 것 같습니다.

해당 인터페이스에 링크(캐리어 신호)가 없으면 구성되지 않은 상태로 유지되지만, 케이블의 반대쪽 끝에 있는 다른 장치를 켜면 인터페이스가 자동으로 IP 주소와 필요한 모든 정보를 표시합니다.

DHCP의 경우 특정 인터페이스에 바인딩하지 않는 것이 해결책입니다.

답변3

이 문제가 발생할 수 있는 또 다른 가능성은 다음과 같습니다.동일한 우선순위를 가진 여러 NIC 사용, 내 경우처럼: 두 개의 USB NIC가 Ubuntu 20.04 가상 머신에 직접 통합되어 있습니다. 시작할 때마다 그 중 하나는 제대로 작동하지만 다른 하나는 TX 및 RX 패킷이 표시되지 않습니다 ifconfig. 이 명령은 ip aNO-CARRIER 및 상태 DOWN을 표시하며 연결된 네트워크는 이 nic를 통해 액세스할 수 없습니다. 솔루션을 찾을 때까지 몇 달 동안 VM 설정에서 연결을 끊었다가 다시 연결해야 했습니다. 누군가가 동일한 문제에 직면한 경우를 대비하여 다음을 수행하십시오.

해결 방법은 GUI '고급 네트워크 구성'을 열고 두 NIC 모두에 대해 "우선 순위로 자동 연결"이 활성화되어 있는지 확인하는 것입니다.하지만 우선순위 값이 동일하지 않음그렇지 않으면 충돌이 발생하고 부팅할 때마다 하나의 nic이 항상 NO CARRIER 및 No TX/RX 패킷을 외치게 됩니다. 하나를 '0'으로 설정하고 다른 하나를 '1'로 설정하면 이러한 충돌을 피할 수 있으며 재부팅 후에는 두 NIC가 모두 정상적으로 작동합니다.

관련 정보