<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>No, the point of IPv6 is more addresses.  Then the privacy
      advocates and DHCP haters<br>
      jumped onboard and made IPv6 very complicated.  For DHCPv6, most
      devices don't<br>
      sent the host name.  This makes if very hard to keep DNS updated. 
      However, kudos to<br>
      Microsoft because Windows does send the host name.<br>
      <br>
      Yes, random MAC addresses will lead to problems assigning static
      addresses.  It will<br>
      be impossible to open a port (in-going or out-going) on the
      firewall for a special device.<br>
      <br>
      For IPv4 you can identify a device by host name because most
      devices send it:<br>
      <font color="#804000"><tt>class "identify_by_hostname" {</tt><tt><br>
        </tt><tt>    match option host-name;</tt><tt><br>
        </tt><tt>}</tt><tt><br>
        </tt><tt>subclass "identify_by_hostname"   
          "android-4867fdc048d28c06"                    { ddns-hostname
          "My-eXpro-tablet"; }    # this works</tt><tt><br>
        </tt></font>Just add a fixed-address between the {} to the
      subclass entry if desired.<br>
      <br>
      Who ever comes up with this randomization stuff has obviously
      never been a network administrator.<br>
      <br>
      <br>
      To address Mike's post, shorten your lease times:<br>
      <font color="#804000"><tt>class "mobile_device" {</tt><tt><br>
        </tt><tt>    match if (</tt><tt><br>
        </tt><tt>        option host-name ~~ "dhcpcd"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "android"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "iphone"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "samsung-sm"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "ipod"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "ipad"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "a?p?plewatch"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "nintendo 3ds"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "galaxy-"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "g7-thinq"</tt><tt><br>
        </tt><tt>        or option host-name ~~ "v40-thinq"</tt><tt><br>
        </tt><tt>        or option vendor-class-identifier ~~
          "android-dhcp"</tt><tt><br>
        </tt><tt>    );</tt><tt><br>
        </tt></font><font color="#804000"><tt><font color="#804000"><tt>#
              optional: to make devices unique (for DNS) that have a
              duplicate host name (users haven't changed the default):<br>
                  if (lcase(option host-name) = "iphone")   {
              ddns-hostname = concat("iPhone-", binary-to-ascii(16, 8,
              "", substring(hardware, 4, 3))); }<br>
                  if (lcase(option host-name) = "iphone-2") {
              ddns-hostname = concat("iPhone2-", binary-to-ascii(16, 8,
              "", substring(hardware, 4, 3))); }<br>
                  if (lcase(option host-name) = "iphone-3") {
              ddns-hostname = concat("iPhone3-", binary-to-ascii(16, 8,
              "", substring(hardware, 4, 3))); }<br>
                  if (lcase(option host-name) = "ipod")     {
              ddns-hostname = concat("iPod-", binary-to-ascii(16, 8, "",
              substring(hardware, 4, 3))); }<br>
                  if (lcase(option host-name) = "ipad")     {
              ddns-hostname = concat("iPad-", binary-to-ascii(16, 8, "",
              substring(hardware, 4, 3))); }<br>
                  if ((substring(lcase(option fqdn.hostname), 0, 8) =
              "g7-thinq") or (substring(lcase(option host-name), 0, 8) =
              "g7-thinq")) {<br>
                      ddns-hostname = concat("g7-thinq-",
              binary-to-ascii(16, 8, "", substring(hardware, 4, 3)));<br>
                  }<br>
                  if not ((exists server.ddns-hostname) or (exists
              fqdn.hostname) or (exists host-name)) {<br>
                      if (substring(lcase(option
              vendor-class-identifier), 0, 12) = "android-dhcp") {<br>
                          ddns-hostname = concat("android-dhcp-",
              binary-to-ascii(16, 8, "", substring(hardware, 4, 3)));<br>
                      }<br>
                  }<br>
              }<br>
            </tt></font>class "Other_mobile" {<br>
              match hardware;<br>
              set member_of = "mobile_device";<br>
          }<br>
          subclass "Other_mobile"    1:68:09:ff:49:0a:35;    #
          Brenda's-phone<br>
          subclass "</tt></font><font color="#804000"><tt><font
            color="#804000"><tt>Other_mobile</tt></font>"   
          1:00:aa:f6:01:05:fe     { ddns-hostname "Ricks-phone"; }<br>
          .</tt><tt><br>
        </tt><tt>.</tt><tt><br>
        </tt><tt>subnet 192.168.99.0 netmask 255.255.255.0 {</tt><tt><br>
        </tt><tt>.</tt><tt><br>
        </tt><tt>.</tt><tt><br>
        </tt><tt># ------------------</tt><tt><br>
        </tt><tt>    pool {</tt><tt><br>
        </tt><tt>        allow members of "mobile_device";</tt><tt><br>
        </tt><tt>        allow members of "Other_mobile";</tt><tt><br>
        </tt><tt><br>
        </tt><tt>        deny dynamic bootp clients;</tt><tt><br>
          <br>
        </tt><tt>        adaptive-lease-time-threshold       75;       #
          use min-lease-time when pool is above this percent</tt><tt><br>
        </tt></font><font color="#804000"><tt><font color="#804000"><tt>     
                min-lease-time            3600;     # 1 hour<br>
                      default-lease-time        14400;    # 4 hours</tt><tt><br>
            </tt><tt>        max-lease-time            28800;    # 8
              hours<br>
            </tt><tt><br>
            </tt></font>        range 192.168.99.128   
          192.168.99.191;    # </tt></font><font color="#804000"><tt><font
            color="#804000"><tt>192.168.99.128</tt></font>/26 (64
          addresses)</tt><tt><br>
        </tt><tt>    }</tt><tt><br>
        </tt><tt># ------------------</tt><tt><br>
        </tt><tt>.</tt><tt><br>
        </tt><tt>.</tt><tt><br>
        </tt><tt>}</tt><tt><br>
        </tt></font>Note the <b>adaptive-lease-time-threshold</b>
      statement.<br>
      <br>
      Bill<br>
      <br>
    </p>
    <div class="moz-cite-prefix">On 7/24/2020 9:46 PM, Joshua Stark
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:060f1dcf-0374-3612-fafc-76b735f064a1@gmail.com"><font
        size="-1">But was that not the point of IPv6 - totally random<br>
      </font></blockquote>
  </body>
</html>