Comment by cyberax

16 hours ago

ULA are useless for most practical purposes because of the source address selection rules.

> ULA are useless for most practical purposes because of the source address selection rules.

/me glances over at my LAN which has been happily using ULAs for local communications and GUAs for global for the past I don't even know how long.

_Sure_.

  • The problem is real. In IP discovery GUA is prioritized over ULA. And if the GUA goes away or changes regularly it leads to connectivity issues.

    ULA work well in combination with DNS though.

    • > In IP discovery GUA is prioritized over ULA. And if the GUA goes away or changes regularly it leads to connectivity issues.

      Sure, but you're generally not going to get both addresses associated with a single host unless you either hard-code them or use DNS. For any non-stupid network, source address selection for reaching LAN hosts doesn't really matter. And for many-to-most SOHO networks, you're going to be running dnsmasq, which will quickly set you right after any GUA change.

      And like, the thing to be noticing here is that source address selection priorities for both IPv4 and IPv6 seem to give us the same actual behavior. Consider a pair of hostnames served up by BIND 9 and some applications running on bog-standard Gentoo Linux whose '/etc/gai.conf' contains only comments and blank lines:

        # getent ahosts dumbhost.invalid
        1.1.1.1         STREAM dumbhost.invalid
        1.1.1.1         DGRAM  
        1.1.1.1         RAW    
        192.168.30.30    STREAM 
        192.168.30.30    DGRAM  
        192.168.30.30    RAW    
        # ping -n -c1 dumbhost.invalid
        PING dumbhost.invalid (192.168.30.30) 56(84) bytes of data.
        From <redacted> icmp_seq=1 Destination Host Unreachable
      
        --- dumbhost.invalid ping statistics ---
        1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
      
        # curl -v dumbhost.invalid
        * Host dumbhost.invalid:80 was resolved.
        * IPv6: (none)
        * IPv4: 192.168.30.30, 1.1.1.1
        *   Trying 192.168.30.30:80...
        * connect to 192.168.30.30 port 80 from <redacted> port 47140 failed: No route to host
        *   Trying 1.1.1.1:80...
        * Established connection to dumbhost.invalid (1.1.1.1 port 80) from <redacted> port <redacted>
        <snip>
        # getent ahosts dumbhost6.invalid
        fd00::1         STREAM dumbhost6.invalid
        fd00::1         DGRAM  
        fd00::1         RAW    
        2002:db8::1     STREAM 
        2002:db8::1     DGRAM  
        2002:db8::1     RAW
        # ping -n -c1 dumbhost6.invalid
        PING dumbhost6.invalid (fd00::1) 56 data bytes
        From <redacted> icmp_seq=1 Destination unreachable: No route
        
        --- dumbhost6.invalid ping statistics ---
        1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
      
        # curl -v dumbhost6.invalid
        *   Trying [fd00::1]:80...
        * connect to fd00::1 port 80 from <redacted> port <redacted> failed: Network is unreachable
        *   Trying [2002:db8::1]:80...
        * Host dumbhost6.invalid:80 was resolved.
        * IPv6: fd00::1, 2002:db8::1
        * IPv4: (none)
        ^C
        # ip addrlabel list | sort -hk 4
        prefix ::1/128 label 0 
        prefix ::/0 label 1 
        prefix 2002::/16 label 2 
        prefix ::/96 label 3 
        prefix ::ffff:0.0.0.0/96 label 4 
        prefix fc00::/7 label 5 
        prefix 2001::/32 label 6 
        prefix 2001:10::/28 label 7 
        prefix fec0::/10 label 11 
        prefix 3ffe::/16 label 12
      

      Notice how actual application behavior doesn't match what folks in this thread are saying that source address selection dictates. Android behaves the same way, and -weirdly- my OpenWRT hosts have the exact opposite behavior and prefer using global addresses to ULA or 1918 ones, regardless of IP protocol version.

      Anyway. If he put both IPv4 GUAs and 1918 addresses in DNS or his '/etc/hosts', he'd be having the same problem he's complaining about here... depending on -I guess- the OS he's using and how his resolver treats the ordering of entires in '/etc/hosts'.

      This isn't an IPv6 problem, this is a "Things break for a little while when I use addresses to communicate with a host that can change out from under me instead of addresses that I control and those addresses happen to change." problem.

      > ULA work well in combination with DNS though.

      Yep! Most everything works great with DNS. Remembering IP addresses is for the birds.

      1 reply →