mirror of
				https://github.com/bklang/ldap2dns.git
				synced 2025-10-30 23:53:12 -04:00 
			
		
		
		
	+ Changed default location of ldap.conf to /etc/ldap.conf + Added note on potential security vulns in deprecated/webadmin to README + Change port declarations and format strings from int to unsigned short to match standards + Updated doc/README.html git-svn-id: https://svn.alkaloid.net/gpl/ldap2dns/trunk@216 06cd67b6-e706-0410-b29e-9de616bca6e9
		
			
				
	
	
		
			738 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			738 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 | |
| "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -->
 | |
| <!-- <html><title>ldap2dns</title>
 | |
| <body> -->
 | |
| <div id="project">
 | |
| <script src="/toc.js" type="text/javascript"></script>
 | |
| <h1 align="center">LDAP to DNS gateway</h1>
 | |
| <p style="font-size: 14px"><b>ldap2dns</b> is a program to read DNS (Domain Name Service)
 | |
| records from an LDAP directory and format them into flat files suitable for TinyDNS (or Bind).</p>
 | |
| <p><b>ldap2dns</b> reduces all kind of administration overhead: No
 | |
| more flat file editing, no more zone file editing. After having
 | |
| installed <b>ldap2dns</b>, the administrator only has to access the
 | |
| LDAP directory.<br />
 | |
| Optionally access control can be configured for each zone, GUIs can
 | |
| be more easily implemented, and add all other kind of zone and resource
 | |
| record information can be managed without interfering with the DNS server.<br />
 | |
| <b>ldap2dns</b> is designed to write ASCII data files used by
 | |
| <a href="http://cr.yp.to/djbdns/tinydns.html"><i>tinydns</i></a> from the <a href="http://cr.yp.to/"><i>djbdns</i></a> package, but also may be used
 | |
| to write .db-files used by <i>named</i> as found in the <i>BIND</i>
 | |
| package.</p>
 | |
| 
 | |
| 
 | |
| <div id="toc"></div>
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('Introduction', 'Introduction'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Introduction</h3>
 | |
| </noscript>
 | |
| Often it is desirable to store DNS information in a database rather
 | |
| than in flat text files. This can greatly help to reduce
 | |
| administration overhead since associate information such as billing
 | |
| contact, account management, etc. can be stored and processed
 | |
| inside the same database. Also due to the nature of DNS,
 | |
| information must be stored redundantly on two or more hosts. The
 | |
| classical data replication through zone transfer is unreliable,
 | |
| insecure and difficult to administer.<br />
 | |
| To solve this problem some proprietary attempts have been proposed
 | |
| to store DNS information in relational databases. The nature of
 | |
| DNS, however, is hierarchical and such should the database be.
 | |
| Using a relational database to store DNS information is
 | |
| undesirable, because it becomes difficult to store free form
 | |
| information. Within a hierachical data scheme, the administrator
 | |
| might define more than one IP-address for each canonical name. To
 | |
| implement such a feature in a relational database without breaking
 | |
| the normalization rules, one would have to add another table.<br />
 | |
| One of the most widely spread hierarchical database protocols is
 | |
| LDAP. <b>ldap2dns</b> retrieves DNS information stored in an LDAP
 | |
| directory service and generates a file suitable for
 | |
| name-servers.<br />
 | |
| Actually the most widely spread name-servers <a href="http://www.isc.org/products/BIND/">named</a> and <a href="http://cr.yp.to/djbdns/tinydns.html">tinydns</a> are supported.
 | |
| 
 | |
| <b>ldap2dns</b> specially has been designed to work with tinydns
 | |
| and is the favored name server daemon for the author of this
 | |
| program. <b>ldap2dns</b> can also generate files suitable for
 | |
| <i>named</i> version 8, but this feature is not well supported.
 | |
| There is a <a href="http://www.alternic.org/drafts/drafts-m-n/draft-miller-dns-ldap-schema-00.txt">
 | |
| RFC</a> for a format description how to store DNS information in
 | |
| LDAP. This paper a draft RFC which expired in February 1999, looks
 | |
| as if it has been specially designed to be used by <i>named</i>.
 | |
| This scheme does not have strict attribute-value-pair mapping,
 | |
| making it difficult to be used by user interfaces. It also lacks of
 | |
| an implementation (or I have never heard of any).<br />
 | |
| Since <i>tinydns</i> is going another descriptive way. Therefore I
 | |
| implemented a similar object-scheme more suitable for <i>tinydns</i>.
 | |
| <br />
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('Quickstart', 'Quickstart'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Installation</h3>
 | |
| </noscript>
 | |
| <ul>
 | |
| <li>Install an LDAP server such as <a href="www.openldap.org">openldap</a>. Other LDAP implementations may
 | |
| work but have not been tested. Also install the development
 | |
| libraries and include files.</li>
 | |
| <li>Install <a href="http://cr.yp.to/djbdns.html">djbdns</a> or if
 | |
| you really have to, go with BIND.<br />
 | |
| I suggest to install <i>tinydns</i> included in the <b>djbdns</b>
 | |
| 
 | |
| package, because it is safer, but You may have reasons why You want
 | |
| to use BIND.</li>
 | |
| <li>Install <b>ldap2dns</b><br />
 | |
| Unpack the package and build it:
 | |
| <pre>
 | |
| $ gzcat ldap2dns.tar.gz | tar x
 | |
| $ cd ldap2dns-version
 | |
| $ make
 | |
| $ make install
 | |
| </pre>
 | |
| Copy the file <i>ldap2dns.schema</i> into the directory
 | |
| /etc/openldap/schema. Add the following
 | |
| line to Your slapd.conf file:<br />
 | |
| <pre>
 | |
| include         /etc/openldap/schema/ldap2dns.schema
 | |
| </pre>
 | |
| Now restart your LDAP server.</li>
 | |
| <br />
 | |
| <i>Note: If you are running OpenLDAP 2.0 or earlier look for appropriate
 | |
| schema files for your version in the <b>deprecated/</b> subdirectory.  These
 | |
| files are known to work as of ldap2dns 0.3.5 but are no longer supported for future
 | |
| feature updates.</i><br />
 | |
| <br />
 | |
| <li>Start to populate your LDAP server with DNS information. As a
 | |
| first test do
 | |
| <pre>
 | |
| $ ldapadd -D "<i>binddn</i>" -w <i>password</i> < example.ldif
 | |
| </pre>
 | |
| Replace 'myorg' and 'binddn' with whatever is appropriate on Your
 | |
| system. Start a search and see if something was added
 | |
| <pre>
 | |
| $ ldapsearch -D "<i>binddn</i>" "objectclass=dnsrrset"
 | |
| </pre></li>
 | |
| <li>Test <b>ldap2dns</b>
 | |
| <pre>
 | |
| $ ./ldap2dns -D "<i>binddn</i>" [ -b "<i>searchbase</i>" ] [ -w <i>passwd</i> ] -o data -o db -L
 | |
| </pre>
 | |
| This should create a 'data' file, a 'corp.local.db' file and should
 | |
| print the DNS content.<br />
 | |
| Note: The <i>data</i> file is text data which can be processed with
 | |
| <b>tinydns-data</b>. <i>corp.local.db</i> is the file as used by
 | |
| <b>named</b>. If You are using bind, You also have to adopt the
 | |
| file <i>/etc/named.conf</i> and You have to restart named.</li>
 | |
| 
 | |
| </ul>
 | |
| <br />
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('Configuration', 'Configuration'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Configuration</h3>
 | |
| </noscript>
 | |
| Two object-classes have been defined.
 | |
| <em>DNSzone</em> stores all the information to define a DNS zone,
 | |
| such as the SOA (Start Of Authority), serial numbers etc.
 | |
| <em>DNSrrset</em> is used to store the information for a single
 | |
| resource record, such as the domain name, IP-addresses, class and
 | |
| type.<br />
 | |
| Here are the tables:
 | |
| <h4>DNSzone</h4>
 | |
| This object-class represents a DNS zone. It is the container for
 | |
| all the resource records within a zone. Zones can be primary or
 | |
| secondary. If used in conjunction with <i>tinydns</i> zones are
 | |
| always primary. Secondary zones don't make sense anyway! In
 | |
| addition to being a container, the zone object has attributes
 | |
| related to the management of the zone. These include the zone's SOA
 | |
| information. Each zone-object can have none to many children of
 | |
| class <b>DNSrrset</b>.<br />
 | |
| 
 | |
| <table bgcolor="#EEEEEE">
 | |
| <tr>
 | |
| <th>ATTRIBUTE</th>
 | |
| <th>VALUE</th>
 | |
| <th>Comment</th>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>objectclass</td>
 | |
| <td>DNSzone</td>
 | |
| <td>required</td>
 | |
| </tr>
 | |
| 
 | |
| <tr>
 | |
| <td>cn</td>
 | |
| <td><i>common name</i></td>
 | |
| <td>required</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSzonename</td>
 | |
| <td><i>Name of the zone</i></td>
 | |
| <td>required, multivalued</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 
 | |
| <td>DNSserial</td>
 | |
| <td><i>Serial number of SOA</i></td>
 | |
| <td>optional</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSrefresh</td>
 | |
| <td><i>Refresh time of SOA</i></td>
 | |
| <td>optional, only used for zone transfers</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSretry</td>
 | |
| 
 | |
| <td><i>Retry time of SOA</i></td>
 | |
| <td>optional, only used for zone transfers</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSexpire</td>
 | |
| <td><i>Expire time of SOA</i></td>
 | |
| <td>optional, only used for zone transfers</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSminimum</td>
 | |
| <td><i>Minimum time to live</i></td>
 | |
| 
 | |
| <td>optional, only used for zone transfers</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSadminmailbox</td>
 | |
| <td><i>Hostmaster's contact address</i></td>
 | |
| <td>optional</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSzonemaster</td>
 | |
| <td><i>Primary nameserver for this zone</i></td>
 | |
| <td>optional</td>
 | |
| 
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNStype</td>
 | |
| <td>SOA</td>
 | |
| <td>must be SOA</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSclass</td>
 | |
| <td>IN</td>
 | |
| <td>must be IN</td>
 | |
| </tr>
 | |
| 
 | |
| <tr>
 | |
| <td>DNSttl</td>
 | |
| <td><i>time to live</i></td>
 | |
| <td>optional, only used with tinydns</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNStimestamp</td>
 | |
| <td><i>timestamp</i></td>
 | |
| <td>optional, only used with tinydns</td>
 | |
| </tr>
 | |
| </table>
 | |
| 
 | |
| <ul>
 | |
| <li><b>DNSzonename:</b> This field is required to describe the
 | |
| zone's domain name, for instance myorg.com. More than one
 | |
| <b>DNSzonename</b> my be specified for a <b>DNSzone</b> so that the
 | |
| same host is accessable with different zonenames.</li>
 | |
| <li><b>DNSserial:</b> This is the serial number as used for BIND's
 | |
| zone transfers. Here it is used to inform <b>ldap2dns</b> that it
 | |
| has to rebuild its data-file. Without increasing the serial number
 | |
| 
 | |
| <b>ldap2dns</b> will ignore all modifications until it is
 | |
| restarted.</li>
 | |
| <li><b>DNSrefresh, DNSretry, DNSexpire, DNSminimum:</b> You may
 | |
| safly ignore these numbers if You don't do zone-transfers. Since
 | |
| Your secondary nameserver will connect to the LDAP server the same
 | |
| way Your primary does, You don't need zone-transfers anyway.</li>
 | |
| <li><b>DNSzonemaster:</b> Here you specify the canonical name of
 | |
| your primary nameserver.</li>
 | |
| <li><b>DNSadminmailbox:</b> This is the contact address of Your
 | |
| DNS-administrator. The first dot is converted to a <i>@</i>.</li>
 | |
| 
 | |
| <li><b>DNStype:</b> Must be <b>SOA</b> (Start Of Authority)</li>
 | |
| <li><b>DNSclass:</b> Must be <b>IN</b> (Internet, or do still use
 | |
| Chaosnet?)</li>
 | |
| <li><b>DNSttl:</b> This is the time-to-live value as used by
 | |
| 
 | |
| <b>tinydns</b>. If TTL is nonzero (or omitted), the timestamp is a
 | |
| starting time from whereon this zone's information is valid. If TTL
 | |
| is zero, the timestamp is an ending time (``time to die'').</li>
 | |
| <li><b>DNStimestamp:</b> This is the timestamp as used by
 | |
| <b>tinydns</b>. It represents a string as external TAI64 timestamp,
 | |
| printed as 16 lowercase hexadecimal characters</li>
 | |
| </ul>
 | |
| <h4>DNSrrset</h4>
 | |
| The Resource Record Set represents all of the resource records for
 | |
| a given host name within a zone. It must be a child of a DNSzone
 | |
| object.<br />
 | |
| <table bgcolor="#EEEEEE">
 | |
| <tr>
 | |
| <th>ATTRIBUTE</th>
 | |
| 
 | |
| <th>VALUE</th>
 | |
| <th>Comment</th>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>objectclass</td>
 | |
| <td>DNSrrset</td>
 | |
| <td>required</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>cn</td>
 | |
| <td><i>common name</i></td>
 | |
| 
 | |
| <td>required</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSdomainname</td>
 | |
| <td><i>Name of this record</i></td>
 | |
| <td>optional, relative to zonename</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSipaddr</td>
 | |
| <td><i>IP address</i></td>
 | |
| <td>optional, mutivalued</td>
 | |
| 
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNScname</td>
 | |
| <td><i>Canonical name</i></td>
 | |
| <td>optional, without ending dot relative to zonename</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSpreference</td>
 | |
| <td><i>integer</i></td>
 | |
| <td>optional, only used for MX records</td>
 | |
| </tr>
 | |
| 
 | |
| <tr>
 | |
| <td>DNStype</td>
 | |
| <td>A, CNAME, NS, MX, PTR or TXT</td>
 | |
| <td>must be any valid record type</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNSclass</td>
 | |
| <td>IN</td>
 | |
| <td>must be IN</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 
 | |
| <td>DNSttl</td>
 | |
| <td><i>time to live</i></td>
 | |
| <td>optional, only used with tinydns</td>
 | |
| </tr>
 | |
| <tr>
 | |
| <td>DNStimestamp</td>
 | |
| <td><i>timestamp</i></td>
 | |
| <td>optional, only used with tinydns</td>
 | |
| </tr>
 | |
| 
 | |
| <tr>
 | |
| <td>DNSsrvpriority</td>
 | |
| <td><i>SRV Priority</i></td>
 | |
| <td>optional, defaults to 0 for <a href="http://www.menandmice.com/online_docs_and_faq/glossary/srv.record.htm">SRV</a> records</td>
 | |
| </tr>
 | |
| 
 | |
| <tr>
 | |
| <td>DNSsrvweight</td>
 | |
| <td><i>SRV Weight</i></td>
 | |
| <td>optional, defaults to 0 for <a href="http://www.menandmice.com/online_docs_and_faq/glossary/srv.record.htm">SRV</a> records</td>
 | |
| </tr>
 | |
| 
 | |
| <tr>
 | |
| <td>DNSsrvport</td>
 | |
| <td><i>SRV Port</i></td>
 | |
| <td>Required for <a href="http://www.menandmice.com/online_docs_and_faq/glossary/srv.record.htm">SRV</a> records</td>
 | |
| </tr>
 | |
| </table>
 | |
| <br />
 | |
| <ul>
 | |
| 
 | |
| <li><b>DNSrrset:</b> This object-class must be a direct child of
 | |
| DNSzone. Its <b>dn</b> should be specified as
 | |
| <pre>
 | |
| cn=<i>domainname</i>,cn=<i>zonename</i>,...
 | |
| </pre></li>
 | |
| <li><b>DNSdomainname</b> This is the partial domain-name, ie. the
 | |
| part in front of the zone-name.</li>
 | |
| 
 | |
| <li><b>DNSipaddr:</b> This specifies the IP-address in dotted
 | |
| format. It can be used for <b>DNSrrset</b>'s of type <b>A, NS,
 | |
| MX</b> or <b>PTR</b>. <b>DNSipaddr</b> is multivalued to specifiy
 | |
| more than one IP-address for a service. If used in
 | |
| <b>DNSrrset</b>'s with <b>DNStype</b> = <b>PTR</b> it overrides the
 | |
| old-fashioned form used in <b>DNSdomainname</b> such as
 | |
| 13.178.23.in-addr.arpa for reverse lookups.</li>
 | |
| 
 | |
| <li><b>DNScname:</b> Whenever there is a mapping of a domain-name
 | |
| to a canonical name, use this attribute. <b>DNScname</b> may be
 | |
| used for <b>DNSrrset</b>'s with <b>DNStype CNAME, NS, MX, PTR or
 | |
| TXT</b>. If the last character of a CNAME is a dot its name is
 | |
| considered absolute. If it does not contain a dot, its name is
 | |
| prepended to the zone-name.</li>
 | |
| <li><b>DNSpreference:</b> This number is the mail-exchange
 | |
| preference as used by BIND.</li>
 | |
| <li><b>DNStype:</b> This must be <b>A, CNAME, NS, MX, PTR</b> or
 | |
| 
 | |
| <b>TXT</b>. It specifies the DNSrrset type.</li>
 | |
| <li><b>DNSclass:</b> Must be <b>IN</b></li>
 | |
| <li><b>DNSttl:</b> This is the time-to-live value as used by
 | |
| <b>tinydns</b>. If TTL is non-zero (or omitted), the time-stamp is
 | |
| a starting time from where-on this zone's information is valid. If
 | |
| TTL is zero, the timestamp is an ending time (``time to
 | |
| die'').</li>
 | |
| <li><b>DNStimestamp:</b> This is the timestamp as used by
 | |
| 
 | |
| <b>tinydns</b>. It represents a string as external TAI64
 | |
| time-stamp, printed as 16 lowercase hexadecimal characters</li>
 | |
| <li><b>DNSsrvpriority:</b> Integer representing the relative priority of this DNS SRV record. See <a href="http://www.menandmice.com/online_docs_and_faq/glossary/srv.record.htm">menandmice.com</a> for more information about DNS SRV records.</li>
 | |
| <li><b>DNSsrvweight:</b> DNS SRV record weight field.  Integer</li>
 | |
| <li><b>DNSsrvport:</b> DNS SRV record port number.  Integer</li>
 | |
| </ul>
 | |
| <br />
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('ldap2dns', 'Usage: Running ldap2dns'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Usage: Running ldap2dns</h3>
 | |
| </noscript>
 | |
| If You are a tinydns user, run <b>ldap2dns</b> in /services/tinydns/root.<br />
 | |
| If You are an openldap user, the command line switches are the same as for ldapsearch
 | |
| or ldapadd.
 | |
| <pre>
 | |
| $ ldap2dns -D "<I>binddn</I>" [ -w <I>passwd</I> ] -b "<I>searchbase</I>" \
 | |
| -o data -e "cd /var/tinydns/root && /usr/bin/tinydns-data"
 | |
| </pre>
 | |
| This generates a data file which is converted into a data.cdb by tinydns-data as
 | |
| soon as ldap2dns detects a modification in the LDAP directory.
 | |
| The password is required if You restrict read queries to authenticated users only.
 | |
| Test with
 | |
| <pre>
 | |
| $ dnsq any corp.local <I>ipaddr</I>
 | |
| </pre>
 | |
| Replace <I>ipaddr</I> with whatever You configured tinydns to listen to.
 | |
| 
 | |
| 
 | |
| If You are a BIND user, run <B>ldap2dns</B> in /var/named with
 | |
| <pre>
 | |
| $ ldap2dns -D "<I>binddn</I>" -w <I>passwd</I> -b "<I>searchbase</I>" \
 | |
| -o db -e "kill -HUP `cat /var/run/named-pid`"
 | |
| </pre>
 | |
| Do not forget to add You primary definition to Your named.boot file.
 | |
| Your named should be restarted automatically as soon as ldap2dns detects a modification
 | |
| in the LDAP directory. If bind is not restarted, do so with
 | |
| <pre>
 | |
| # kill -HUP <I>PID</I>
 | |
| </pre>
 | |
| Now run
 | |
| <pre>
 | |
| $ nslookup - localhost
 | |
| > ns1.corp.local
 | |
| </pre>
 | |
| Note that <B>nslookup</B> only works with <B>tinydns</B> if Your nameserver resolves its IP-address
 | |
| backwards.
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('ldap2dnsd', 'Usage: Running ldap2dnsd'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Usage: Running ldap2dnsd</h3>
 | |
| </noscript>
 | |
| When <b>ldap2dns</b> is invoked as <b>ldap2dnsd</b>, the program
 | |
| starts as backgound-daemon and continuously checks for modifications in the LDAP directory.
 | |
| If the the daemon sees a modification in the <b>DNSserial</b> numbers it updates the data
 | |
| or .db files, depending what kind of output was configured. This check is done about once
 | |
| a minute and is configurable.<br />
 | |
| The command-line options for <b>ldap2dnsd</b> are the same as for <b>ldap2dns</b>.
 | |
| Use the -u option to modify the update interval. You may also use -u on <b>ldap2dns</b>
 | |
| to start as a foreground daemon. This is useful if You want to run <b>ldap2dns</b> from
 | |
| <b><a href="http://cr.yp.to/daemontools.html">daemontools</a></b>.<br />
 | |
| <br />
 | |
| These instructions assume you will be running <b>ldap2dns</b> under
 | |
| <b>daemontools</b>b> and that tinydns is also running under
 | |
| daemontools.  These instructions also assume you are using Dan Bernstein's
 | |
| standard directory locations.  Make sure you change the below examples
 | |
| to match your environment.<br />
 | |
| <br />
 | |
| Start by creating the a non-root user to run your ldap2dns and associated
 | |
| logging mechanism:
 | |
| <pre>
 | |
| # groupadd -r ldap2dns
 | |
| # useradd -r -d /dev/null -s /bin/false -c "ldap2dns Daemon" \
 | |
|  -g ldap2dns ldap2dns
 | |
| # groupadd -r l2dnslog
 | |
| # useradd -r -d /dev/null -s /bin/false -c "ldap2dns Logger" \
 | |
|  -g l2dnslog l2dnslog
 | |
| </pre>
 | |
| <br />
 | |
| Next configure the ldap2dns area to be managed by <b>daemontools</b>.
 | |
| Typically this is <i>/etc/ldap2dns</i>
 | |
| <pre>
 | |
| # cd /etc
 | |
| # ldap2tinydns-conf ldap2dns l2dnslog /etc/ldap2dns /etc/tinydns/root
 | |
| </pre>
 | |
| The syntax is close to tinydns-conf except that you will also need to specify
 | |
| the path to the <i>root</i> directory for tinydns.  This is the directory that
 | |
| holds the <i>data</i> file.<br />
 | |
| <br />
 | |
| Next edit the file <i>/etc/ldap2dns/run</i> and optionally the environment
 | |
| variables in <i>/etc/ldap2dns/env</i> as necessary for your environment.  This
 | |
| may include configuring a base DN, a bind DN, a password, and an interval.<br />
 | |
| <br />
 | |
| When everything is ready configured properly create a symlink from
 | |
| <i>/etc/ldap2dns</i> into <i>/service</i>.  This action will cause
 | |
| <b>daemontools</b> to launch <b>ldap2dns</b>.
 | |
| <pre>
 | |
| # ln -s /etc/ldap2dns /service/ldap2dns
 | |
| </pre>
 | |
| After a few seconds <b>daemontools</b> starts <b>ldap2dnsd</b> which itself generates data
 | |
| files whenever a modification is commited into the LDAP directory.
 | |
| 
 | |
| <b>ldap2dns</b> and <b>ldap2dnsd</b> recognize the following options:
 | |
| <pre>
 | |
| -D <i>binddn</i> specify the distinguished name to bind to the LDAP directory
 | |
| -w <i>bindpasswd</i> use bindpasswd as password for simple authentication
 | |
| -b <i>searchbase</i> use searchbase as starting point for search instead default
 | |
| -o data generate a "data" file to be processed by tinydns-data
 | |
| -o db for each zone generate a "<zonename>.db" file to be used by named
 | |
| -L[<i>filename</i>] print output in LDIF format to [<i>filename</i>] or stdout for reimport
 | |
| -h <i>host</i> specify the hostname of LDAP directory. Default is localhost
 | |
| -p <i>port</i> portnumber to connect to LDAP directory. Defaults is 389
 | |
| -v run in verbose mode
 | |
| -vv even more verbose
 | |
| -V print version and exit
 | |
| -u <i>numsecs</i> update DNS data every numsecs.
 | |
| </pre>
 | |
| <b>ldap2dns</b> and <b>ldap2dnsd</b> recognizes the following environement
 | |
| variables:<br />
 | |
| <b>TINYDNSDIR</b>: Specifies the directory where ldap2dns writes its data
 | |
| file.<br />
 | |
| <b>LDAP2DNS_UPDATE</b>: Specifies the update intervall as the -u command line
 | |
| option would.<br />
 | |
| <b>LDAP2DNS_OUTPUT</b>: Specifies the default output, as the -o command line
 | |
| option would.
 | |
| 
 | |
| <b>ldap2dns</b> and <b>ldap2dnsd</b> use the following parameters from
 | |
| /etc/ldap.conf if not
 | |
| specified on the command line:
 | |
| <b>BASE</b>: The LDAP search base.<br />
 | |
| <b>HOST</b>: The LDAP server.<br />
 | |
| <b>PORT</b>: The LDAP port.
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('ImportingAXFR',
 | |
|     'Importing DNS data from an existing AXFR capable (BIND) name server'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Importing DNS data from an existing AXFR capable (BIND) name server</h3>
 | |
| </noscript>
 | |
| A perl-script <I>import.pl</I> is contained in this package. Edit the first
 | |
| lines of the script to conform to Your configuration.
 | |
| If You have installed the Perl packages Net::LDAP and Net::DNS
 | |
| skip the following lines, otherwise do
 | |
| <pre>
 | |
| # perl -MCPAN -e 'shell'
 | |
| (...snip...)
 | |
| > install Net::DNS
 | |
| > install Net::LDAP
 | |
| </pre>
 | |
| Now check that Your nameserver allows zone transfers to your host and run the import script:
 | |
| <pre>
 | |
| $ echo 'primary mydomain.org ' | ./import.pl
 | |
| </pre>
 | |
| for a single domain or
 | |
| <pre>
 | |
| # cat named.boot | ./import.pl
 | |
| </pre>
 | |
| to populate Your LDAP directory.
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('ImportingTinyDNS',
 | |
|     'Importing DNS data from an existing TinyDNS name server'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Importing DNS data from an existing TinyDNS name server</h3>
 | |
| </noscript>
 | |
| Use the supplied <i>data2ldap.pl</i> in the <i>scripts/</i> directory
 | |
| <pre>
 | |
| $ data2ldap.pl data data.ldif ou=DNS,dc=example,dc=com
 | |
| </pre>
 | |
| More to come...<br />
 | |
| <br />
 | |
| 
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('Roadmap', 'Roadmap'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Roadmap</h3>
 | |
| </noscript>
 | |
| A browser-based administration toolkit, which connects directly
 | |
| to the LDAP-directory service.
 | |
| 
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('ToDo', 'To Do'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>To Do</h3>
 | |
| </noscript>
 | |
| <ul>
 | |
| <li>Write a man page.</li>
 | |
| <li>named.conf should be created automatically.</li>
 | |
| </ul>
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('Copyright', 'Copyright and Disclaimer'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Copyright and Disclaimer</h3>
 | |
| </noscript>
 | |
| This program is Copyright 1999-2004 Jacob Rief and 2005 Ben Klang<br />
 | |
| This program is licensed under the GPL version 2<br />
 | |
| ldap2dns was originally written by Jacob Rief (jacob.rief@tiscover.com).  It is now maintained by Ben Klang (ben@alkaloid.net).  If you run <B>ldap2dns</B> on a production nameserver, please send the maintainer an email and mention on what OS and with which nameserver you do so.<br />
 | |
| <br />
 | |
| <b><i>Disclaimer:</i> The author and all contributors disclaim any kind of warranty or liability or suitability for any purpose.  By running this software you agree that you are a competent systems administrator and will bear the responsibility for your actions.</b><br />
 | |
| 
 | |
| <script language="JavaScript" type="text/javascript">
 | |
| <!--
 | |
| document.write(addEntry('Download', 'Download'));
 | |
| // -->
 | |
| </script>
 | |
| <noscript>
 | |
| <h3>Download</h3>
 | |
| </noscript>
 | |
| <h4>Latest Release:
 | |
| <a href="/dist/ldap2dns/ldap2dns-0.3.6.tar.gz">ldap2dns-0.3.6</a>
 | |
| </h4>
 | |
| Released December 16, 2005 | 
 | |
| <a
 | |
| href="http://svn.alkaloid.net/browse/chora/co.php?f=ldap2dns/tags/0.3.6/
 | |
| ChangeLog">ChangeLog</a> | <a
 | |
| href="/dist/ldap2dns/ldap2dns-0.3.6.tar.gz">Download (tarball)</a>
 | |
| <h4>Old Releases:</h4>
 | |
| <table border=2 cellpadding=4 align="center">
 | |
|     <tr align="center">
 | |
|         <th>Version</th>
 | |
|         <th>tar.gz</th>
 | |
|         <th>rpm</th>
 | |
|         <th>srpm</th>
 | |
|         <th>Released</th>
 | |
|     </tr>
 | |
|     <tr align="center">
 | |
|         <td>0.1.1</td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.1.1.tar.gz">ldap2dns</a></td>
 | |
|         <td></td>
 | |
|         <td></td>
 | |
|         <td>2000-Sep-19</td>
 | |
|     </tr>
 | |
|     <tr align="center">
 | |
|         <td>0.1.2</td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.1.2.tar.gz">ldap2dns</a></td>
 | |
|         <td></td>
 | |
|         <td></td>
 | |
|         <td>2000-Sep-22</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.1.3</td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.1.3.tar.gz">ldap2dns</a></td>
 | |
|         <td></td>
 | |
|         <td></td>
 | |
|         <td>2000-Sep-28</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.1.4</td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.1.4.tar.gz">ldap2dns</a></td>
 | |
|         <td></td>
 | |
|         <td></td>
 | |
|         <td>2000-Oct-04</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.2.0</td>
 | |
|         <td><a href="ldap2dns-0.2.0.tar.gz">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.0-1.i386.rpm">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.0-1.src.rpm">ldap2dns</a></td>
 | |
|         <td>2000-Dec-14</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.2.2</td>
 | |
|         <td><a href="ldap2dns-0.2.2.tar.gz">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.2-2.i386.rpm">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.2-2.src.rpm">ldap2dns</a></td>
 | |
|         <td>2001-Feb-16</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.2.3</td>
 | |
|         <td><a href="ldap2dns-0.2.3.tar.gz">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.3-1.i386.rpm">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.3-1.src.rpm">ldap2dns</a></td>
 | |
|         <td>2001-Mar-23</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.2.4</td>
 | |
|         <td><a href="ldap2dns-0.2.4.tar.gz">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.4-1.i386.rpm">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.4-1.src.rpm">ldap2dns</a></td>
 | |
|         <td>2001-May-08</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.2.5</td>
 | |
|         <td><a href="ldap2dns-0.2.5.tar.gz">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.5-1.i386.rpm">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.5-1.src.rpm">ldap2dns</a></td>
 | |
|         <td>2001-Jun-27</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.2.6</td>
 | |
|         <td><a href="ldap2dns-0.2.6.tar.gz">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.6-1.i386.rpm">ldap2dns</a></td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.2.6-1.src.rpm">ldap2dns</a></td>
 | |
|         <td>2001-Aug-09</td>
 | |
|     </tr>
 | |
|     <tr align=center>
 | |
|         <td>0.3.4</td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.3.4.tar.gz">ldap2dns</a></td>
 | |
|         <td></td>
 | |
|         <td></td>
 | |
|         <td>2004-Apr-07</td>
 | |
|     </tr>
 | |
|     <tr align="center">
 | |
|         <td>0.3.5</td>
 | |
|         <td><a href="/dist/ldap2dns/ldap2dns-0.3.5.tar.gz">ldap2dns</a></td>
 | |
|         <td></td>
 | |
|         <td></td>
 | |
|         <td>2005-Nov-30</td>
 | |
|     </tr>
 | |
| </table>
 | |
| 
 | |
| <h4>Developer Access:</h4>
 | |
| The bleeding edge of ldap2dns is in the Alkaloid Networks subversion repository found at <a href="https://svn.alkaloid.net/gpl/ldap2dns/trunk">https://svn.alkaloid.net/gpl/ldap2dns/trunk</a>.  Following the Subversion standard, releases are kept in /gpl/ldap2dns/tags and branches are in /gpl/ldap2dns/branches.<br />
 | |
| <br />
 | |
| </div>
 | |
| <!-- </body>
 | |
| </html> --> |