can't verify hostname: getaddrinfo...
David Tonhofer
d.tonhofer at m-plify.com
Thu Aug 3 17:18:02 UTC 2006
Ryan Golhar wrote:
> I have a group of machines that are only accessible by users from
> certain ISPs. One of those ISPs, we'll call abc.net. The example IP
> address I will use is 1.1.1.1
>
> In my /etc/hosts.allow, I have:
>
> sshd: LOCAL, .abc.net
>
> This was working for some time, but somewhere along the last few weeks
> or months stopped working, and I don't know why.
>
> /var/log/secure reports the following:
>
> sshd[7693]: warning: /etc/hosts.allow, line 10: can't verify hostname:
> getaddrinfo(host-1-1-1-1.abc.net, AF_INET) failed
>
> sshd[7693]: refused connect from 1.1.1.1 (1.1.1.1)
>
> The users are real and were able to get access to these machines. I've
> verified that I can get access to the machines from a different ISP, in
> fact, most of the users can. It just seems to be this 1 provider that
> these 2 users have. Any ideas where I can start looking to find the
> cause of this problem?
>
> Ryan
>
On a hunch, this seems to be a DNS problem, I don't know whether this is
correct but does
the lookup "IP address" -> "reverse address" -> "IP address" seems to
fail, probably because
the ISP has a messily configured DNS?
1) Try this on the command line (the 'rdig.pl' program is just a reverse
lookup perl program that uses 'dig',
see the attached program; use that or just execute 'dig
1.2.3.4.in-addr.arpa. PTR' instead of 'rdig.pl 4.3.2.1'
"rdig.pl 1.1.1.1" should give "host-1-1-1-1.abc.net" - if not, your
setup won't work
"dig host-1-1-1-1.abc.net" should give "1.1.1.1" - if not, your setup
SHOULD not work
2) See "man getaddrinfo"
Best regards,
-- David
----------8<-----------------rdig--------------------
#!/usr/bin/perl -w
if (!defined $ARGV[0]) {
print STDERR "You have to pass an IP address to reverse-resolve\n";
exit 1;
}
if ($ARGV[0] =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) {
$reverse="$4.$3.$2.$1.in-addr.arpa";
open(PIPE,"/usr/bin/dig $reverse PTR|") or die "Could not open pipe:
$!\n";
@lines = <PIPE>;
close(PIPE) or die "Could not close pipe: $!\n";
foreach $line (@lines) {
print $line;
}
exit 0;
}
else {
print STDERR "The passed argument $ARGV[0] is not an IP address\n";
exit 1;
}
More information about the redhat-list
mailing list