diff --git a/usr.bin/whois/whois.1 b/usr.bin/whois/whois.1
index 507247386758..debe3b156803 100644
--- a/usr.bin/whois/whois.1
+++ b/usr.bin/whois/whois.1
@@ -86,6 +86,12 @@ of the supplied (single) argument, and appending
 .Qq Li .whois-servers.net .
 This effectively allows a suitable whois server to be selected
 automatically for a large number of TLDs.
+.Pp
+In the event that an IP
+address is specified, the whois server will default to the American
+Registry for Internet Numbers
+.Pq Tn ARIN .
+.Pp
 If no required
 .Pa whois-servers.net
 subdomain found, fallback to
diff --git a/usr.bin/whois/whois.c b/usr.bin/whois/whois.c
index af03a1235b27..3e31a6550e3f 100644
--- a/usr.bin/whois/whois.c
+++ b/usr.bin/whois/whois.c
@@ -49,6 +49,7 @@ static const char rcsid[] =
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
+#include <ctype.h>
 #include <err.h>
 #include <netdb.h>
 #include <stdio.h>
@@ -166,13 +167,19 @@ main(argc, argv)
 				}
 			}
 			if (j != 0) {
-				qnichost = (char *) calloc(i - j + 1 +
-				    strlen(QNICHOST_TAIL), sizeof(char));
-				if (!qnichost) {
-					err(1, "calloc");
+				if (isdigit(*(*argv + j + 1))) {
+					(void) asprintf(&qnichost, "%s",
+					    ANICHOST);
+				} else {
+					qnichost = (char *) calloc(i - j
+					    + 1 + strlen(QNICHOST_TAIL),
+					    sizeof(char));
+					if (!qnichost) {
+						err(1, "calloc");
+					}
+					strcpy(qnichost, *argv + j + 1);
+					strcat(qnichost, QNICHOST_TAIL);
 				}
-				strcpy(qnichost, *argv + j + 1);
-				strcat(qnichost, QNICHOST_TAIL);
 
 				memset(&hints, 0, sizeof(hints));
 				hints.ai_flags = 0;