web-dev-qa-db-fra.com

Mauvaise adresse IP du client DHCP sur Ubuntu 18.04

Je ressens un problème étrange où ma boîte Ubuntu 18.04 (serveur) reçoit une adresse IP erronée lors du démarrage à partir du serveur DHCP. En cours d'exécution Dhclient après la démarrage sur l'interface Résultats dans la bonne adresse IP étant ajoutée à l'interface.

Le serveur DHCP est une boîte Windows dans laquelle une réservation a été configurée manuellement à l'aide de l'adresse MAC indiquée par ip addr à Ubuntu (sans colons):

5: eno4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:26:b9:82:44:27 brd ff:ff:ff:ff:ff:ff
    inet 10.10.11.162/23 brd 10.10.11.255 scope global dynamic eno4
       valid_lft 689861sec preferred_lft 689861sec
    inet6 fe80::226:b9ff:fe82:4427/64 scope link
       valid_lft forever preferred_lft forever

Mon 50-courtin-networking.cfg (Cloud-init cfg)

network:
  version: 2
  ethernets:

    bcm:
      match:
        name: eno*
      dhcp4: true
      dhcp6: false

Entrées de journalCTL pour DHCP:

#journalctl | grep -Ei 'dhcp'`
Jul 12 10:10:56 skprov2 systemd-networkd[1160]: eno1: DHCP lease lost
Jul 12 10:10:57 skprov2 systemd-networkd[1160]: eno4: DHCP lease lost
Jul 12 10:11:00 skprov2 systemd-networkd[1160]: eno1: DHCPv4 address 10.10.11.157/23 via 10.10.10.254
Jul 12 10:11:02 skprov2 systemd-networkd[1160]: eno4: DHCPv4 address 10.10.11.162/23 via 10.10.10.254

Appeler manuellement Dhclient après la connexion (Verbose):

# dhclient -v eno4
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eno4/00:26:b9:82:44:27
Sending on   LPF/eno4/00:26:b9:82:44:27
Sending on   Socket/fallback
DHCPREQUEST of 10.10.10.40 on eno4 to 255.255.255.255 port 67 (xid=0x4cb8a62d)
DHCPACK of 10.10.10.40 from 10.10.10.10
bound to 10.10.10.40 -- renewal in 294538 seconds.

10.10.10.10 est le serveur DHCP correct et 10.10.10.40 est la propriété intellectuelle configurée dessus. Sur le DHCP Windows, le mauvais bail (.162) montre une longue "ID unique" qui ne contient aucune adresse MAC présente sur la boîte Ubuntu: 032e827c00020000ab11d0fc617dced58a43

Quelle est la bonne façon d'éviter cela? Nier les baux pour le long UID? Où est-ce que cet UID vient d'en premier lieu? Le NIC est à bord d'un serveur Dell PowerEdge R710.

10
NoMad

La cause du problème est que la configuration réseau intégrée d'Ubuntu 18.04 n'utilise plus l'adresse NIC comme ID par défaut pour les demandes DHCP.

Les comportements traditionnels (et je crois que "sensibles") peuvent être restaurés en ajoutant dhcp-identifier: mac à la configuration dans le fichier /etc/netplan/xxx.yaml (Cloud-init) comme suit:

network:
    renderer: networkd
    version: 2
    ethernets:
        nicdevicename:
            dhcp4: true
            dhcp-identifier: mac

Où "NicDevicename" est le nom de votre appareil réseau

Utilisation

Sudo netplan apply

essayer la nouvelle configuration. Si vous obtenez des erreurs, veuillez noter que l'indentation précise est très importante dans les fichiers .yaml ..

21
anneb

Nier le bail ne fonctionnera pas. Il n'y a aucune façon de savoir que NetworkD pourrait savoir pourquoi on se refuse, de sorte que c'est NE PAS Il suffit de passer par magiquement à un type d'identifiant différent si vous le faites. Vous devez le faire manuellement.

Si votre version SystemD est suffisamment récente et si vous avez une commande directe sur les fichiers de configuration écrites par Cloud-Init, vous pouvez indiquer à SystemD-NetworkD d'envoyer un identifiant client basé sur l'adresse MAC via *.network fichier:

[DHCP]
ClientIdentifier=mac

Mais si vous savez que SystemD-Networkd sera TOUJOURS ÊTRE UTILISÉE, vous pouvez simplement affecter le bon bail à l'ID client 032e827c00020000ab11d0fc617dced58a43, car c'est ce que SystemD-Networkd enverra toujours pour cette machine. (Il génère l'identifiant basé sur /etc/machine-id.)


Les clients MOS DHCP, y compris DhClient, fournissent un champ d'identification client de type '01' (basé sur Mac). Un autre type commun est '00' (nom de domaine). Toutefois, par défaut, SystemD-Networkd fournit un identifiant client "opaque" généré à partir du contenu de/etc/machine.

Selon le protocole DHCP, les contrats de location sont choisis par NOTE First (Tant que le client fournit une option "ID client", qui peut ou non être basée sur Mac), puis par le Adresse MAC seulement si Le client n'a pas envoyé d'identifiant.

Ainsi, lorsque vous configurez une réservation, tous les bons serveurs DHCP vous permettront de saisir l'ID client ou L'adresse MAC. Si vous entrez juste l'adresse MAC, je suppose que l'identifiant du client de type-'01 '(Mac-Basé) est automatiquement implicite. Il peut y avoir une case à cocher nommée "Ignorer l'ID client", ce qui vous convient, mais viole techniquement la spécification DHCP.

(Par exemple, j'ai deux adaptateurs Wi-Fi avec différents Macs, mais j'ai configuré le système d'exploitation pour envoyer le même identifiant client, quel que soit l'adaptateur connecté. De cette façon, je reçois la même adresse via les deux.)

3
user1686