Como posso configurar um Interruptor de interrupção VPN IP-Agnostic usando o ufw

2

Estou procurando a resposta, mas não encontrei nada.

Como a maioria dos usuários de Internet inteligentes, eu uso uma VPN. Você pode me corrigir se eu estiver errado, mas quando eu configurar uma VPN (pelo menos, usando o protocolo OpenVPN) o roteamento da rede será assim:

app 1 -----
           |
app 2 -----+ ----- tun0 -----> outside world
           |
app 3------+

Então, se a vpn estiver desligada:

app 1 -----
           |
app 2 -----+ -----------> outside world [No protection :(]
           |
app 3------+

Outro sources tem a configuração para permitir o tráfego de tun0 para o endereço IP da VPN. No entanto, em muitos casos, o endereço IP não é conhecido ou é escolhido aleatoriamente (por exemplo, ao capricho do usuário).

O problema que enfrentei ao passar horas com esse problema é que consegui fazer isso funcionar (permitindo apenas tun0 para qualquer lugar), mas somente se o tun0 já estava ativo, e < em> somente durante essa sessão de conexão. Uma vez que eu terminei a conexão, as regras não permitiriam o tráfego any , nem se conectariam à vpn.

Estranhamente, o Android torna isso muito fácil. Tudo o que preciso fazer é instalar o AFWall +, minha VPN favorita, permitir conexões à rede com minha VPN e permitir somente conexões VPN de aplicativos que eu quero. Todos os outros serão bloqueados e, se a VPN ficar inativa, nenhum tráfego será permitido. Por que isso é tão difícil de fazer em um PC?

tl; dr Existe uma regra ufw para permitir todo / algum tráfego ao tun0, então permitir tráfego do tun0 para qualquer lugar?

    
por Dash2TheDot 11.11.2017 / 17:50

1 resposta

2

Vou tratar isso como um problema XY : seu objetivo ( X) é que alguns aplicativos usem uma VPN e deixem de ter conexão com a Internet quando a VPN for desativada. Você pensa que precisa (Y) para fazer isso com regras de firewall e um kill switch, mas há uma solução muito mais fácil: namespaces de rede .

Portanto, configure o OpenVPN para criar a interface tun em um novo namespace de rede (por exemplo, esta questão ). Em seguida, inicie todos os seus aplicativos que devem acessar a Internet somente através da VPN dentro deste namespace (usando ip netns exec , veja o link acima). Se a VPN for desativada, os aplicativos não terão mais acesso à Internet. Se subir novamente, eles terão novamente acesso.

Como bônus, qualquer aplicativo em execução no namespace principal ainda poderá acessar a internet diretamente, sem a VPN (e, portanto, com uma conexão mais rápida).

Tentar fazer isso com regras de firewall está mais envolvido, porque é claro que você só pode configurar as regras de firewall depois que todos os endereços IP relacionados à VPN forem conhecidos. Um firewall funciona em bases IP, então não há como evitar isso.

Eu não tenho ideia do que o AFWall + realmente faz (você tentou descobrir?). Talvez esteja usando namespaces internamente ...

    
por 12.11.2017 / 12:15