Android DHCP weist einen falschen DNS-Server zu

Android DHCP weist einen falschen DNS-Server zu

Ich hatte Probleme mit Android-Geräten und DNS-Lookups in meinem WLAN-Netzwerk, also habe ich ein bisschen nachgeforscht und herausgefunden, dass Android dem DNS1-Slot eine scheinbar zufällige Link-Local-IPv6-Adresse zuweist:

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

Das kam mir merkwürdig vor und ich beschloss, einen TCP-Dump von meinem DHCP-Server auszuführen und erhielt folgende Ergebnisse:

# 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"

Wie Sie sehen, mache ich den Clients gegenüber überhaupt nicht auf den lokalen IPv6-Zugriff aufmerksam, und Android scheint das einzige betroffene Gerät zu sein. Linux-Desktops, OSX-Laptops, iPhones – alle scheinen einwandfrei zu funktionieren.

Normalerweise würde ich bei einem Lookup-Fehler mit dem lokalen IPv6-Link davon ausgehen, dass Android zum DNS2-Eintrag geht, der als mein angekündigter DNS-Server angezeigt wird. Dies scheint jedoch nicht der Fall zu sein, da alle DNS-Abfragen vom Telefon fehlschlagen, während eine Verbindung zum WLAN besteht.

Ich habe mich gefragt, ob es eine DHCP-Option gibt, die ich in meiner Serverkonfiguration festlegen muss, um Android anzuweisen, dies ordnungsgemäß zu handhaben, anstatt sich selbst zu zerstören. Nach langem Googeln konnte ich keine Leute mit demselben Problem wie mein Netzwerk finden, daher gehe ich an diesem Punkt davon aus, dass es an meiner Serverkonfiguration liegt.

# 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";
  }
}

Ich habe mehrere statische Hosts definiert, aber sie sind praktisch identisch, die einzigen Unterschiede sind IPs und Ethernet-Adressen.

Antwort1

Das Problem scheint darin zu liegen, dass mein Router mithilfe der IPv6-Autokonfigurationsoptionen einen fehlerhaften DNS-Server gesendet hat. Das Deaktivieren von IPv6 auf meinem Router scheint das Problem behoben zu haben, was in Ordnung ist, da mein ISP IPv6 noch nicht unterstützt.

verwandte Informationen