#!/usr/bin/perl
 
use strict;
use warnings;
use Net::DNS::Nameserver;

my $ip4_addr = shift @ARGV;
 
sub reply_handler {
  my ($qname, $qclass, $qtype, $peerhost,$query,$conn) = @_;
  my ($rcode, @ans, @auth, @add);
 
  if($qtype eq "A") {
      my ($ttl, $rdata) = (1, $ip4_addr);
      my $rr = new Net::DNS::RR("$qname $ttl $qclass $qtype $rdata");
      push @ans, $rr;
      $rcode = "NOERROR";

  } else {
      $rcode = "NXDOMAIN";
  }
 
  return ($rcode, \@ans, \@auth, \@add, { aa => 1 });
}
 
my $ns = new Net::DNS::Nameserver(
  LocalPort    => 4253,
  LocalAddr    => $ip4_addr,
  ReplyHandler => \&reply_handler,
  Verbose      => 0
  ) || die "Couldn't create fake nameserver object.\n";
 
$ns->main_loop;

exit 0;