web-dev-qa-db-ja.com

Android dhcpが偽のDNSサーバーを割り当てている

私はWiFiネットワーク上のAndroidデバイスとDNSルックアップで問題を抱えていたので、いくつか掘り下げてみたところ、Androidが表示されるものを割り当てていることがわかりましたDNS1スロットのランダムリンクローカルipv6アドレスになります。

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

これは奇妙だと思ったので、dhcpサーバーからtcpダンプを実行することにし、次の結果を得ました。

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

ご覧のとおり、私はipv6リンクローカルをクライアントにまったく宣伝していません。影響を受けるデバイスはAndroidだけのようです。Linuxデスクトップ、OSXラップトップ、iPhone、すべてのようです。うまく動作します。

通常、ipv6 link-localでのルックアップの失敗では、AndroidはDNS2レコードに移動し、アドバタイズされたDNSサーバーとして表示されると想定します。しかし、 WiFiに接続している間、電話からのすべてのDNSクエリが失敗するため。

サーバー構成にDHCPオプションを設定して、Androidを自殺するのではなく、これをうまく処理するように指示する必要があるかどうか疑問に思っていました。何度もグーグルした後、人を見つけることができませんでした。私のネットワークと同じ問題があるので、この時点でそれは私のサーバー構成であると想定しています。

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

より多くの静的ホストを定義していますが、それらは実質的に同一であり、違いはIPとイーサネットアドレスだけです。

3
John A

問題は、ルーターがIPv6自動構成オプションを使用して不正なDNSサーバーをブロードキャストしていたことのようです。ルーターでIPv6を無効にすると、問題が修正されたようです。これは、ISPがIPv6をまだサポートしていないため問題ありません。

0
John A