J'ai une machine sous Ubuntu Server 18.04. Le réseau est configuré à l'aide de Netplan. J'ai donc cette configuration dans /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
est connecté à un périphérique allumé ou non (au démarrage ou à tout autre moment). Je veux exécuter un serveur DHCP sur cette interface.
Le problème, c'est que lorsque je démarre, il y a un délai de quelques minutes et je vois le message suivant:
A start job is running for Wait for Network to be Configured
Finalement, le délai expire, le démarrage se poursuit, mais enp1s0f0
n'est jamais configuré ni affiché. ip link show enp1s0f0
donne:
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
Je n'ai aucune idée de la signification de NO-CARRIER
, mais si cela est pertinent, voici le résultat de 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
Maintenant, si j'allume le périphérique connecté, assez de enp1s0f0
apparaît:
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
Mais cela ne sert à rien à ce stade: le serveur DHCP ne fonctionnera pas car il ne pourrait pas démarrer avec enp1s0f0
no up au démarrage. J'ai besoin de enp1s0f0
up et configuré pendant le démarrage, ce qui, je pensais, était le but d'une configuration IP statique. Encore plus étrange, il a toujours une adresse IPv6, même lorsqu'elle est en panne:
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
Si je vérifie la sortie de débogage de Netplan, je vois:
$ 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
Ma configuration pour isc-dhcp-server
doit avoir /etc/default/isc-dhcp-server
contenant:
INTERFACESv4="enp1s0f0"
... et /etc/dhcp/dhcpd.conf
contiennent (entre autres):
subnet 10.0.0.0 netmask 255.255.255.0 {
...
}
En théorie, cela devrait servir DHCP sur enp1s0f0
. Cependant, étant donné que enp1s0f0
n'est jamais affiché, le serveur DHCP ne parvient pas à démarrer:
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!
Ce n'était pas un problème sous ifupdown
(je ne sais pas pourquoi enp1s0f0
ne se présente pas au démarrage, que quelque chose se trouve ou non à l'autre bout du câble; je pensais que c'était la point entier d'avoir une adresse IP statique). Est-il possible de le faire fonctionner dans Netplan? Ou est-il possible de faire démarrer le serveur DHCP lorsque enp1s0f0
est activé?
Il semble que vous rencontriez le bogue qui sera résolu par https://github.com/CanonicalLtd/netplan/pull/34 - pour le moment, les périphériques ne seront configurés que s'ils ont un opérateur. cette exigence s'en va.
En attendant, vous pouvez probablement résoudre ce problème en configurant directement le périphérique avec systemd-networkd
. Supprimez la strophe enp1s0f0
de la configuration netplan et ajoutez un paramètre similaire à celui (non testé) de la configuration systemd dans /etc/systemd/network/10-enp1s0f0.network
:
[Match]
Name=enp1s0f0
[Link]
RequiredForOnline=no
[Network]
ConfigureWithoutCarrier=true
Address=10.0.0.1/24
Le bit clé est le ConfigureWithoutCarrier
que j'ai extrait directement de la demande d'extraction.
(Vous pouvez voir ce que netplan génère et commencer à partir de là - le fichier sera dans /run/systemd/network
.)
Alternativement, vous pouvez utiliser le fait que netplan et ifupdown peuvent coexister, apt install ifupdown
et configurer enp1s0f0
avec ifupdown.
Il semble que Netplan dispose d’un système intelligent d’identification automatique du lien iface et d’attribution d’adresses uniquement lorsque le lien est activé.
Lorsque cette interface n'a pas de lien (signal de porteuse), elle reste non configurée. Toutefois, si j'allume l'autre périphérique à l'autre extrémité du câble, l'interface affiche automatiquement l'adresse IP et tout ce dont elle a besoin.
Pour DHCP, une solution serait de ne pas le lier à une interface spécifique ...