Tom Horsley:
My consistent experience is that systemd has no clue when the network is "up" if by up you mean actually capable of talking to other things on the network. Thus all of the dependencies it waits on never wait long enough.
Tim:
There was a thread about that, last year, I think. Another target was added to solve that stupid dependency. I can't remember what it was called, but it meant "actually on-line," as opposed to "somewhere there is some aspect of a network."
Realising that I didn't really finish saying what I meant before sending, earlier on... As I recall, the extra target was wedged in so that it has to be true, before it lets the other target become true (the one that all your applications are looking at to see whether you're on-line, or not).
But I still can't recall what /that/ thread actually was, to refer you to it, though.