Ignorando uma VPN para todo o tráfego SSL

0

Eu tenho um servidor Raspberry Pi executando uma variedade de tarefas e aplicativos através de várias portas; um dos quais é um serviço de automação residencial executado por meio de um proxy Nginx na mesma máquina para permitir conexões https externamente, mas apenas conexões http na LAN. Até agora isso funcionou muito bem, mas recentemente decidi usar um serviço VPN pago (usando o OpenVPN) para aumentar a privacidade. Isso funciona bem até que eu tente acessar meu servidor de automação residencial usando SSL (que é necessário para serviços como o Amazon Alexa). Como resultado, tenho tentado contornar a VPN para tráfego SSL na porta 443, mas forço todos os outros tráfegos através do túnel usando as seguintes rotas e regras ufw quando a conexão VPN está habilitada:

ip route add default via $route_vpn_gateway dev tun1 table 10
ip rule add from $ifconfig_local/32 table 10
ip rule add to $route_vpn_gateway/32 table 10
ip route flush cache


ufw insert 1 reject out on wlan0 from any
ufw insert 1 allow out on wlan0 from any port 443
ufw insert 1 allow in on tun1 to any
ufw insert 1 reject out on tun1 from any port 443
ufw insert 1 deny in on tun1 from any port 443
ufw insert 1 allow in on wlan0 to any port 443

Eu tentei inserir as regras mais específicas no início da lista de regras. Isso não parece funcionar e as conexões SSL ainda não conseguem passar. Há algo que estou sentindo falta aqui? A configuração da VPN é configurada para evitar que todo o tráfego seja roteado automaticamente pelo túnel.

    
por Jimbroze 08.08.2017 / 13:57

2 respostas

1

Para rotear o tráfego com base na interface em que ele chegou e em qual porta, você pode usar o recurso iptables mark.

No seu caso, marque o tráfego recebido da porta 443 e / ou da interface WAN / local e use um ip rule para forçá-lo a usar uma tabela de roteamento dedicada. Defina a rota padrão nessa tabela para usar seu gateway não-vpn.

Como marcar e direcionar tráfego marcado é explicado aqui:

link

Se você desativar o firewall, verá que o tráfego agora está sendo roteado corretamente.

Eu não tenho 100% de certeza sobre as regras de firewall, mas verifique o log para ver se está funcionando como esperado /var/log/ufw.log .

Como ufw é um front-end para iptables , obtenha a lista completa de regras como esta iptables -S . Para verificar quais regras reais estão afetando seu tráfego, use o recurso trace de iptables .

    
por 17.01.2018 / 10:13
0

O que você está tentando fazer é chamado de tunelamento dividido. Você teria que configurar uma rota ou regra no seu roteador para permitir que todo o tráfego saindo da origem para o destino usasse o ISP vs VPN.

    
por 08.08.2017 / 15:16