No caso do cliente, eu acho? Qual software você está usando? OpenVPN ou um wrapper (por exemplo, NetworkManager)?
Lekensteyn
@Lekensteyn, wrapper network-manger-openvpn.
Oxwivi 02/03/11
Respostas:
62
network-manager-openvpnnão fornece essa funcionalidade, você deve usar openvpndiretamente.
Passe --script-security 2 --up /path/to/your/scriptpara ele ao conectar. Se você estiver usando um arquivo de configuração localizado em /etc/openvpn/, anexe as próximas linhas ao seu arquivo de configuração:
script-security 2# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
--script-security level [método]
Esta diretiva oferece controle no nível da política sobre o uso do OpenVPN
de programas e scripts externos. Valores de nível mais baixo são mais
valores restritivos e mais altos são mais permissivos. Configurações para
nível:
0 - Estritamente nenhuma chamada de programas externos.
1 - (Padrão) Apenas chama executáveis internos, como ifconfig,
ip, rota ou netsh.
2 - Permitir a chamada de executáveis internos e definidos pelo usuário
scripts.
3 - Permitir que senhas sejam passadas para scripts via ambiente
variáveis (potencialmente inseguras).
--up cmd
Comando Shell para executar após a abertura bem-sucedida do dispositivo TUN / TAP
- alteração do UID do usuário). O script up é útil para especificar
Comandos de rota que direcionam o tráfego IP destinado a
sub-redes existentes na outra extremidade da conexão VPN em
o tunel.
Ordem de execução do script
--up Executado após ligação do soquete TCP / UDP e TUN / TAP aberto.
--down Executado após o fechamento do TCP / UDP e TUN / TAP.
Existem mais eventos para execução de scripts, esses podem ser encontrados na página de manual .
Crie /etc/openvpn/up.she conceda permissões de execução (por exemplo, 755 ou 700). Exemplo de conteúdo para adicionar um endereço e rota IPv6 (mostrado para fins educacionais, não o copie diretamente):
#!/bin/sh# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Observe que este upscript é executado como raiz. Se você não especificou a Usere Group, o OpenVPN também executará scripts como downroot.
Se você não souber usar o openvpn diretamente, adicione seus detalhes de configuração atuais: Tipo de conexão (por exemplo, certificados X509), porta Gateway, compactação LZO, força do TCP, uso de dispositivo de toque, cifra, HMAC e TLS. Mencione suas configurações de IP também se não forem automáticas. Para sua privacidade, deixe de fora seus endereços reais.
Lekensteyn
Tudo bem, decidi usar o OpenVPN diretamente (e sim, tenho o arquivo .conf), mas será reconectado automaticamente se a conexão for perdida? E como faço para conectar-se automaticamente sempre que houver conexão com a Internet? E, finalmente, não entendi onde devo adicionar as linhas que você mencionou na resposta.
precisa saber é o seguinte
Eu ampliei a resposta para usar openvpndiretamente. Ao configurar um servidor, notei que o OpenVPN tentará se reconectar quando o servidor cair. Não tenho certeza se o OpenVPN continua tentando quando sua interface de rede cai.
precisa saber é o seguinte
Meu problema não é quando a interface de rede fica inoperante - ele tenta se reconectar quando a conexão com a Internet é perdida e recuperada. Eu só quero me conectar à VPN sempre que tiver conexão com a Internet.
Oxwivi 5/03/11
Ah, e o script se aplica a todas as conexões VPN? E por favor, tag @Oxwivi ao responder, não vou ser notificado de outra forma.
Oxwivi
5
Para a pergunta: "Como posso associar um script ao OpenVPN para que seja executado quando a VPN é conectada com êxito?" Quero ressaltar que Lekensteyn forneceu uma excelente resposta . Mas, no momento em que sua resposta foi composta, faltava um pouco de clareza sobre como os argumentos da linha de comando openvpn deveriam ser fornecidos para iniciar o openvpn em uma máquina ubuntu, especialmente para que funcionasse da mesma maneira após as reinicializações.
Argumentos da linha de comando Openvpn no Ubuntu:
Naturalmente, pode-se iniciar o openvpn a partir de uma linha de comando com todas as opções legais disponíveis. Mas, em uma máquina Ubuntu, se alguém deseja iniciar o openvpn com os mesmos argumentos da linha de comando após uma reinicialização, deve considerar a edição do arquivo /etc/default/openvpn. Examine as seguintes linhas:
# Optional arguments to openvpn's command line
OPTARGS=""
- nível de segurança de script
Esta diretiva oferece controle no nível da política sobre o uso de recursos externos pelo OpenVPN
programas e scripts. Valores de nível mais baixo são mais restritivos, mais altos
valores são mais permissivos. Configurações para nível:
0 - Estritamente nenhuma chamada de programas externos.
1 - (Padrão) Apenas chama executáveis internos, como ifconfig, ip, route,
ou netsh.
2 - Permitir a chamada de executáveis internos e scripts definidos pelo usuário.
3 - Permitir que senhas sejam passadas para scripts por meio de variáveis ambientais
(potencialmente inseguro).
As versões do OpenVPN anteriores à v2.3 também suportavam um sinalizador de método que indicava como
O OpenVPN deve chamar comandos e scripts externos. Isso pode ser executado
ou sistema. A partir do OpenVPN v2.3, esse sinalizador não é mais aceito. Na maioria dos * nix
ambientes em que a abordagem execve () foi usada sem problemas.
Algumas diretivas como --up permitem que opções sejam passadas para o script externo.
Nesses casos, verifique se o nome do script não contém espaços ou o
O analisador de configuração engasgará porque não pode determinar onde o script
nome termina e as opções de script são iniciadas.
Combinado com uma seção abreviada em --up
--up cmd
Execute o comando cmd após a abertura bem-sucedida do dispositivo TUN / TAP (alteração do UID pré-usuário).
O cmd consiste em um caminho para o script (ou programa executável), seguido opcionalmente
por argumentos. O caminho e os argumentos podem ser de aspas simples ou duplas e / ou
escapou usando uma barra invertida e deve ser separado por um ou mais espaços.
Exemplo:
Na minha máquina com um openpvn server.conf, tenho as seguintes linhas no meu /etc/default/openvpnarquivo:
Aliás, o nat.sh configura a conversão de endereços de rede para rotear o tráfego de rede privada dos clientes openvpn para a Internet pública; o que é bom para quem não confia em um ponto de acesso WIFI público.
Além de permitir a reinicialização conforme o esperado após uma reinicialização, quando /etc/openvpn/[client or server].confe os /etc/default/openvpnarquivos estiverem configurados corretamente, o openvpn pode ser iniciado ou interrompido com:
sudo service openvpn start
sudo service openvpn stop
Outras opções úteis disponíveis para service openvpnincluir cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.
Como esse é um tópico bastante antigo, não tenho certeza se ainda interessa. Se você ainda deseja usar o NetworkManager para conectar-se a uma VPN, pode adicionar uma regra simples do udev assim:
Eu me deparei com a resposta em minha pesquisa para resolver esse problema e descobri que a melhor solução é (usando o servidor openvpn) da seguinte maneira:
Adicione as seguintes linhas à configuração do openvpn (normalmente /etc/openvpn/server.conf). Na resposta acima, foi usado para cima e para baixo, que são usados quando o servidor é iniciado (reinicia). A diretiva cliente-conexão (e cliente-desconexão) são usadas quando o cliente se conecta (desconecta).
network-manger-openvpn
.Respostas:
network-manager-openvpn
não fornece essa funcionalidade, você deve usaropenvpn
diretamente.Passe
--script-security 2 --up /path/to/your/script
para ele ao conectar. Se você estiver usando um arquivo de configuração localizado em/etc/openvpn/
, anexe as próximas linhas ao seu arquivo de configuração:Na página de manual do OpenVPN :
Existem mais eventos para execução de scripts, esses podem ser encontrados na página de manual .
Crie
/etc/openvpn/up.sh
e conceda permissões de execução (por exemplo, 755 ou 700). Exemplo de conteúdo para adicionar um endereço e rota IPv6 (mostrado para fins educacionais, não o copie diretamente):Observe que este
up
script é executado como raiz. Se você não especificou aUser
eGroup
, o OpenVPN também executará scripts comodown
root.fonte
openvpn
diretamente. Ao configurar um servidor, notei que o OpenVPN tentará se reconectar quando o servidor cair. Não tenho certeza se o OpenVPN continua tentando quando sua interface de rede cai.Para a pergunta: "Como posso associar um script ao OpenVPN para que seja executado quando a VPN é conectada com êxito?" Quero ressaltar que Lekensteyn forneceu uma excelente resposta . Mas, no momento em que sua resposta foi composta, faltava um pouco de clareza sobre como os argumentos da linha de comando openvpn deveriam ser fornecidos para iniciar o openvpn em uma máquina ubuntu, especialmente para que funcionasse da mesma maneira após as reinicializações.
Argumentos da linha de comando Openvpn no Ubuntu:
Naturalmente, pode-se iniciar o openvpn a partir de uma linha de comando com todas as opções legais disponíveis. Mas, em uma máquina Ubuntu, se alguém deseja iniciar o openvpn com os mesmos argumentos da linha de comando após uma reinicialização, deve considerar a edição do arquivo
/etc/default/openvpn
. Examine as seguintes linhas:Na página de manual da comunidade openvpn em
--script-security
Combinado com uma seção abreviada em
--up
Exemplo:
Na minha máquina com um openpvn server.conf, tenho as seguintes linhas no meu
/etc/default/openvpn
arquivo:Aliás, o nat.sh configura a conversão de endereços de rede para rotear o tráfego de rede privada dos clientes openvpn para a Internet pública; o que é bom para quem não confia em um ponto de acesso WIFI público.
Além de permitir a reinicialização conforme o esperado após uma reinicialização, quando
/etc/openvpn/[client or server].conf
e os/etc/default/openvpn
arquivos estiverem configurados corretamente, o openvpn pode ser iniciado ou interrompido com:Outras opções úteis disponíveis para
service openvpn
incluircond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.fonte
Como esse é um tópico bastante antigo, não tenho certeza se ainda interessa. Se você ainda deseja usar o NetworkManager para conectar-se a uma VPN, pode adicionar uma regra simples do udev assim:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Isso deve executar qualquer script após a criação da VPN.
fonte
Eu me deparei com a resposta em minha pesquisa para resolver esse problema e descobri que a melhor solução é (usando o servidor openvpn) da seguinte maneira:
Crie um script para ser executado:
Adicione as seguintes linhas à configuração do openvpn (normalmente
/etc/openvpn/server.conf
). Na resposta acima, foi usado para cima e para baixo, que são usados quando o servidor é iniciado (reinicia). A diretiva cliente-conexão (e cliente-desconexão) são usadas quando o cliente se conecta (desconecta).fonte