Hacker News new | ask | show | jobs
by jrockway 1371 days ago
It's important to note that http://go/ and http://go./ are different things. The former means "consult my search path", the latter means "lookup the apex record of the go TLD". When you write "example.com", you really mean "example.com.", for example. Someone decided that browsers should save you a byte, and now every URL is ambiguous, causing all sorts of problems. (For example, if your search path is "corp.company.com" and you type "example.com" into your URL bar, you should be taken to "example.com.corp.company.com" before trying "example.com", but that turns out not to be what anyone wants, so you're pretty much screwed if you DO want that behavior. As always, the core of the Internet is duct tape and chewing gum.)

This often bites people when they wonder why they blow up their DNS servers with traffic from services that contact addresses like "foo.default". With a search path of "search default.svc.cluster.local svc.cluster.local cluster.local" in resolv.conf, the app is actually looking up foo.default, foo.default.default.svc.cluster.local, foo.default.cluster.local, and foo.default.svc.cluster.local, etc. every single time. Hard-code "foo.default.svc.cluster.local." in the app config, and you eliminate requests for the names that can't possibly exist, and save the load (and latency) of handling them.