[Bug 2037] New: sshd Causing DNS Queries on ListenAddress when binding to IPV4 and IPV6 addresses on AIX
bugzilla-daemon at mindrot.org
bugzilla-daemon at mindrot.org
Tue Aug 28 04:06:58 EST 2012
https://bugzilla.mindrot.org/show_bug.cgi?id=2037
Priority: P5
Bug ID: 2037
Assignee: unassigned-bugs at mindrot.org
Summary: sshd Causing DNS Queries on ListenAddress when binding
to IPV4 and IPV6 addresses on AIX
Severity: normal
Classification: Unclassified
OS: AIX
Reporter: caleblloyd at gmail.com
Hardware: PPC
Status: NEW
Version: -current
Component: sshd
Product: Portable OpenSSH
On AIX 7.1, sshd is causing a an AAAA DNS Query to occur on "0.0.0.0"
and an A DNS Query to occur on "::" when trying to listen on all IPV4
and IPV6 addresses. If DNS is not configured, OpenSSH will take a long
time to try to resolve this DNS query on startup and on receiving a
client connection until the DNS query eventually times out.
ListenAddresses from /etc/ssh/sshd_config:
ListenAddress 0.0.0.0
ListenAddress ::
When a listener address is added to the server, the POSIX function
"getaddrinfo" is called from servconf.c
sshd application calls:
getaddrinfo("0.0.0.0") and
getaddrinfo("::"), with hints to be NULL for these 2 calls.
---------------------------------------------------------------------------
For getaddrinfo("0.0.0.0, ...") call,
Internally, it will call these 2 APIs to collect information for both
IPv4 and IPv6 addresses since hint is NULL:
gethostbyname2("0.0.0.0", AF_INET6)
gethostbyname2("0.0.0.0", AF_INET)
In gethostbyname2 ("0.0.0.0", AF_INET6);
It's asking for an IPv6 address mapping.
"0.0.0.0" itself is NOT an IPv6 address, so resolver treats it as a
hostname.
You will see an AAAA query for hostname "0.0.0.0".
In gethostbyname2 ("0.0.0.0", AF_INET);
It's asking for an IPv4 address mapping.
"0.0.0.0" is an IPv4 address, so resolver will NOT go out to DNS server
for answer.
---------------------------------------------------------------------------
For getaddrinfo("::",...) call:
Internally, it will call these 2 APIs to collect information for both
IPv4 and IPv6 addresses since hint is NULL:
gethostbyname2("::", AF_INET6)
gethostbyname2("::", AF_INET)
In gethostbyname2("::", AF_INET6);
It is asking for an IPv6 address mapping. "::" itself is an IPv6
address.
So it won't do DNS query.
In gethostbyname2("::", AF_INET);
It is asking for an IPv4 address mapping. "::" is NOT an IPv4 address.
"::" itself is NOT an IPv4 address, so resolver treats it as a
hostname.
You will see an A query for hostname "::".
---------------------------------------------------------------------------
The solution would be to define an AddressFamily for each ListenAddress
in /etc/ssh/sshd_config like so:
AddressFamily inet
ListenAddress 0.0.0.0
AddressFamily inet6
ListenAddress ::
Another solution would be to create a configuration option that would
let AI_NUMERICHOST be passed to the POSIX getaddrinfo() function.
--
You are receiving this mail because:
You are watching the assignee of the bug.
More information about the openssh-bugs
mailing list