Net::DNS - Perl DNS Resolver Module =================================== TABLE OF CONTENTS ----------------- 1. Description 2. Availability 3. Prerequisites 4. Installation 5. Running Tests 6. Demonstration Scripts 7. Dynamic Updates 8. Bugs 9. Copyright 10. Author Information 1. DESCRIPTION -------------- Net::DNS is a Perl interface to the DNS resolver. It allows the programmer to perform any type of DNS query from a Perl script. For details and examples, please read the Net::DNS manual page. To read about the latest features, see the Changes file. To find out about known bugs and to see what's planned for future versions, see the TODO file. As of version 0.02, Net::DNS is written entirely in Perl. Version 0.01 was written mostly in C and used the system's resolver. The Perl version runs quite a bit slower, but considering that the network can be a serious bottleneck when making DNS queries, the speed difference may not really matter in most cases. However, future versions may contain some C for those who wish to link against libresolv or libbind. The author invites feedback on the module, particularly at this early stage of its development. If there's something you'd like to have added, please let me know. If you find a bug, please send me the information described in the BUGS section below. 2. AVAILABILITY --------------- You can get the latest version of Net::DNS from the Comprehensive Perl Archive Network (CPAN) or from the author's homepage: http://www.perl.org/CPAN/modules/by-module/Net/ http://www.dimensional.com/~mfuhr/perldns/ 3. PREREQUISITES ---------------- Net::DNS requires the following: Perl 5.003 IO-1.15 Net::DNS may work with earlier versions of the above, but the author hasn't tested this. The latest versions can be obtained from CPAN: http://www.perl.org/CPAN/ Some of the demonstration scripts may require additional modules; see demo/README for details. 4. INSTALLATION --------------- Please install any modules mentioned in the PREREQUISITES section above. If you don't, Net::DNS won't work. When you run "perl Makefile.PL", Perl should complain if any of the required modules are missing. To build this module, run the following commands: perl Makefile.PL make make test make install 5. RUNNING TESTS ---------------- There aren't many tests in this version, although there are more than in previous versions. Part of the problem is creating a test suite to work on systems both with and without Internet connectivity. Future versions of this module may have more tests but will probably require some site-specific configuration before running them. The author does run additional tests against customized zone data on a private nameserver, but these tests aren't included in the distribution. 6. DEMONSTRATION SCRIPTS ------------------------ There are a few demonstration scripts in the demo/ directory. See demo/README for more information. The author would be happy to include any contributed scripts in future versions of this module. All I ask is that they be documented (preferably using POD) and that the contributor's name and contact information be mentioned somewhere. 7. DYNAMIC UPDATES ------------------ *** WARNING: THIS CODE IS NOT READY FOR PRODUCTION USE *** Net::DNS now supports DNS dynamic updates as documented in RFC 2136; for more information and an example, please see the Net::DNS::Update manual page. The dynamic update code is still under development but I've decided to make it available to those who'd like to try it; please see the TODO file for some of the things I still need to work on. At this time, I recommend that you don't use Net::DNS to maintain a production nameserver via dynamic updates. Please note that there are some bugs in the BIND 8.1-REL nameserver that can cause it to dump core when receiving dynamic updates, so if you have problems using Net::DNS, that might be the cause. I've reported these bugs to bind-bugs@isc.org and they've said they'll fix them in a future version of BIND. A future version of Net::DNS will simplify the creation of update packets, but now you'll have to create RRs yourself and push them into the prerequisite and update sections of the packet. For your convenience, here's a summary of the update semantics (see RFC 2136 for details): PREREQUISITE SECTION # RRs NAME TTL CLASS TYPE RDLENGTH RDATA ----- ---- --- ----- ---- -------- ----- yxrrset 1 name 0 ANY type 0 empty yxrrset 1+ name 0 class type rdlength rdata nxrrset 1 name 0 NONE type 0 empty yxdomain 1 name 0 ANY ANY 0 empty nxdomain 1 name 0 NONE ANY 0 empty UPDATE SECTION # RRs NAME TTL CLASS TYPE RDLENGTH RDATA ----- ---- --- ----- ---- -------- ----- add RRs 1+ name ttl class type rdlength rdata del RRset 1 name 0 ANY type 0 empty del all RRsets 1 name 0 ANY ANY 0 empty del RRs 1+ name 0 NONE type rdlength rdata 8. BUGS ------- *** THIS VERSION OF Net::DNS IS FOR TESTING AND STILL CONTAINS BUGS *** Net::DNS is still in its early stages and is sure to contain a few bugs. Please see the TODO and Changes files for more information. As mentioned in the Dynamic Updates section above, I don't recommend using Net::DNS to maintain a production nameserver via dynamic updates unless you've tested it *thoroughly*. This author takes no blame if you corrupt your zone. If you find a bug, please report it to the author along with the following information: * version of Perl * version of Net::DNS * version of IO * operating system type and version * version of nameserver (if known) * exact text of error message or description of problem * the shortest possible program that exhibits the problem * the specific queries you're making, if the data is available to Internet nameservers If I don't have access to a system similar to yours, I may ask you to insert some debugging lines and report back on the results. The more help and information you can provide, the better. 9. COPYRIGHT ------------ Copyright (c) 1997 Michael Fuhr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. 10. AUTHOR INFORMATION ---------------------- Michael Fuhr mfuhr@dimensional.com http://www.dimensional.com/~mfuhr/ ---- $Id: README,v 1.7 1997/06/13 03:48:07 mfuhr Exp $