Live data from Hacker News

DNS is for people, not for IT infrastructure

louwrentius.com

31–40 of 102 posts

Re: DNS is for people, not for IT infrastructure

#31
post #14

Earlier quoted context omitted.

And making TLS more difficult, especially for HA systems. Guess you would just need one cert for 127.0.0.1 for all local services.

Certs support ip addresses? However, /etc/hosts would solve the issue probably, unless I’m missing something

What has /etc/hosts got to do with valid TLS certificates? I think that’s a non-sequitur.

Re: DNS is for people, not for IT infrastructure

#32
post #28

DNS is merely one implementation of service discovery; even without DNS, some other form of service discovery would still be needed.

Why would some form of service discovery be required? No need to discover things if you can push said information in configuration updates using tools like Ansible, pyinfra, and so on?

Re: DNS is for people, not for IT infrastructure

#33
post #27

Earlier quoted context omitted.

Serious response: how is templating out /etc/hosts with Ansible not 10x simpler than setting up an additional service that only introduces additional risk?

You lose the concept of DNS forwarding. Usually, if your company has example.com, your DNS server is authoritative for example.com, which means it will actually contain (fqdn,ip) entries belonging to example.com, and it will forward requests for other domains to other DNS servers, possibly one DNS server per domain. If you remove DNS servers from the equation, you need to write down records for other domains, too. Th…

It's interesting as I really address all these things in the article. Not explicitly PTR and SRV, MX records, but these aren't essential within your internal infrastructure. No need to look at MX records if I can just straight up point at the SMTP server(s).

And I explicitly argue within the section about egress filtering that allowing systems access to public DNS is a security risk.

Re: DNS is for people, not for IT infrastructure

#34

Earlier quoted context omitted.

Certs support ip addresses? However, /etc/hosts would solve the issue probably, unless I’m missing something

What has /etc/hosts got to do with valid TLS certificates? I think that’s a non-sequitur.

You don't need to setup one cert for 127.0.0.1 as stated by the parent comment.

Re: DNS is for people, not for IT infrastructure

#35
This author has clearly never operated internal infrastructure at scale. The measures proposed in this are home lab grade at best, and require ludicrous levels of precision and overhead for something that changes thousands to tens of thousands of times per day.

And for very specific nit picks, and I can’t believe I’m entertaining this idea enough to ask, but tell me how the new device on the network bootstraps without DNS? And the guest device. And the printer without Ansible support. And the NDI receiver that needs to resolve its host. And how do you resolve split brain resolution for roaming devices? Are you going to publicly address all internal resources now so my laptop keeps working outside the office?

DNS was not created as a random solution looking for a problem…

Re: DNS is for people, not for IT infrastructure

#36

Hard disagree - only because if you didn't have DNS you would have something else in its place. But, we understand DNS _very_ well. People, services, machines, etc need to "dial" canonical-somewhere. Whatever does the canonical management is the piece that when it breaks everything breaks. Doesn't matter if it's DNS, EIP rotation, some HA proxy, whatever. It'll break. It's actually that DNS is so well understood that…

> Whatever does the canonical management is the piece that when it breaks everything breaks.

That is absolutely true. I believe that a solution where you provision a text file with an updated ip address or /etc/hosts file is inherently simpler, less risky and easier to recover from, although I admit I don't explicitly state this in the article.

Re: DNS is for people, not for IT infrastructure

#37
post #4

"just use /etc/hosts" is wild. That is effectively just going from one DNS server servicing all of your machines to having bespoke DNS servers individually running on every host. madness

Why is that madness and not amazing? Isn’t the simplicity beautiful? Managing /etc/hosts with a tool like Ansible?

/etc/hosts scales like a lead balloon.

For small groups of servers, with limited egress communication, it might nevertheless make sense. And then go for it, by all means. As a general replacement for DNS, not likely.

It is hard to see how Ansible should be simpler than DNS. Maybe if you have worked with Ansible and not DNS, you might think so.

Re: DNS is for people, not for IT infrastructure

#38
>DNS Is for People

DNS is for Infrastructure, people use infrastructure.

>That got me thinking, why would we use DNS for infrastructure services? It isn't necessary for machine-to-machine communication. Instead of configuring domain names that may not resolve, we can just directly inject the appropriate IP address(ess) into configuration files. It's easy to configure systems with tools like Ansible or pyinfra at scale.

No no no no god no.

"What if we set up a convoluted higher level application solution"

This is going to go wrong more frequently and contain more errors than DNS.

>Fortunately, we still have /etc/hosts, which we can easily provision. Still no DNS service required! This way, we can configure domain names and pretend to use DNS. I also suspect that DNS queries against /etc/hosts are quite responsive.

No thats a horrible idea. Userspace should never be updating your hosts file, users will fall behind on changes and be placed at extreme security risk. Fully half the benefit of UAC on windows is preventing persistence by preventing malicious entities from updating hosts.

>As of today, most network traffic is encrypted by default, or tunneled through an encrypted channel. DNS is - by default - the exception.

DNS is mostly secure now, to the point where its a problem. But thats a vendor issue not a you issue please dont attempt to solve it. If you go full encrypted DNS you generally also get dragged into HTTPS proxying and things of that nature. This does not get better by removing a dynamic protocol for querying names.

>Due to this risk, there is a case to be made, to - at least - not allow systems to query public DNS records. As servers may need to interfact with services on the internet (update servers, APIs, and so on), such access can be facilitated by a proxy server using allow-listed domains.

Attackers use DNS because its versatile and resistant to the very issues you keep confidently presenting. A protocol is not a risk just because hackers use it. Hackers also use HTTPS and other protocols but we arent burning them at the stake.

>That said, I think it's reasonable to explore if DNS can be avoided altogether within the IT infrastructure to increase reliability and robustness.

Its reasonable for people with much better understanding of the infrastructure and protocol to examine these things. This reads like an end user suggesting "what if we deliver websites by hand printed on paper".

Re: DNS is for people, not for IT infrastructure

#40
post #28

DNS is merely one implementation of service discovery; even without DNS, some other form of service discovery would still be needed.

Why would some form of service discovery be required? No need to discover things if you can push said information in configuration updates using tools like Ansible, pyinfra, and so on?

How does your convoluted Ansible system know which systems and services to maintain.

If its a list of IP addresses, having a list of ip addresses is a crude service discovery protocol.

Tasking developers (because lets be absolutely clear, the idea of removing DNS from production environments is something only a developer could come up with, no competent engineer would ever raise) with maintaining ordered lists of servers to keep updated is only going to overcomplicate things.

And yes your hosts file is another example of a list.

Post reply on HN