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

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

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

No entanto, tenho um laptop que coloco em casa usando Ethernet e uso WiFi em outros lugares (tento não usar WiFi em casa - é um desastre em prédios lotados de apartamentos em Manhattan). Também gosto de ter endereços IP fixos para todos os dispositivos da minha rede, por isso corrijo a configuração IP do adaptador Ethernet e uso o mesmo IP também para o dispositivo TAP quando conectado à VPN (usando umdiretório de configuração do clienteno lado do servidor).

Existe uma maneira boa e minimamente hackeada de configurar o serviço OpenVPN no meu laptop para conectar-se apenas ao OpenVPN quando a conexão Ethernet não estiver ativa? Ter o serviço OpenVPN rodando em segundo plano automaticamente é muito conveniente e não quero ter que desligá-lo manualmente toda vez que me conectar à Ethernet, mas tê-lo tentando se conectar à mesma rede em que já estou fisicamente via VPN usando o mesmo endereço IP que já estou usando obviamente não é uma boa ideia...

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

Responder1

Eu brinquei e encontrei uma solução que funciona para minha configuração. Não é uma solução totalmente geral, então espero que alguém possa aparecer e fornecer uma solução mais robusta.

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

  • Primeiro, se você estiver executando o ufw em uma máquina conectando uma VPN a uma rede local (o que estou fazendo), será necessário configurar o ufw para permitir o encaminhamento de tráfego, já que ele descarta isso por padrão. Isso significa mudar DEFAULT_FORWARD_POLICY="DROP"para DEFAULT_FORWARD_POLICY="ACCEPT"in /etc/default/ufw.

  • Em segundo lugar, você precisa adicionar regras na ordem correta; ufw processa regras uma por uma e usa aquela que você rejeita conexões com OpenVPN (porta 1149) dentro de 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 da sua rede local realmentefazerparece que eles vêm da sua rede local, então a regra ufw é invocada.

A última parte é importante porque inicialmente não foi esse o caso quando tentei os dois primeiros passos; meu laptop OpenVPN é configurado automaticamente para tentar se conectar à minha VPN em mydomainname.com, que é atribuída dinamicamente 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. Esse pode não ser o caso para todos os roteadores, mas pelo menos para o meu roteador, conectar-se mydomainname.comde dentro da sub-rede local cria uma conexão com o servidor OpenVPN que parece ter o endereço IP do roteador, e não o do laptop. (E é uma longa história, mas na verdade quero permitir o acesso VPN de outros dispositivos conectados ao roteador, em uma sub-rede diferente - tenho uma configuração doméstica bastante complicada: D).

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

informação relacionada