[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

DHCP on 1st boot although static config / causes DNS to be broken



Hi,
i was debugging some issues i randomly had when deploying the cloud
image (VMWare, ansible created cidata iso image in an OVA file).
Specifically - sometimes after the system was up the dns 
was broken. 

- /etc/resolv.conf was a symlink to the resolvconf stub
- The resolvconf stub was empty (Except some comments that its the stub)

So DNS is broken.

After some debugging i found that randomly it seems the cloud image 
trys to do DHCP on boot before the cloud-init run. When that happens
cloud init happily writes the /etc/network/interfaces.d/50-cloud-init
with a DNS Server in it - but fails to bring up the interface or feed 
resolved. My guess is that ifupdown has a half way up interface or something.

Shortened logfile of the failing first boot - Another symptom is that the first
boot takes >1 Minute because DHCP needs to time out.

[ ... kernel setup ... ]
Apr 22 17:34:40 svrb-flo-test kernel: vmxnet3 0000:03:00.0 ens160: intr type 3, mode 0, 3 vectors allocated
Apr 22 17:34:40 svrb-flo-test kernel: vmxnet3 0000:03:00.0 ens160: NIC Link is Up 10000 Mbps
Apr 22 17:34:40 svrb-flo-test ifup[420]: ifup: waiting for lock on /run/network/ifstate.ens160
Apr 22 17:34:40 svrb-flo-test dhclient[498]: Internet Systems Consortium DHCP Client 4.4.1
Apr 22 17:34:40 svrb-flo-test sh[498]: Internet Systems Consortium DHCP Client 4.4.1
Apr 22 17:34:40 svrb-flo-test sh[498]: Copyright 2004-2018 Internet Systems Consortium.
Apr 22 17:34:40 svrb-flo-test sh[498]: All rights reserved.
Apr 22 17:34:40 svrb-flo-test sh[498]: For info, please visit https://www.isc.org/software/dhcp/
Apr 22 17:34:40 svrb-flo-test dhclient[498]: Copyright 2004-2018 Internet Systems Consortium.
Apr 22 17:34:40 svrb-flo-test dhclient[498]: All rights reserved.
Apr 22 17:34:40 svrb-flo-test dhclient[498]: For info, please visit https://www.isc.org/software/dhcp/
Apr 22 17:34:40 svrb-flo-test dhclient[498]: 
Apr 22 17:34:40 svrb-flo-test dhclient[498]: Listening on LPF/ens160/00:50:56:ba:d5:54
Apr 22 17:34:40 svrb-flo-test sh[498]: Listening on LPF/ens160/00:50:56:ba:d5:54
Apr 22 17:34:40 svrb-flo-test sh[498]: Sending on   LPF/ens160/00:50:56:ba:d5:54
Apr 22 17:34:40 svrb-flo-test sh[498]: Sending on   Socket/fallback
[ ... ]
Apr 22 17:35:41 svrb-flo-test sh[498]: No DHCPOFFERS received.
Apr 22 17:35:41 svrb-flo-test sh[498]: No working leases in persistent database - sleeping.
Apr 22 17:35:41 svrb-flo-test dhclient[498]: No working leases in persistent database - sleeping.
Apr 22 17:35:41 svrb-flo-test sh[553]: ens160=ens160
Apr 22 17:35:41 svrb-flo-test systemd[1]: Finished Raise network interfaces.
Apr 22 17:35:41 svrb-flo-test systemd[1]: Reached target Network.
Apr 22 17:35:41 svrb-flo-test systemd[1]: Starting Initial cloud-init job (metadata service crawler)...
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: Cloud-init v. 20.4.1 running 'init' at Fri, 22 Apr 2022 17:35:42 +0000. Up 67.67 seconds.
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: ++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: | Device |  Up  |           Address           |      Mask     | Scope  |     Hw-Address    |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: | ens160 | True |         172.30.130.9        | 255.255.255.0 | global | 00:50:56:ba:d5:54 |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: | ens160 | True | fe80::250:56ff:feba:d554/64 |       .       |  link  | 00:50:56:ba:d5:54 |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: |   lo   | True |          127.0.0.1          |   255.0.0.0   |  host  |         .         |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: |   lo   | True |           ::1/128           |       .       |  host  |         .         |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: ++++++++++++++++++++++++++++++Route IPv4 info++++++++++++++++++++++++++++++
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +-------+--------------+--------------+---------------+-----------+-------+
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: | Route | Destination  |   Gateway    |    Genmask    | Interface | Flags |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +-------+--------------+--------------+---------------+-----------+-------+
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: |   0   |   0.0.0.0    | 172.30.130.1 |    0.0.0.0    |   ens160  |   UG  |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: |   1   | 172.30.130.0 |   0.0.0.0    | 255.255.255.0 |   ens160  |   U   |
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +-------+--------------+--------------+---------------+-----------+-------+
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +++++++++++++++++++Route IPv6 info+++++++++++++++++++
Apr 22 17:35:42 svrb-flo-test cloud-init[574]: ci-info: +-------+-------------+---------+-----------+-------+


Also while debugging i found this:

root@svrb-flo-test:~# cat /etc/network/interfaces
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

# Cloud images dynamically generate config fragments for newly
# attached interfaces. See /etc/udev/rules.d/75-cloud-ifupdown.rules
# and /etc/network/cloud-ifupdown-helper. Dynamically generated
# configuration fragments are stored in /run:
source-directory /run/network/interfaces.d


This really looks odd. Duplicate include ...


After a reboot the /etc/resolv.conf gets filled and no DHCP is issued.

root@svrb-flo-test:~# cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "resolvectl status" to see details about the actual nameservers.

nameserver 172.31.100.15


(Is it only me that i find the description highly confusing - Its the resolvconf
stub file and it is intermixed with systemd-resolved stub infos)


My network user-data.yml section looks like this:

config:
  - type: physical
    name: ens160
    subnets:
      - type: static
        address: 172.30.130.9/24
        gateway: 172.30.130.1
        dns_nameservers:
          - 172.31.100.15

Flo
-- 
Florian Lohoff                                                     f@zz.de
  Any sufficiently advanced technology is indistinguishable from magic.

Attachment: signature.asc
Description: PGP signature


Reply to: