Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.

Bug 1795276

Summary: Dracut does not set DNS server from IPv6
Product: Red Hat Enterprise Linux 8 Reporter: Lukas Zapletal <lzap>
Component: dracutAssignee: Lukáš Nykrýn <lnykryn>
Status: CLOSED ERRATA QA Contact: Frantisek Sumsal <fsumsal>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 8.1CC: dracut-maint-list, fsumsal
Target Milestone: rcFlags: pm-rhel: mirror+
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: dracut-049-68.git20200211.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-04-28 16:06:04 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Sosreport from QEMU BIOS VM
none
DHCP client not setting up DNS credentials
none
Sosreport debug none

Description Lukas Zapletal 2020-01-27 15:47:55 UTC
Hello, I am netbooting RHEL 8.1 over HTTP UEFI Boot (IPv6 HTTPClient), but Anaconda fails to download kickstart due to no nameserver set. There is no useful information in the system journal other than "link becomes ready" and then kickstart failure.

This is Grub2 config booted over UEFI HTTP:

set default=0
set timeout=2
menuentry 'Kickstart default PXEGrub2 HTTP Boot' {
  linuxefi /httpboot/boot/red-hat-enterprise-linux-8-for-x86_64-baseos-kickstart-x86_64-8-1-4-vmlinuz ks=http://fm.ipsix.lan/unattended/provision?token=77233f46-9fa6-4ecb-ac30-478abe8d1eb8  network ksdevice=bootif ks.device=bootif BOOTIF=00-00-c0-3a-d1-01-8f kssendmac ks.sendmac inst.ks.sendmac ip=dhcp6
  initrdefi /httpboot/boot/red-hat-enterprise-linux-8-for-x86_64-baseos-kickstart-x86_64-8-1-4-initrd.img
}

I can see both SLAAC and DHCPv6 communication on the network, both services are configured to return DNS server correctly, however on the running system there is no /etc/resolv.conf. I see no NetworkManager logs, nothing. I tried both "auto6" and "dhcp6". Server configuration is simple:

# cat /etc/dhcp/dhcpd6.conf 
default-lease-time 2592000;
preferred-lifetime 604800;
option dhcp-renewal-time 3600;
option dhcp-rebinding-time 7200;
allow leasequery;
option dhcp6.info-refresh-time 21600;
option dhcp6.vendor-class-identifier code 16 = string;
option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};
option dhcp6.user-class code 15 = string;
option dhcp6.bootfile-url code 59 = string;
option dhcp6.client-arch-type code 61 = array of unsigned integer 16;

subnet6 fd00:aaaa:bbbb:cc::/64 {
  range6 fd00:aaaa:bbbb:cc::aaaa fd00:aaaa:bbbb:cc::ffff;
  option dhcp6.name-servers fd00:aaaa:bbbb:cc::2;

  if exists dhcp6.user-class and
    substring(option dhcp6.user-class, 2, 4) = "iPXE" {
    # iPXE script file location
    option dhcp6.bootfile-url "http://fm.ipsix.lan:8000/unattended/iPXE";
  } else if option dhcp6.client-arch-type = 00:06 {
    # UEFI x86 PXE/TFTP boot via IPv6
    option dhcp6.bootfile-url "tftp://fm.ipsix.lan:8000/ipxe32.efi";
  } else if option dhcp6.client-arch-type = 00:07 {
    # UEFI x86-64 PXE/TFTP boot via IPv6
    option dhcp6.bootfile-url "tftp://fm.ipsix.lan:8000/grub2/grubx64.efi";
  } else if option dhcp6.client-arch-type = 00:0f {
    # UEFI x86 HTTP boot via IPv6
    option dhcp6.vendor-class 0 10 "HTTPClient";
    option dhcp6.bootfile-url "http://fm.ipsix.lan:8000/EFI/grub2/grubx64.efi";
  } else if option dhcp6.client-arch-type = 00:10 {
    # UEFI x86-64 HTTP boot via IPv6
    option dhcp6.vendor-class 0 10 "HTTPClient";
    option dhcp6.bootfile-url "http://fm.ipsix.lan:8000/EFI/grub2/grubx64.efi";
  } else {
    # Support a hypothetical BIOS system that can PXE boot over IPv6
    option dhcp6.bootfile-url "tftp://fm.ipsix.lan:8000/undionly.kpxe";
  }
}

# cat /etc/radvd.conf 
interface eth0
{
        AdvSendAdvert on;
        AdvManagedFlag on;
        AdvOtherConfigFlag on;

        prefix fd00:aaaa:bbbb:cc::/64
        {
                AdvAutonomous off;
        };

        RDNSS fd00:aaaa:bbbb:cc::2 {
        };
};

I expect dracut/Anaconda to initialize the booting interface via DHCPv6, I must be missing some option or there is another snag.

Comment 1 Lukáš Nykrýn 2020-01-27 15:51:49 UTC
Could you try again with the recent dracut from 8.3? We've recently fixed a few issues regarding ipv6.

Comment 2 Lukas Zapletal 2020-01-28 07:24:41 UTC
Will do, FYI I've reproduced it in more simple environment. Just boot kernel/initram directly in a libvirt VM on IPv6-only virtual network in EFI VM with:

ks=http://box.home.lan/kickstart.ks network ksdevice=bootif ks.device=bootif BOOTIF=00-52-54-00-13-13-01 kssendmac ks.sendmac inst.ks.sendmac ip=dhcp6

Going to try "auto6" as well before I retry with 8.3. Can you give me a link to kernel/initramdisk I should test with so I am sure not to try with a wrong one please? Thanks.

Comment 3 Lukas Zapletal 2020-01-28 08:16:23 UTC
For the record I've tested the following RHEL versions: 7.7, 8.0, 8.1 and 8.2 beta. All same behavior, no network is ever initialized and I am unable to see *any* network related messages in system journal other than "link is up". I've even tested with absolute minimum kernel command line options:

ks=http://box.home.lan/kickstart.ks BOOTIF=00-52-54-00-13-13-01

or even the simplest form:

ks=http://box.home.lan/kickstart.ks

I experience the same on hardware I have here for testing, MEN industrial Intel ATOM, UEFI server.

Here is dump from DHCP6 comm captured in my DHCPv6 libvirt NAT network:

[root@box lzap]# tcpdump -i virbr8 -n -vv '(udp port 546 or 547) or icmp6'
dropped privs to tcpdump
tcpdump: listening on virbr8, link-type EN10MB (Ethernet), capture size 262144 bytes
09:04:48.403203 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) :: > ff02::1:ff13:1301: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fe80::5054:ff:fe13:1301
          unknown option (14), length 8 (1): 
            0x0000:  b6e4 587f e3cb
09:04:49.427243 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 16) fe80::5054:ff:fe13:1301 > ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 16
          source link-address option (1), length 8 (1): 52:54:00:13:13:01
            0x0000:  5254 0013 1301
09:04:49.428048 IP6 (class 0xc0, flowlabel 0x267c7, hlim 255, next-header ICMPv6 (58) payload length: 88) fe80::5054:ff:fee6:57d9 > fe80::5054:ff:fe13:1301: [icmp6 sum ok] ICMP6, router advertisement, length 88
        hop limit 64, Flags [managed, other stateful], pref medium, router lifetime 1800s, reachable time 0ms, retrans timer 0ms
          prefix info option (3), length 32 (4): fd00:bbbb:cccc:dd::/64, Flags [onlink], valid time 3600s, pref. time 3600s
            0x0000:  4080 0000 0e10 0000 0e10 0000 0000 fd00
            0x0010:  bbbb cccc 00dd 0000 0000 0000 0000
          mtu option (5), length 8 (1):  1500
            0x0000:  0000 0000 05dc
          source link-address option (1), length 8 (1): 52:54:00:e6:57:d9
            0x0000:  5254 00e6 57d9
          rdnss option (25), length 24 (3):  lifetime 3600s, addr: fe80::5054:ff:fee6:57d9
            0x0000:  0000 0000 0e10 fe80 0000 0000 0000 5054
            0x0010:  00ff fee6 57d9
09:04:54.700921 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::5054:ff:fee6:57d9 > fe80::5054:ff:fe13:1301: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fe80::5054:ff:fe13:1301
          source link-address option (1), length 8 (1): 52:54:00:e6:57:d9
            0x0000:  5254 00e6 57d9
09:04:54.701115 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::5054:ff:fe13:1301 > fe80::5054:ff:fee6:57d9: [icmp6 sum ok] ICMP6, neighbor advertisement, length 24, tgt is fe80::5054:ff:fe13:1301, Flags [solicited]
09:04:59.987199 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::5054:ff:fe13:1301 > fe80::5054:ff:fee6:57d9: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fe80::5054:ff:fee6:57d9
          source link-address option (1), length 8 (1): 52:54:00:13:13:01
            0x0000:  5254 0013 1301
09:04:59.987248 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::5054:ff:fee6:57d9 > fe80::5054:ff:fe13:1301: [icmp6 sum ok] ICMP6, neighbor advertisement, length 24, tgt is fe80::5054:ff:fee6:57d9, Flags [router, solicited]

Comment 4 Lukas Zapletal 2020-01-28 08:51:00 UTC
I have an update, I tested this also on libvirt BIOS VM and the symptoms are the same. IPv6 does not work at all. Here is libvirt's dnsmasq config just for the record, nothing special:

[root@box lzap]# cat /var/lib/libvirt/dnsmasq/dhcpsix.lan.conf
strict-order
domain=dhcpsix.lan
expand-hosts
pid-file=/var/run/libvirt/network/dhcpsix.lan.pid
except-interface=lo
bind-dynamic
interface=virbr8
dhcp-range=fd00:bbbb:cccc:dd::100,fd00:bbbb:cccc:dd::1ff,64
dhcp-lease-max=256
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/dhcpsix.lan.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/dhcpsix.lan.addnhosts
enable-ra

Comment 5 Lukas Zapletal 2020-01-28 12:34:39 UTC
Created attachment 1656007 [details]
Sosreport from QEMU BIOS VM

Just booted the kernel with a ks= parameter on libvirt IPv6 only network.

Comment 9 Lukas Zapletal 2020-01-31 09:43:25 UTC
Hello, I might be getting somewhere. First of all, ip=auto6 does not work straight-up. It's also not an option for PXE/UEFI-HTTP-Boot environment anyway where dhcp6 is required for for non-static network boot.

With ip=dhcp6 I am actually getting the IPv6 address correctly, dhclient gets relevant data including DNS server however it does not write /etc/resolv.conf at all, thus kickstart download fails. Attaching a screenshot of the details, so it's likely that DHCPv6 not setting up DNS is the culprit of my problem.

Comment 10 Lukas Zapletal 2020-01-31 09:44:38 UTC
Created attachment 1656685 [details]
DHCP client not setting up DNS credentials

Comment 11 Lukas Zapletal 2020-01-31 10:13:55 UTC
I can confirm, the WORKAROUND is to provide nameserver= on the command line and then it works:

ks=http://box.home.lan/kickstart.ks BOOTIF=00-52-54-00-13-13-01 ip=dhcp6 nameserver=fd00:bbbb:cccc:dd::1

Comment 12 Lukáš Nykrýn 2020-02-04 15:47:10 UTC
Hmm could you try that once more and again with rd.debug and toss here the rdsosreport?

Comment 13 Lukas Zapletal 2020-02-11 09:27:11 UTC
Created attachment 1662413 [details]
Sosreport debug

ks=http://box.home.lan/kickstart.ks BOOTIF=00-52-54-00-13-13-01 ip=dhcp6 rd.net.timeout.ipv6auto=5 rd.debug rd.shell xnameserver=fd00:bbbb:cccc:dd::1

Comment 14 Lukas Zapletal 2020-02-11 09:28:34 UTC
Attached sosreport with kernel cmdline:

ks=http://box.home.lan/kickstart.ks BOOTIF=00-52-54-00-13-13-01 ip=dhcp6 rd.net.timeout.ipv6auto=5 rd.debug rd.shell xnameserver=fd00:bbbb:cccc:dd::1

See that /etc/resolv.conf is empty. Note when xnameserver=fd00:bbbb:cccc:dd::1 is changed to nameserver=fd00:bbbb:cccc:dd::1 only after that /etc/resolv.conf is properly generated and Anaconda can finally download the kickstart via a hostname.

Comment 15 Lukáš Nykrýn 2020-02-11 11:53:22 UTC
Based on the logs it looks that dhclient-script did not get the nameserver from dhclient.
[   16.979166] localhost dracut-initqueue[881]: /usr/sbin/dhclient-script@79(setup_interface6): namesrv=
Relevant line is here https://github.com/dracutdevs/dracut/blob/RHEL-8/modules.d/35network-legacy/dhclient-script.sh#L79

I don't know if there is an issue with dhclient or something wrong on dracut side, so let's move this to dhcp for investigation.
Btw our dhclient.conf is here:
https://github.com/dracutdevs/dracut/blob/RHEL-8/modules.d/35network-legacy/dhclient.conf

Comment 16 Pavel Zhukov 2020-02-11 12:29:45 UTC
(In reply to Lukáš Nykrýn from comment #15)
> Based on the logs it looks that dhclient-script did not get the nameserver
> from dhclient.
> [   16.979166] localhost dracut-initqueue[881]:
> /usr/sbin/dhclient-script@79(setup_interface6): namesrv=
> Relevant line is here
> https://github.com/dracutdevs/dracut/blob/RHEL-8/modules.d/35network-legacy/
> dhclient-script.sh#L79
This  should be new_dhcp6_name_servers

Comment 17 Lukáš Nykrýn 2020-02-11 13:22:48 UTC
So I think that this should fix both of the issues we found here.

https://github.com/dracutdevs/dracut/pull/714
https://github.com/dracutdevs/dracut/pull/719

Comment 22 errata-xmlrpc 2020-04-28 16:06:04 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:1760