Conectando-se automaticamente ao OpenVPN somente ao usar Wifi, não na Ethernet

0

Eu tenho um servidor OpenVPN configurado em minha rede doméstica usando dispositivos TAP (em vez de TUN), de forma que os clientes que se conectam remotamente à rede sejam conectados à mesma sub-rede que minha rede doméstica (com fio).

No entanto, tenho um laptop que eu conecto em casa usando Ethernet e uso WiFi em outro lugar (tento não usar WiFi em casa - é um desastre em prédios de apartamentos lotados em Manhattan). Eu também gosto de ter endereços IP fixos para cada dispositivo na minha rede, então eu corrijo a configuração de IP para seu adaptador Ethernet, e uso o mesmo IP também para o dispositivo TAP quando conectado à VPN (usando um diretório de configuração do cliente no lado do servidor).

Existe uma maneira boa e minimamente hack-ish para configurar o serviço OpenVPN no meu laptop para se conectar apenas ao OpenVPN quando a conexão Ethernet não está ativa? Ter o serviço OpenVPN sendo executado em segundo plano automaticamente é super conveniente e não quero ter que desligá-lo manualmente sempre que me conectar à Ethernet, mas tentar conectá-lo à mesma rede em que já estou fisicamente conectado VPN usando o mesmo endereço IP que eu já estou usando obviamente não é uma boa idéia ...

Eu tenho certeza que eu poderia hackear algo junto com scripts de init, mas eu gostaria de minimizar minha divergência da configuração oficial do Ubuntu o máximo possível. Eu realmente apreciaria se alguém pudesse pensar em uma abordagem mais "adequada".

    
por Stephen Lin 28.11.2014 / 01:35

1 resposta

2

Brinquei com uma solução encontrada que funciona para minha configuração. Não é uma solução totalmente geral, por isso, esperamos que alguém possa vir e dar uma solução mais robusta.

Em vez de desativar o OpenVPN no meu laptop quando na Ethernet, eu apenas configurei o ufw (Uncomplicated Firewall) no servidor OpenVPN da minha rede para rejeitar conexões da sub-rede local; é um pouco mais complicado do que criar regras usando sudo ufw allow ... e sudo ufw deny ... :

  • Primeiro, se você está executando o ufw em uma máquina ligando uma VPN a uma rede local (o que eu estou fazendo), você precisa configurar o ufw para permitir o encaminhamento de tráfego, já que ele cai por padrão. Isso significa alterar DEFAULT_FORWARD_POLICY="DROP" para DEFAULT_FORWARD_POLICY="ACCEPT" em /etc/default/ufw .

  • Em segundo lugar, você precisa se certificar de adicionar regras na ordem correta; O ufw processa as regras uma por uma e usa aquela que você rejeita conexões ao OpenVPN (porta 1149) dentro da sua sub-rede antes de permiti-las de fora apenas se você as criar nessa ordem; no meu caso, isso significava executar sudo ufw delete deny from 192.168.16.0/20 to any port 1194 (não, isso não é um erro de digitação, na verdade, eu uso uma sub-rede / 20 localmente: D) antes de executar sudo ufw allow 1194 .

  • Por último , você precisa ter certeza de que as conexões de sua rede local realmente fazem parecem vir da sua rede local então a regra ufw é invocada.

A última parte é importante porque inicialmente não era o caso quando tentei os dois primeiros passos; meu laptop O OpenVPN é configurado automaticamente para tentar se conectar à minha VPN em mydomainname.com , que é dinamicamente atribuído ao meu roteador doméstico, que, por sua vez, encaminha a porta 1194 para o computador que executa minha VPN em 192.168.16.1 . Isso pode não ser o caso de todos os roteadores, mas pelo menos para o meu roteador, conectar-se a mydomainname.com de dentro da sub-rede local cria uma conexão com o servidor OpenVPN que parece ter o endereço IP do roteador, em vez do laptop. (E é uma longa história, mas eu realmente quero permitir acesso VPN de outros dispositivos conectados ao roteador, em uma sub-rede diferente - eu tenho uma configuração inicial bem complicada: D).

A solução no meu caso acabou sendo configurar o servidor DNS do roteador com uma atribuição estática de mydomainname.com para 192.168.16.1 , para que mydomainname.com resolva diretamente para 192.168.16.1 , mas para o IP externo do meu roteador. Isso funciona para mim, mas sua milhagem pode variar.

    
por Stephen Lin 28.11.2014 / 02:31