BT Internet: Non existent hosts mapping to 92.242.132.15
We have a test in our code which checks for unresolvable hosts and it started failing for me because instead of throwing an UnknownHostException from the following call:
InetAddress.getByName( "host.that.is.invalid" )
I was getting back a valid although unreachable host. When I called ping it was easier to see what was going on:
$ ping host.that.is.invalid
PING host.that.is.invalid (92.242.132.15): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
As you can see, that hostname is resolving to '92.242.132.15' which I thought was a bit weird but dig confirmed that this was happening:
$ dig host.that.is.invalid
; <<>> DiG 9.8.3-P1 <<>> host.that.is.invalid
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30043
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;host.that.is.invalid. IN A
;; ANSWER SECTION:
host.that.is.invalid. 300 IN A 92.242.132.15
It turns out that BT have plugged into DNS searches and if one fails it redirects you to one of their pages instead - something I hadn’t noticed before.
The site they direct you to is www.webaddresshelp.bt.com which contains a list of sponsored results for the search term 'host.that.is.invalid' in this case.
$ ping www.webaddresshelp.bt.com
PING www.webaddresshelp.bt.com (92.242.134.15): 56 data bytes
Luckily this can be disabled by going to BT Web Address Help and then choosing to disable BT Web Address Help.
If we then wait a little bit for our DNS cache to clear the ping works as expected:
$ ping host.that.is.invalid
ping: cannot resolve host.that.is.invalid: Unknown host
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.