A mensagem de erro que você postou aponta para um bug no pppd, no entanto a situação que você descreveu "funciona do shell, mas não do cron" é geralmente relacionada a problemas de caminho.
já que não pode doer, você pode tentar adicionar isto ao topo do seu crontab?
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
edit: uma solução alternativa que você poderia usar, é se ela sempre funciona a partir do shell, tem outro script curto que faz um
while true;do vpnup.sh;sleep 1m;done >> log
então você pode começar isso na tela com algo como
screen -S vpn -d -m thatscript