I don't suppose anyone's ever tried using Plan 9's DNS server with Active 
Directory?  (as the primary DNS server)
Appologies in advance if anything below sounds overly confused, and for trying 
this in the first place!!

There are a few articles around indicating that it's possible to host AD with 
3rd-party DNS servers, so long as you create the necessary SRV records.  
Indeed, I got quite far, but some things just aren't right.  In particular, I'm 
concerned about PTR records and reverse lookups.  A post on this list by Geoff 
says that if you specify an in-addr.arpa zone, the correct PTR's will get 
generated automatically.  How does it know which PTR to generate, if I have 
more than one dom= pointing to the same ip?  The MS DNS seems to use more than 
one A record for a host (ie, it's regular hostname, a guid host name, and 
sometimes a "(same as parent)" record allowing resolution of a zone name to a 
specific host), but the PTR in the reverse lookup zone always points back to 
the "normal" hostname.  Here's some output from nslookup from a Windows system 
talking to the Plan 9 DNS:

C:\>nslookup -type=srv _kpasswd._udp.testdom.test.local
Server:  ns2.test.local
Address:  10.0.0.102

_kpasswd._udp.testdom.test.local  SRV service location:
          priority        = 0
          weight          = 0
          port            = 464
          svr hostname    = 
dc1\.testdom\.test\.local._kpasswd._udp.testdom.test.local

*** Error: record size incorrect (39 != 37)

*** ns2.test.local can't find _kpasswd._udp: server failed

C:\>nslookup -type=srv _kpasswd._udp
Server:  ns2.test.local
Address:  10.0.0.102

*** ns2.test.local can't find _kpasswd._udp: Server failed

C:\>

The equivalent query run through ndb/dnsquery on Plan 9 works correctly.  On 
some queries, I get "Invalid Name at offset 72!" on the "svr hostname" line.  I 
suspect this is part of the problem.  Additionally, the short form 
"_kpasswd._tcp" fails, but specifying the fully-qualified name works.  This 
behavior is also seen on the Plan 9 host, where the short lookup also fails.

Below is most of my ridiculously complicated /lib/ndb/local, in the hopes that 
someone might spot anything that looks fishy.  You can see where I have a CNAME 
to testdom.test.local, which should probably be an A name...  Many thanks in 
advance!

-Ben



authdom=test.local auth=ns2

ipnet=internal ip=10.0.0.0 ipmask=255.255.0.0
        ipsubmask=255.255.255.0
        dns=ns2.test.local
        #dns=ns1.test.local
        dnsdomain=test.local
        ipgw=10.0.0.1
        authdom=test.local auth=ns2
        
dom=test.local soa=
        refresh=3600 ttl=3600
        ns=ns2.test.local
        #ns=ns1.test.local
        dnsdomain=test.local

dom=0.0.0.10.in-addr.arpa soa=
        refresh=3600 ttl=3600
        ns=ns2.test.local
        #ns=ns1.test.local

#################################################
#
# Active Directory support
# See http://technet.microsoft.com/en-us/library/dd316373.aspx
#
#################################################

#
# Domain Controllers:
#
ip=10.0.0.20 sys=dc1 dom=dc1.testdom.test.local
        ether=
ip=10.0.0.21 sys=dc2 dom=dc2.testdom.test.local
    ether=005056b36086

cname=dc2.testdom.test.local
        dom=testdom.test.local

cname=dc2.testdom.test.local
        dom=8df1c9af-8e80-4263-9a40-a40ad5af728f._msdcs.testdom.test.local

#
# SRV records, etc
#
dom=testdom.test.local soa=
        refresh=3600 ttl=3600
        ns=ns2.test.local
        #ns=ns1.test.local
        dnsdomain=testdom.test.local

dom=_ldap._tcp.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
    srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_kerberos._tcp.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=88
        srv=kfcd2.testdom.test.local pri=1 weight=0 port=88

dom=_kpasswd._udp.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=464
        srv=dc2.testdom.test.local pri=1 weight=0 port=464

dom=_kpasswd._tcp.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=464
        srv=dc2.testdom.test.local pri=1 weight=0 port=464

dom=_ldap._tcp.dc._msdcs.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_ldap._tcp.gc._msdcs.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_ldap._tcp.pdc._msdcs.testdom.test.local soa=
        srv=dc2.testdom.test.local pri=0 weight=0 port=389

dom=_ldap._tcp.Default-Site._sites.gc._msdcs.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_kerberos._tcp.dc._msdcs.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=88
        srv=dc2.testdom.test.local pri=1 weight=0 port=88

dom=gc._msdcs.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=3268
        srv=dc2.testdom.test.local pri=1 weight=0 port=3268

dom=_gc._tcp.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=3268
        srv=dc2.testdom.test.local pri=1 weight=0 port=3268

dom=_ldap._tcp.e3510231-4b06-11c1-ab34-01c04dc2ded2.domains._msdcs.testdom.test.local
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_vlmcs._tcp.testdom.test.local soa=
        srv=dc2.testdom.test.local pri=0 weight=0 port=1688

dom=_ldap._tcp.Default-Site._sites.domaindnszones.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_ldap._tcp.domaindnszones.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_ldap._tcp.Default-Site._sites.forestdnszones.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389

dom=_ldap._tcp.forestdnszones.testdom.test.local soa=
        srv=dc1.testdom.test.local pri=0 weight=0 port=389
        srv=dc2.testdom.test.local pri=1 weight=0 port=389



#################################################
#
# End Active Directory Support
#
#################################################


On a side note, I DHCP is provided by isc-dhcpd, and I have the following in 
the configuration, which seems to work:

option domain-search-order code 119 = string;
option domain-search-order "testdom.test.local test.local";

Reply via email to