Android dhcp asignando un servidor DNS falso

Android dhcp asignando un servidor DNS falso

He tenido problemas con los dispositivos Android y las búsquedas de DNS en mi red WiFi, así que investigué un poco y descubrí que Android está asignando lo que parece ser una dirección IPv6 de enlace local aleatoria en la ranura DNS1:

shell@htc_m8wl:/ $ getprop net.dns1                                            
fe80::3246:9aff:fe00:3108
shell@htc_m8wl:/ $ getprop net.dns2                                            
192.168.55.5

Pensé que esto era extraño, así que decidí hacer un volcado tcp desde mi servidor dhcp y obtuve estos resultados:

# tcpdump -vv -n -i epair2b port bootps or port bootpc    
18:18:13.285502 IP (tos 0x0, ttl 64, id 49166, offset 0, flags [none], proto UDP (17), length 342)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 00:ee:bd:c1:7e:db, length 314, xid 0xdb33bc98, Flags [none] (0x0000)
      Client-Ethernet-Address 00:ee:bd:c1:7e:db
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: Request
        Client-ID Option 61, length 7: ether 00:ee:bd:c1:7e:db
        Requested-IP Option 50, length 4: 192.168.55.79
        MSZ Option 57, length 2: 1500
        Vendor-Class Option 60, length 12: "dhcpcd-5.5.6"
        Hostname Option 12, length 24: "android-a440c6464dfcde43"
        Parameter-Request Option 55, length 9: 
          Subnet-Mask, Static-Route, Default-Gateway, Domain-Name-Server
          Domain-Name, BR, Lease-Time, RN
          RB
18:18:13.285886 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
192.168.55.5.67 > 192.168.55.79.68: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0xdb33bc98, Flags [none] (0x0000)
      Your-IP 192.168.55.79
      Client-Ethernet-Address 00:ee:bd:c1:7e:db
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: ACK
        Server-ID Option 54, length 4: 192.168.55.5
        Lease-Time Option 51, length 4: 60000
        Subnet-Mask Option 1, length 4: 255.255.255.0
        Default-Gateway Option 3, length 4: 192.168.55.1
        Domain-Name-Server Option 6, length 4: 192.168.55.5
        Domain-Name Option 15, length 23: "local.my.domain"

Como puede ver, no estoy anunciando el enlace local ipv6 a los clientes, y Android parece ser el único dispositivo afectado. Las computadoras de escritorio Linux, las computadoras portátiles OSX y los iPhone parecen funcionar bien.

Normalmente, asumiría que, ante un error de búsqueda con el enlace local ipv6, Android iría al registro DNS2, que muestra como mi servidor DNS anunciado. Pero no parece que todas las consultas de DNS desde el teléfono fallen mientras está conectado al WiFi.

Me preguntaba si había una opción de DHCP que debo configurar en la configuración de mi servidor para decirle a Android que maneje esto bien en lugar de suicidarse. Después de mucho buscar en Google, no he podido encontrar personas con el mismo problema que mi red, así que asumo en este punto que es la configuración de mi servidor.

# dhcpd.conf                                                                                                                                                                                                             
option domain-name "local.my.domain";
option domain-name-servers 192.168.55.5;

include "/etc/namedb/dhcpupdate.key";

ddns-updates on;
ddns-update-style interim;
ignore client-updates;
update-static-leases on;

authoritative;

zone local.my.domain. {
    primary 127.0.0.1;
    key "dhcpupdate";
}
zone 55.168.192.in-addr.arpa. {
    primary 192.168.55.5;
    key "dhcpupdate";
}

subnet 192.168.55.0 netmask 255.255.255.0 {
  range 192.168.55.100 192.168.55.240;
  default-lease-time 60000;
  max-lease-time 720000;
  option routers 192.168.55.1;
  ddns-domainname "local.my.domain.";
  ddns-rev-domainname "55.168.192.in-addr.arpa.";
}

group {
  option domain-name "local.my.domain";
  ddns-domainname "local.my.domain.";
  ddns-rev-domainname "55.168.192.in-addr.arpa.";

  # Static hosts
  host john-phone {
    hardware ethernet 00:ee:bd:c1:7e:db;
    fixed-address 192.168.55.79;
    ddns-hostname "john-phone";
    option host-name "john-phone";
  }
}

Tengo más hosts estáticos definidos, pero son prácticamente idénticos, las únicas diferencias son las direcciones IP y ethernet.

Respuesta1

El problema parece ser que mi enrutador estaba transmitiendo un servidor DNS incorrecto usando las opciones de configuración automática de IPv6. Deshabilitar IPv6 en mi enrutador parece haber solucionado el problema, lo cual está bien porque mi ISP aún no admite IPv6.

información relacionada