<!DOCTYPE html>
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>I am using dnsmasq 2.90 for captive portal besides other use
      cases and I've noticed that when I put into dnsmasq cfg file e.g.
      `interface-name=captive.apple.com,switch0.1` (this interface
      contains ipv6 LL address and `100.104.103.1/28`) I will be getting
      this on the client device (dnsmasq is running on a router which
      serves as a gateway for the client to the internet):<br>
    </p>
    <pre class="language-php line-numbers" tabindex="0"><code
    class="language-php" data-lang-auto="php">$ host captive<span
    class="token operator">.</span>apple<span class="token operator">.</span>com
captive<span class="token operator">.</span>apple<span
    class="token operator">.</span>com has address <span
    class="token number">100.104</span><span class="token number">.103</span><span
    class="token number">.1</span>
captive<span class="token operator">.</span>apple<span
    class="token operator">.</span>com is an alias <span
    class="token keyword">for</span> captive<span class="token operator">-</span>cidr<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net<span class="token operator">.</span>
captive<span class="token operator">-</span>cidr<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net is an alias <span
    class="token keyword">for</span> captive<span class="token operator">-</span>cdn<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net<span class="token operator">.</span>
captive<span class="token operator">-</span>cdn<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net is an alias <span
    class="token keyword">for</span> captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com<span
    class="token operator">.</span>
captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com has IPv6 address <span
    class="token number">2</span>a01<span class="token punctuation">:</span>b740<span
    class="token punctuation">:</span>a10<span class="token punctuation">:</span><span
    class="token class-name static-context">f000</span><span
    class="token operator">::</span><span class="token number">199</span>
captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com has IPv6 address <span
    class="token number">2</span>a01<span class="token punctuation">:</span>b740<span
    class="token punctuation">:</span>a10<span class="token punctuation">:</span><span
    class="token class-name static-context">f100</span><span
    class="token operator">::</span><span class="token number">210</span>
captive<span class="token operator">.</span>apple<span
    class="token operator">.</span>com is an alias <span
    class="token keyword">for</span> captive<span class="token operator">-</span>cidr<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net<span class="token operator">.</span>
captive<span class="token operator">-</span>cidr<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net is an alias <span
    class="token keyword">for</span> captive<span class="token operator">-</span>cdn<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net<span class="token operator">.</span>
captive<span class="token operator">-</span>cdn<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net is an alias <span
    class="token keyword">for</span> captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com<span
    class="token operator">.</span>

$ host captive<span class="token operator">.</span>apple<span
    class="token operator">.</span>com
captive<span class="token operator">.</span>apple<span
    class="token operator">.</span>com is an alias <span
    class="token keyword">for</span> captive<span class="token operator">-</span>cidr<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net<span class="token operator">.</span>
captive<span class="token operator">-</span>cidr<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net is an alias <span
    class="token keyword">for</span> captive<span class="token operator">-</span>cdn<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net<span class="token operator">.</span>
captive<span class="token operator">-</span>cdn<span
    class="token operator">.</span>origin<span class="token operator">-</span>apple<span
    class="token operator">.</span>com<span class="token operator">.</span>akadns<span
    class="token operator">.</span>net is an alias <span
    class="token keyword">for</span> captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com<span
    class="token operator">.</span>
captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com has address <span
    class="token number">17.253</span><span class="token number">.73</span><span
    class="token number">.203</span>
captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com has address <span
    class="token number">17.253</span><span class="token number">.73</span><span
    class="token number">.201</span>
captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com has IPv6 address <span
    class="token number">2</span>a01<span class="token punctuation">:</span>b740<span
    class="token punctuation">:</span>a10<span class="token punctuation">:</span><span
    class="token class-name static-context">f000</span><span
    class="token operator">::</span><span class="token number">199</span>
captive<span class="token operator">.</span>g<span
    class="token operator">.</span>aaplimg<span class="token operator">.</span>com has IPv6 address <span
    class="token number">2</span>a01<span class="token punctuation">:</span>b740<span
    class="token punctuation">:</span>a10<span class="token punctuation">:</span><span
    class="token class-name static-context">f100</span><span
    class="token operator">::</span><span class="token number">210</span></code></pre>
    <p>Note that on the first run the ipv4 address from the interface is
      correctly retrieved, however on the second run it appears that the
      IP for an alias is not retrieved, but the address for A record to
      which the alias resolves is actually retrieved - and that's the
      real IP address. This then breaks the resolution to my captive
      portal.<br>
      <br>
      Whereas If I use `host-record=captive.apple.com,100.104.103.1`
      instead, the IP address retrieved is deterministic and is indeed
      `100.104.103.1`. So this seems to be working as I'd expect,
      however it has the downside that I have to specify the IP address
      manually.<br>
      <br>
      Is this expected behaviour or is this a bug? I tried looking
      through the documentation and even `dnsmasq`code briefly, but I
      unfortunately couldn't determine that.</p>
    <p></p>
  </body>
</html>