Se você notou que o vpnc morre após aproximadamente o mesmo tempo que está sendo conectado, você pode tentar desativar o DPD:
--dpd-idle <0,10-86400> Send DPD packet after not receiving anything for <idle> seconds. Use 0 to disable DPD completely (both ways). Default: 300 conf-variable: DPD idle timeout (our side) <0,10-86400>
(extraído da página man do vpnc)
O parâmetro acima (--dpd-idle 0) desativará a detecção de peer morto e evitará que a conexão pare se os pacotes não chegarem a tempo. Você pode configurá-lo em seu arquivo de configuração conforme descrito acima.
Acho que também editei um pouco o seu script de inicialização para evitar que o vpnc pare incondicionalmente "se ainda estiver ativo". Você pode estar passando por mudanças de estado diferentes de "up" e "down" (por exemplo, você tem "hostname"); por exemplo, quando em roaming do ponto de acesso ao ponto de acesso devido a alterações de nível de sinal ou caso contrário você pode obter um novo "up". Em outras palavras:
# Exit if we are not connected to bonnet
if ! iwconfig wlan0 | grep bonnet then
# Kill vpnc if it is still active
if pgrep vpnc then
vpnc-disconnect
fi
return 0
fi
Em vez de fazer duas verificações separadas. (embora eu não tenha testado isso)