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.