가짜 DNS 서버를 할당하는 Android dhcp

가짜 DNS 서버를 할당하는 Android dhcp

Wi-Fi 네트워크에서 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 등이 모두 잘 작동하는 것 같습니다.

일반적으로 나는 안드로이드가 DNS2 레코드로 이동하여 광고된 DNS 서버로 표시되는 ipv6 링크 로컬로 조회가 실패한다고 가정합니다. 그러나 Wi-Fi에 연결되어 있는 동안 전화의 모든 DNS 쿼리가 실패하는 것처럼 보이지는 않습니다.

안드로이드가 스스로 죽이는 대신 이를 훌륭하게 처리하도록 지시하기 위해 서버 구성에 설정해야 하는 DHCP 옵션이 있는지 궁금합니다. 많은 인터넷 검색 후에도 내 네트워크와 동일한 문제가 있는 사람을 찾을 수 없었으므로 현재로서는 이것이 내 서버 구성이라고 가정합니다.

# 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와 이더넷 주소만 다릅니다.

답변1

문제는 내 라우터가 IPv6 자동 구성 옵션을 사용하여 잘못된 DNS 서버를 브로드캐스트하고 있었던 것 같습니다. 내 라우터에서 IPv6를 비활성화하면 문제가 해결된 것 같습니다. 내 ISP가 아직 IPv6를 지원하지 않기 때문에 괜찮습니다.

관련 정보