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起動時に no up で起動できないため、動作しません。enp1s0f0起動中に up して構成する必要がありますが、これが静的 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、(ケーブルの反対側に何かがあるかどうかに関係なく、起動時に起動しない理由がわかりませんenp1s0f0。静的 IP を持つことの全体的なポイントだと思っていました) では問題ではありませんでした。Netplan で動作させることは可能ですか? または、enp1s0f0起動時に DHCP サーバーを起動することは可能ですか?

答え1

どうやらバグが発生しているようですが、https://github.com/CanonicalLtd/netplan/pull/34- 現在、デバイスはキャリアがある場合にのみ構成されますが、その要件はなくなります。

とりあえず、デバイスをsystemd-networkd直接設定することでこの問題を修正できる可能性があります。netplanenp1s0f0設定からスタンザを削除し、次のような (テストされていない) 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 が共存できることを利用して、ifupdown を使用してapt install ifupdown設定することもできます。enp1s0f0

答え2

Netplan には、iface にリンクがあるかどうかを判断し、リンクが確立されている場合にのみ自動的にアドレスを割り当てるスマートなシステムがあるようです。

そのインターフェースにリンク (キャリア信号) がない場合、インターフェースは未構成のままですが、ケーブルのもう一方の端にある他のデバイスの電源を入れると、インターフェースは IP アドレスと必要なものすべてを自動的に起動します。

DHCP の場合、解決策としては、特定のインターフェースにバインドしないことです...

答え3

この問題に遭遇するもう一つの可能​​性は同じ優先度を持つ複数のNICの使用私の場合のように、2 つの USB NIC が Ubuntu 20.04 仮想マシンに直接統合されています。起動するたびに、1 つは正常に動作しますが、もう 1 つは に TX パケットと RX パケットが表示されませんifconfig。コマンドを実行するip aと NO-CARRIER と状態 DOWN が表示され、接続されたネットワークにはこの NIC 経由でアクセスできません。解決策が見つかるまで、VM 設定で接続を切断して再接続する必要がありました。同じ問題に直面している人がいる場合に備えて:

解決策は、GUIの「高度なネットワーク構成」を開き、両方のNICで「優先して自動的に接続する」が有効になっていることを確認することです。ただし、同じ優先度の値ではないそうしないと競合が発生し、起動するたびに 1 つの NIC が常に NO CARRIER と TX/RX パケットなしを通知することになります。一方を「0」に、もう一方を「1」に設定すると、この競合が回避され、再起動後に両方の NIC が正常に動作します。

関連情報