Esqueça o network.target . man systemd.special diz:
network.target systemd automatically adds dependencies of type After for this target unit to all SysV init script service units with an LSB header referring to the $network facility.
Portanto, esse alvo é basicamente um hack de compatibilidade para scripts init do SysV.
Supondo que a sua conexão de rede seja gerenciada pelo NetworkManager, você obviamente está certo em depender desse destino, porque NetworkManager.service define Before=network.target . Mas isso significa apenas que o NetworkManager foi iniciado, e não que a conexão de rede está realmente estabelecida. Isso pode demorar um pouco (dhcp roundtrips, handshake de Wi-Fi, etc.) e é inteiramente responsabilidade do NetworkManager. Pelo menos no meu sistema (F18) existe um serviço chamado NetworkManager-wait-online . Ele usa o programa utilitário nm-online para bloquear até que haja uma conexão ativa estabelecida. Tente Require, Before na sua definição de unidade ou use essa ferramenta por conta própria.