News for hackers. Stuff that matters.
Re:Systemd-resolved DNS cache poisoning by josteink on Wednesday November 12, 2014 @09:35AM (#8595543)
Am I the only one who is getting fed up with everything under the sun having their own DNS resolver and DNS cache? It's border-lining madness right now.

Before you had a situation like this. ISP: Server and cache. Router: Client, server and cache. OS: Client and cache.

So if you ever encounter DNS failing, you only had 3 possible places to look for errors, or maybe not even errors, just stale data that may or may not correct itself over time. Flush the caches you can and hope for the best. Rinse and repeat.

But then came the browsers and decided that 3 levels of caching was good enough. Let's add more which can fail in the name of performance!

Combine this with mobile, mobility and data-roaming and now you not only have a DNS-cache (based on already tripple-cached data) which often is guaranteed to be wrong, your browser may actually have cached the wrong DNS-servers, so when you roam from Wifi to cell-data your precious LAN DNS servers are no longer available and your browser just looks stupid.

And now systemd adds to this. What the flying fuck?

All this nonsense because someone somewhere decided that a nice, shared, global OS level client and cache wasn't good enough. Handling this complexity once would just be too easy.

Can someone tell me why? Why wasn't it good enough? What was it that prompted someone to go reimplement all this wrongly, yet again?

Yes this is a rant, but if there are underlying technical reasons for this nonsense, I'm very, very interested to hear about it.

Re:Systemd-resolved DNS cache poisoning by peterwwillis on Wednesday November 12, 2014 @09:58AM (#8595676)
The short answer is: the glibc DNS interface sucks balls and systemd wanted extra features.

The long answer is:

Often, systems do not come feature-complete. There are many cases of a platform, or OS, or service, or framework, or some other piece of software being released without every possible imaginable feature being implemented. When this happens, some other software may need to re-implement some core piece of technology in order to add functionality to it. Usually care is taken to not interfere with other systems or cause additional burden to the user. In the case of DNS, our use of DNS and different networks simultaneously requires additional functionality in order to process requests independently and efficiently. As the DNS protocol itself has an inherent flaw allowing for cache poisoning, it's non-trivial for people to implement without running into this security hole. And as someone else mentioned, the kernel and glibc don't have their own DNS cache.

I didn't downvote you for the rant because you weren't being mean or insulting and you genuinely seem to want to know what's going on. But next time you feel yourself posting out of emotional reaction, I recommend typing it out in a draft and save it for a half hour, and see if you might want to reword it later to be less angry/ranty.

Re:Systemd-resolved DNS cache poisoning by ominous_prime on Wednesday November 12, 2014 @09:51AM (#8595627)
> And now systemd adds to this. What the flying fuck?

While I agree with you that these layers of caching can lead to headaches, Linux doesn't have a built-in cache (and distros often don't provide one by default). Systemd would be one way to provide this, instead of other daemons that have been used in the past, like nscd, dnsmasq or bind. So it's not adding yet another layer, just providing the layer at the local host.

As for technical reasons, I'm not sure what you want to hear, each layer implements a cache for performance and/or efficiency. No one throws in a DNS cache just because they feel like it.

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @09:53AM (#8595640)
Linux doesn't need a cache, you can simply run a local DNS server. The kernel should not do more than it needs to do. (It's bloated enough as it is)
Re:Systemd-resolved DNS cache poisoning by ominous_prime on Wednesday November 12, 2014 @09:57AM (#8595674)
I don't understand your comment. a DNS server is typically also a cache, and this is what systemd was attempting to provide, without the public server part. It's the same thing that distros were using e.g. dnsmasq for.

What does the kernel have to do with this? No one is proposing that the kernel should have a DNS cache.

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @10:03AM (#8595702)
GP says 'Linux doesn't have a built in cache'. I presume (hopefully correct) that he means 'the kernel', since Linux doesn't have anything 'built in' that you don't run as a user process. The kernel of course has plenty of stuff built in but (fortunately) it tries hard to stay away from things that can and should be done in userland.

Systemd is a user process and now tries to replicate functionality that we already had a perfectly good solution for.

Since a DNS server is typically also a cache we already had this functionality (and more), simply make it listen to a local port and nothing else. That way you don't need to resort to rebuilding things we already have with incompatible interfaces.

Re:Systemd-resolved DNS cache poisoning by _delirium on Wednesday November 12, 2014 @10:08AM (#8595732)
Linux hasn't been just a kernel for a while; it's a kernel with some associated userland utilities that are developed together and normally expected to be present. That's been the case in the filesystem part for a long time; the userland fs-related binaries are developed in sync with the kernel side. Systemd is doing something similar with e.g. cgroups.

Linux develops fewer things this way than the BSDs typically do, outsourcing a lot of userland to other projects like GNU, but it doesn't literally develop only kernelspace code. Imo it's generally an improvement; the situation with trying to get things like cgroups to work together with process management previously was terrible.

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @10:17AM (#8595784)
This is absolutely true, which is why linux is as large as it is and why you need certain stuff in order to bring up a functioning linux system. As for the filesystems they are modules plugged into the kernel (linked directly so you can boot our kernel straightaway or through a ram disk kludge as modules in linux, not the most elegant solution because technically that duplicates a buch of stuff but nobody seems to care too much) and a bunch of supporting programs, this has been the unix way since time immemorial, I think even the first unix I ever used had fsck.

The reason those have to be kept in sync is simply because you don't want to run fsck on a filesystem that was built with a newer kernel that possibly has datastructures that your fsck (or other filesystem aware utility) accesses directly without going through the kernel. Essentially such programs re-implement a bunch of kernel functionality because they access file systems that are not currently mounted.

Systemd on the other hand (in the case at hand) replicates the functionality of another user process that we already have, know how to use and have hardened over many millions of hours of use. That seems folly to me, it duplicates functionality, makes troubleshooting harder and increases the size of the codebase without actually improving anything.

What's next? The framebuffer? Keyboard interface? TCP stack?

There are no really hard reasons why those could not be user programs. It's fine with me if we make linux a micro kernel but let's do that in a way that we do not need to revisit the last decade or so of security issues and ill thought out interfaces. Once we start to need things like DBUS and X in order to bring up a server we've really lost the plot.

Re:Systemd-resolved DNS cache poisoning by rwmj on Wednesday November 12, 2014 @10:37AM (#8595907)
> What's next? Keyboard interface?

I'm afraid so: http://lists.freedesktop.org/archives/systemd-devel/2013-Nov...

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @10:40AM (#8595940)
No way. That was meant as a joke. This is really bad.
Re:Systemd-resolved DNS cache poisoning by vezzy-fnord on Wednesday November 12, 2014 @11:23AM (#8596305)
Not as much as you'd think, actually. The CONFIG_VT subsystem has been a bane on the Linux developers for a long time.

A userspace replacement entitled kmscon has already been around since 2012, by David Herrmann. It's a totally separate project.

consoled is a minimalistic fallback done by the same person. I'm not sure if it really needs to exist, but replacing CONFIG_VT in of itself isn't bad. Most people will probably still have kmscon primarily.

Re:Systemd-resolved DNS cache poisoning by JdeBP on Sunday November 16, 2014 @03:04PM (#8615234)
I strongly suspect that at this point most people will in fact have one of the several tools that preceded kmscon by some years and are still around: zhcon (http://zhcon.sourceforge.net/), jfbterm (http://jfbterm.sourceforge.jp/), fbterm (https://code.google.com/p/fbterm/), yaft (https://github.com/uobikiemukot/yaft), fbpad (http://repo.or.cz/w/fbpad.git), and so forth.
Re:Systemd-resolved DNS cache poisoning by angersock on Wednesday November 12, 2014 @11:18AM (#8596260)
All hail our new systemd overlords. Get with the program, citizen.
Re:Systemd-resolved DNS cache poisoning by rdtsc on Wednesday November 12, 2014 @10:19AM (#8595790)
> this is what systemd was attempting to provide

Why does systemd need to provide it? I already provides enough things.

Are there any bugs in :

http://www.thekelleys.org.uk/dnsmasq/doc.html

I had great success using that. Both installing it on my own or run it part of Ubuntu's base install.

(And the answer of "but it already provides everything + kitchen sink, might as well provide DNS caching too" would probably not be what most people would want to hear).

Re:Systemd-resolved DNS cache poisoning by ominous_prime on Wednesday November 12, 2014 @11:25AM (#8596318)
> Why does systemd need to provide it? I already provides enough things.

I'm not saying it needs to, or trying to defend systemd. All I'm saying that systemd is providing and alternative to running another resolver.

Re:Systemd-resolved DNS cache poisoning by RexRollman on Wednesday November 12, 2014 @11:16AM (#8596244)
Because it is the Emacs of init systems.
Re:Systemd-resolved DNS cache poisoning by parfe on Wednesday November 12, 2014 @03:23PM (#8597890)
Re:Systemd-resolved DNS cache poisoning by josteink on Wednesday November 12, 2014 @01:59PM (#8597431)
Depending in your standing as far as emacs goes, that may actually be something good.

I doubt you will find anyone interpreting this as such.

Re:Systemd-resolved DNS cache poisoning by takeda on Wednesday November 12, 2014 @10:03AM (#8595704)
That's pretty much systwhatemd is doing, except it is just subset of dns server that does caching.
Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @10:08AM (#8595726)
Exactly, so imnsho this is simply wrong and should be un-done. Systemd should do those things that can only be done at init time and/or those things that need to be there and no more and leave the rest of the lifting to those tools that we already know how to use and that have stood the test of time. Otherwise we end up with 2 sets of incompatible tools with one of them not only re-inventing the wheel but replaying a whole bunch of security issues from the past on top.

This is the worst case of feature creep in system land in a long time.

Re:Systemd-resolved DNS cache poisoning by VLM on Wednesday November 12, 2014 @10:16AM (#8595774)
That is a good architectural design, but is in direct opposition to the projects mission statement of "embrace, extend, ..." you guess the third word.

If a group is actively trying to ruin something, noticing that they're trying to ruin things isn't going to stop them. That's a useful strategy with accidents and friendly groups, but not with actively aggressive oppositional destructive groups.

Mostly I'm just angry about having to waste the labor hours moving everything to Freebsd from Debian. Its interesting, but not exactly productive.

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @10:19AM (#8595791)
Funny, that was exactly my response to all this, if Linux insists on copying the worst of windows in the future then I'll be more than happy to go with FreeBSD. I'm a bit rusty but I'll survive.
Re:Systemd-resolved DNS cache poisoning by qznc on Wednesday November 12, 2014 @11:01AM (#8596115)
Isn't systemd actually doing it the BSD way (everything within one repository and tightly coupled)?
Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @11:06AM (#8596162)
Last I looked FreeBSD used rc.conf but it's years ago.

I don't see FreeBSD's init trying to absorb most of the userland system utilities.

Whether or not it is in one repository isn't really the issue at hand here. It is that a bunch of desktop related stuff is worming its way into the systems to the point where you'll be running a whole slew of new, buggy and sloppy code on your servers if you're not very careful just so that the systemd folks get to scratch their NIH itches.

Re:Systemd-resolved DNS cache poisoning by digi_owl on Wednesday November 12, 2014 @05:41PM (#8598753)
Everything in one repository, yes. Tightly coupled, no.

And even when in one repository i think you can grab the BSD utils without getting the kernel and whatsnot in one big tar-ball.

If you try to grab say just the dns daemon from systemd you can't do so directly. you would have to grab the tar-ball for the whole of systemd, and then attempt to extract just the parts dealing with the dns daemon.

Damn it, LFS have found doing this for udev so demanding that they have switched to eudev for their non-systemd edition (yep, they now have their own systemd edition going alongside the "traditional" one).

Re:Systemd-resolved DNS cache poisoning by rakoo on Wednesday November 12, 2014 @03:58PM (#8598108)
I think we've reached the point where we can start being pedantic about what "Linux" means.

I don't think the kernel developers care that much about what systemd is doing (except for the notorious clash about systemd interpreting a debug option meant for the kernel and crashing the boot...), so you can't say the kernel is copying or doing anything.

The distros, however, are possibly the ones you want to blame for pushing and supporting systemd. Which is actually funny because the way it's going, systemd is laying foundations for a new kind of linux distributions to which distributions will certainly have to adapt if they want to keep it.

Re:Systemd-resolved DNS cache poisoning by takeda on Wednesday November 12, 2014 @10:45AM (#8595976)
As a FreeBSD evangelist I actually like systemd :-P
Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @10:53AM (#8596046)
Right, because it drives people from linux to FreeBSD. Well, here is my take on that: the reason I run Linux is because my desktop runs linux, and I try to keep as little knowledge about systems in my head as I need to get through the day in one piece. Since FreeBSD lost more and more ground to linux when it came to supporting the kind of hardware that PCs (desktops) ship with I ended up standardizing on Linux. I know full well that if I switch back to FreeBSD I'll end up running it on my desktop as well and that's when I will probably regret my move. Let's hope the situation has improved over the years.

Systemd is a cancer, it will end up killing Linux if this goes on unchecked. At least Torvalds seems to (most of the time) know his stuff, the way they replaced the memory management left me with a bad taste but in the end it worked out. What's happening with Systemd is absolutely unpalatable and I hope that Redhat and other distros take note, there are a lot more Linux systems on servers than on Desktops and if they believe that expending all this effort on Linux on the desktop so they can better compete with Windows they might just lose their dominance on the server because of it.

Re:Systemd-resolved DNS cache poisoning by mhurron on Wednesday November 12, 2014 @12:29PM (#8596803)
> I hope that Redhat and other distros take note, there are a lot more Linux systems on servers than on Desktops and if they believe that expending all this effort on Linux on the desktop so they can better compete with Windows they might just lose their dominance on the server because of it.

Red Hat is developing systemd. It has nothing to do with making Linux palatable on the desktop, but a severe case of NIH, which to be honest is hardly new in Linux-land.

systemd won't kill Linux. Linux development is out of the hands of hobbyists and enthusiasts now and corporate users and developers don't care about the holy wars. Red Hat ships systemd, Red Hats users will use systemd and that will be that.

Re:Systemd-resolved DNS cache poisoning by digi_owl on Wednesday November 12, 2014 @05:46PM (#8598777)
RH is pushing heavily into cloud computing, and appears to use systemd to do so (notice the amount of containerization talk there is in relation to systemd these days).

Their existing server customers are likely to be sitting on RHEL7 for quite some time. And i suspect that the workstation customers, mostly military as best i can tell, are in part pushing for systemd. Logind etc after all is heavily focused on multi-seats.

Re:Systemd-resolved DNS cache poisoning by retrogradeorbit on Thursday November 13, 2014 @12:46AM (#8600121)
I'm one who you speak of. Systemd to me is just a scarily large attack surface. Working through my servers slowly replacing them with FreeBSD. ZFS raid root out of the box on install! That one really impressed me.
Re:Systemd-resolved DNS cache poisoning by pessimizer on Wednesday November 12, 2014 @10:51AM (#8596030)
>Mostly I'm just angry about having to waste the labor hours moving everything to Freebsd from Debian. Its interesting, but not exactly productive.

It's scary for me, because everything I've done has been in a Linux, but it's also educational for me, because everything I've done has been in a Linux. If the systemd invasion results in a lot of attention going to the BSDs, it's not entirely a bad thing.

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @11:22AM (#8596290)
The biggest change will be that you might find it sometimes harder to get exotic hardware to work and that BSD tends to put stuff in different places. Most of your other unix knowledge (userland) will transfer just fine, the sysadmin stuff is a bit harder but learning another dialect of unix is along the lines of learning Spanish when you already know Italian.
Re:Systemd-resolved DNS cache poisoning by takeda on Wednesday November 12, 2014 @01:17PM (#8597153)
FreeBSD always was targeted on running on servers. So if that's where you will run it then you should have minimal issues with drivers. If you plan to run it on desktop it might be more challenging.

Regarding sysadmin, I tend to disagree, I think it is the opposite, mainly due to great handbook they have (http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/).

As suggested reading "man hier" is a great way to understand the filesystem layout. I personally also really like clear separation between the system and applications. For example all ports/packages are installed in /usr/local including configuration files (in /usr/local/etc).

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @02:46PM (#8597695)
FreeBSD is just much more organized, Linux is more of a hodge-podge.
Re:Systemd-resolved DNS cache poisoning by protomyth on Wednesday November 12, 2014 @12:02PM (#8596609)
Read the hier man page of your chosen BSD, first. It is a great eye opener. From there OpenBSD and FreeBSD have some great documentation (not sure / no slight intended to NetBSD or Dragon Fly BSD as I have not used them much).
Re:Systemd-resolved DNS cache poisoning by vezzy-fnord on Wednesday November 12, 2014 @10:16AM (#8595778)
But that's not in line with what systemd intends to be. It's meant to be the standard suite that you sort of plug in as a middleware between GNU and Linux.

Your proposal would require a radical paradigm shift as to the fundamental project goals of systemd, in which case it'd probably become something like uselessd.

Re:Systemd-resolved DNS cache poisoning by talideon on Wednesday November 12, 2014 @10:35AM (#8595888)
There are already excellent solutions out there that have been battle-tested, such as unbound or even dnsmasq. Best as I can tell, resolved has no good reason to exist.
Re:Systemd-resolved DNS cache poisoning by takeda on Wednesday November 12, 2014 @10:00AM (#8595687)
Actually Unix out of the box (unlike for example windows) does not have system level dns cache, people often setup things like bind, unbound, dnsmasq, nscd etc.

Systemd here tries to be the official standard system level caching.

I agree though, about your extra caching sentiment to a degree. Actually as long the caches are RFC complaint (e.g. they obey TIL - looking at you nscd & java) or should be fine.

Re:Systemd-resolved DNS cache poisoning by _wmd on Wednesday November 12, 2014 @09:55AM (#8595660)
Every client operating system under the sun implements a DNS cache, its part of the intended design of DNS. This is just systemd's bikeshed of a function already available on Linux, via nscd.

Without caching, all DNS queries degrade to worst case behaviour, which is a recursive query involving 4-6 or more round trips, starting at the DNS roots (which, good luck finding them, since you don't have their addresses cached, which is exactly what the root hints file is).

As for invalidating the cache when network configuration changes arise, that sounds like a bug report for wherever you experienced it. Certainly I've never seen this kind of problem on OS X, nor any time in the past 10 years on Windows.

Re:Systemd-resolved DNS cache poisoning by tedunangst on Wednesday November 12, 2014 @11:29AM (#8596351)
> Every client operating system under the sun implements a DNS cache

errr, xxxxBSD don't. libc sends every DNS query to wherever /etc/resolv.conf says to send it.

Re:Systemd-resolved DNS cache poisoning by unwind on Wednesday November 12, 2014 @09:50AM (#8595616)
The commit's comment (http://cgit.freedesktop.org/systemd/systemd/commit/?id=32234...) says it all:

resolved: add DNS cache

Yes, that's the full commit message for what I think is the commit that adds the feature. I was trying to dig up an authorative source for the "why" you're asking, but I guess that failed. Perhaps it was discussed/motivated/described/something somewhere else, like a mailing list, I didn't search further.

Re:Systemd-resolved DNS cache poisoning by e40 on Wednesday November 12, 2014 @10:13AM (#8595753)
Yes, that's the full commit message for what I think is the commit that adds the feature.

If true (that it is a 4 word commit message), that is a disgrace. Seriously, something as important as this should contain a lot more information, if not just a pointer to a place that provides it.

Re:Systemd-resolved DNS cache poisoning by custardcream on Wednesday November 12, 2014 @10:27AM (#8595829)
Lennart proclaimed therefore we all must follow. That appears to be how it works these days. No community, no discussion. Someone with commit access says bend over or fork it.

Actually fuck that. Which is why I'm sitting here on a FreeBSD machine.

Re:Systemd-resolved DNS cache poisoning by antientropic on Wednesday November 12, 2014 @10:38AM (#8595921)
I don't understand this attitude. Lennart has every right to write a DNS resolver if he feels like it. And you have every right not to use it. Nobody is being forced to do anything. (I'm not aware of any distribution currently using systemd-resolved by default, and you can disable it at build time and runtime.) So what's the problem exactly?
Re:Systemd-resolved DNS cache poisoning by rwmj on Wednesday November 12, 2014 @10:42AM (#8595953)
A couple of problems: (1) This resolver has security bugs which have been fixed in the existing daemons. That doesn't matter except that: (2) systemd utilities get an easier route into distros than competing utilities, even where the competition is much better or more secure. This really matters since Linux improves because of the Darwinian nature of the competition between the different components. You can't have one group of packages claiming they are the "one true standard", or this doesn't work.
Re:Systemd-resolved DNS cache poisoning by custardcream on Wednesday November 12, 2014 @11:12AM (#8596209)
Problems:

1. Solved problem. Contribute to something else.

2. Its another tentacle hanging off systemd. Some of us pay for our software (RHEL) so we'd in turn like to have some say in what we have to manage rather than prescriptive software development. We don't really get to choose to not use it because of the incestuous nature of the Linux ecosystem at the moment (I.e. Freedesktop/gnome/systemd).

3. Systemd is a buggy piece of crap. As are several of the "stable" bits of systemd I have encountered in RHEL7. I have quite a bit of experience with systemd and i really don't want it consuming any more things badly. Its been a complete pain in the arse to be honest. An init system has never been a problem until now. Its totally unreliable and incredibly difficult to debug.

4. Some of us get shit done, not use the ecosystem as a playground for egos and quote frankly incompetent twattery. This stuff can go on in the sidelines and mature independently, not knotted into the next "stable" drop because everything has suddenly been tangled with it.

Its a complete fuck up at all levels and I haven't even started on the technical marvels of introducing something with the complexity of COM into a process model that requires reliability.

This is not how to do software.

Re:Systemd-resolved DNS cache poisoning by andreasvc on Wednesday November 12, 2014 @12:46PM (#8596921)
"Nobody is forced to do anything" is a very lame argument, because it is quite obvious that systemd is effectively being forced on the Linux world, because it has become a dependency of Gnome. Other distributions besides Red Hat will make their life very difficult if they don't implement systemd as well, so yes, practically, systemd is being forced upon Linux users. You could of course continue the argument by saying that nobody is forced to use Linux, or even a computer, but it gets silly.
Re:Systemd-resolved DNS cache poisoning by digi_owl on Wednesday November 12, 2014 @05:52PM (#8598814)
Welcome to the world of Poettering.

The guy going "mea culpa" or anything close to that is like spotting a polar bear in Sahara.

Re:Systemd-resolved DNS cache poisoning by 101914 on Wednesday November 12, 2014 @10:58AM (#8596095)
"Am I the only one..."

No.

But the solution is not to complain, but to use /etc/hosts, run your own root and your own cache.

Any software that overrides /etc/hosts is not worth using, in my opinion. There are no "underlying technical reasons" for not letting the user control their own name resolution that benefit the user. Of course, there could be reasons that benefit someone else.

Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @09:50AM (#8595618)
You forgot about host files. Those typically over-rule the resolver so you have to check those as well.
Re:Systemd-resolved DNS cache poisoning by ominous_prime on Wednesday November 12, 2014 @10:04AM (#8595709)
Technically, those only over-rule the resolver from the local system libraries. They do not over-rule DNS queries.
Re:Systemd-resolved DNS cache poisoning by jacquesm on Wednesday November 12, 2014 @10:10AM (#8595742)
Sure, but your average application does not do a DNS query directly, it simply uses gethostbyname and depends on those local system libraries to figure out what to return.
Re:Systemd-resolved DNS cache poisoning by zurn on Wednesday November 12, 2014 @02:48PM (#8597715)
Nit: Routers generally don't do DNS, though they do have (rarely needed) clients.