Execute o daemon na inicialização no Debian assim que a conexão openvpn for estabelecida

2

Estou usando o raspbian. (Variante do Debian).

Por padrão, o openvpn é iniciado com /etc/rc2.d/S03openvpn. Eu configurei um script /etc/init.d com um link simbólico /etc/rc2.d/S04daemonname para um daemon que eu quero iniciar depois que o openvpn tiver iniciado e uma conexão com meu provedor vpn tiver sido estabelecida. A inicialização e conexão openvpn funcionam bem. No entanto meu daemon que eu quero usar a conexão vpn parece iniciar antes que a conexão seja estabelecida, uma vez que ele usa o meu ip padrão. Se eu matar o daemon e reiniciá-lo no terminal, ele estará usando o ip vpn desejado.

Como eu faria isso para que meu daemon fosse executado na inicialização uma vez que a conexão vpn fosse estabelecida? Posso fazer isso esperando até que o dispositivo tun0 tenha sido criado (como?) Ou a criação do tun0 não seja sinônimo de conexão estabelecida, o que significa que isso pode ser muito cedo? Também procurei usar as tags LSB de dependências de tempo de execução no script init.d, mas não consegui descobrir como tornar um determinado dispositivo de rede (tun0) um requisito e, novamente, não tenho certeza se isso funcionaria. Há também um arquivo em /etc/NetworkManager/VPN/ referenciando o serviço openvpn, mas não sei como usar isso ou se o daemon do NetworkManager está sendo usado, porque / VPN é o único subdiretório dele.

Eu gostaria de soluções que são precisas, por exemplo. não apenas colocando meu script init.d com uma prioridade de execução baixa o suficiente em /etc/rc2.d/ ou esperando até que a conexão openvpn seja estabelecida.

    
por Mouse'nKeyboard 08.02.2015 / 10:35

2 respostas

2

Você pode executar scripts de openvpn com, por exemplo, a opção --up scriptname .

Isto parece-me ser melhor do que esperar que a ligação seja estabelecida um certo tempo depois de iniciar o processo openvpn . Poderá ter de experimentar um pouco com as possíveis formas de executar scripts a partir de openvpn , por ex. não usando --up , mas usando --client-connect etc .; verifique a% mancal openvpn para mais informações.

    
por 09.02.2015 / 10:22
0

Considere definir ip_nonlocal_bind . É a resposta desta questão relacionada - link . Google it - aqui está um link - link

Eu tenho que admitir que não testei como não tão experiente.

It seems to me you're trying to bind postgres to an IP associated with the tunnel. If that's the case, the ip_nonlocal_bind is the solution to your problems. Setting the ip_nonlocal_bind allows you to bind to any IP, even one not associated with your computer, which is exactly what you want when you want to bind to an IP you don't yet have - for instance when using virtual IP's that floats between active and passive nodes.

Assuming this is ipv4 only;

echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

Or throw it into /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind
    
por 21.09.2017 / 17:22