IO::Socket::DNS::Server - Net::DNS::Nameserver personality to handle IO::Socket::DNS client connections.
use IO::Socket::DNS::Server; my $server = new IO::Socket::DNS::Server Suffix => $dns_suffix, LocalAddr => \@ips, LocalPort => $port, Password => $secret, Verbose => 5, IdleTimeout => $timeout, or die "Unable to start DNS server";
Listens for DNS queries in order to proxy for use by IO::Socket::DNS clients.
The "new" constructor takes arguments in key-value pairs:
Suffix Proxy DNS Suffix Required. SOA Authoritative IP for Suffix Defaults to Suffix's authority LocalAddr IP address on which to listen Defaults to SOA IP LocalPort Port on which to listen. Defaults to 53. NotifyHandler NS_NOTIFY (RFC1996) handler Optional. Password Access password <password> Verbose Used for debugging Defaults to 0 (off).
The "Suffix" argument is really the only requirement. This setting may also be passed via the DNS_SUFFIX environment variable. It must be a domain or subdomain for which queries will authoritatively arrive to the machine running this IO::Socket::DNS::Server software.
The "SOA" argument is the IP that will be provided in the authority records for all relevant DNS responses. If none is provided, then it will attempt to automatically determine this based on Suffix by resolving all its NS entries found in global propagation.
The "LocalAddr" argument may be one IP or an array ref of IP addresses to bind to. This defaults to the SOA IP is none is supplied, instead of the BINY_ANY address that the default Net::DNS::Nameserver uses.
The "NotifyHandler" code ref is the handler for NS_NOTIFY (RFC1996) queries. This is just passed through to Net::DNS::Nameserver, but it is not required.
The "Password" setting is to ensure only approved IO::Socket::DNS clients can connect to this server. Only the first 8 characters are used. This setting may also be passed via the DNS_PASSWORD environment variable. Default is no password.
If "Verbose" is specified, additional diagnostic information will be sent to STDOUT.
my $server = IO::Socket::DNS::Server->new( Suffix => "s.example.com", SOA => "199.200.201.202", LocalAddr => "192.168.100.2", LocalPort => 5353, Password => "No Geeks", Verbose => 6, ) or die "connect: $!"; $ENV{DNS_SUFFIX} = "s.example.com"; my $server = new IO::Socket::DNS::Server; # Continuously handle requests $server->main_loop;
dnsd, Net::DNS::Nameserver, IO::Socket::DNS
Rob Brown, <bbb@cpan.org>
Copyright (C) 2011 by Rob Brown
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.9 or, at your option, any later version of Perl 5 you may have available.
To install IO::Socket::DNS, copy and paste the appropriate command in to your terminal.
cpanm
cpanm IO::Socket::DNS
CPAN shell
perl -MCPAN -e shell install IO::Socket::DNS
For more information on module installation, please visit the detailed CPAN module installation guide.