mirror of
https://github.com/bklang/ldap2dns.git
synced 2025-10-27 14:24:15 -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> --> |