[ipxe-devel] IPv6 is broken in iPXE

Pali Rohár pali.rohar at gmail.com
Sun Dec 16 14:49:29 UTC 2018


On Friday 02 November 2018 00:16:00 Pali Rohár wrote:
> Hello,
> 
> I'm trying to use iPXE on IPv6-enabled network. Everything is running
> fine on this network, all IPv4 and IPv6 application, just iPXE has
> problems. It cannot connect to any host which has both
> 
> IPv6 router send RA packet without Autonomous bit (=disable SLAAC) and
> with Managed and Other bits (= use DHCPv6 for IPv6 address assignment).
> 
> Also on network is available standard IPv4 connection via DHCP.
> 
> When iPXE is run on this network with enabled NET_PROTO_IPV6 then it
> cannot connect to any host, just show error message: Network
> unreachable.
> 
> When iPXE is compiled without NET_PROTO_IPV6 then everything is working
> fine and (IPv4) network is accessible.
> 
> I guess that problem is in DNS resoling process. When host has more AAAA
> and more A records, iPXE chose just first IPv6 one and fails when first
> record is unreachable. Also in case no IPv6 address is assigned. And
> when IPv4 network is functional it does not try to fallback.
> 
> Same problem can be reproduced with Debian Stable version of qemu with
> current git version of iPXE.
> 
> Below is output for iPXE 133f4c47baef6002b2ccb4904a035cda2303c6e5 with
> enabled NET_PROTO_IPV6:
> 
> =======================================================================
> $ cd src
> $ sed 's/#undef\tNET_PROTO_IPV6/#define\tNET_PROTO_IPV6/' -i config/general.h
> $ make -j8 bin/rtl8139.rom
> $ qemu-system-x86_64 -netdev user,id=n1 -device rtl8139,netdev=n1,romfile=bin/rtl8139.rom -boot order=n -curses
> 
> SeaBIOS (version 1.10.2-1)
> 
> 
> iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+07F90DD0+07ED0DD0 CA00
> 
> 
> 
> Booting from ROM...
> iPXE (PCI 00:03.0) starting execution...ok
> iPXE initialising devices...ok
> 
> 
> 
> iPXE 1.0.0+ (133f) -- Open Source Network Boot Firmware -- http://ipxe.org
> Features: DNS HTTP iSCSI TFTP AoE ELF MBOOT PXE bzImage Menu PXEXT
> 
> iPXE> dhcp
> Configuring (net0 52:54:00:12:34:56)...... ok
> iPXE> imgload http://boot.ipxe.org
> http://boot.ipxe.org... Network unreachable (http://ipxe.org/280a6011)
> iPXE>
> =======================================================================
> 
> And below is output for iPXE when NET_PROTO_IPV6 is not enabled (without
> that sed command recompiled):
> 
> =======================================================================
> SeaBIOS (version 1.10.2-1)
> 
> 
> iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+07F92DD0+07EF2DD0 CA00
> 
> 
> 
> Booting from ROM...
> iPXE (PCI 00:03.0) starting execution...ok
> iPXE initialising devices...ok
> 
> 
> 
> iPXE 1.0.0+ (133f) -- Open Source Network Boot Firmware -- http://ipxe.org
> Features: DNS HTTP iSCSI TFTP AoE ELF MBOOT PXE bzImage Menu PXEXT
> 
> iPXE> dhcp
> Configuring (net0 52:54:00:12:34:56)...... ok
> iPXE> imgload http://boot.ipxe.org
> http://boot.ipxe.org... ok
> iPXE>
> =======================================================================
> 
> So it can be clearly seen that problem is in iPXE's IPv6 implementation
> as iPXE version without IPv6 is working fine as expected.
> 
> Host boot.ipxe.org has both A and AAAA records, so even when IPv6 is
> compiled, but not available (for any reason), IPv4 should work.
> 
> Similar/same problem was reported for netboot.xyz project:
> https://github.com/antonym/netboot.xyz/issues/283

Just reminder, that this problem is still present in the current git
repository. Is there any progress? Or do you need some other details?

I guess that above reproducer should be enough for debugging...

-- 
Pali Rohár
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <http://lists.ipxe.org/pipermail/ipxe-devel/attachments/20181216/5cb99ad6/attachment.sig>


More information about the ipxe-devel mailing list