Como bloquear o acesso à Internet quando a VPN pára em um roteador DD-WRT e separa VPN / clientes diretos?

1

Estou usando um roteador DD-WRT 3.0 para conectar via openVPN. Na LAN, 192.168.1.50 é um dispositivo que não deve passar pela VPN.

( Como defino o firewall para que 192.168.1.50 não passe por VPN e Como fazer com que todos os outros IPs percam a conexão WAN quando a VPN é desconectada / desconectada? )

OR

( Crie duas sub-redes, uma através de VPN (dispositivos wi-fi) e a outra direta (dispositivos com fio) e A sub-rede VPN perde conectividade WAN quando a VPN cai )

Não tenho preferência por nenhuma configuração. O que for mais fácil.

Esta regra não funcionou (para o primeiro cenário):

iptables -I FORWARD ! -o tun1 -s 192.168.1.50 -j DROP

Aqui está a tabela de rotas em uso, com o roteador no modo gateway:

    
por Gaia 27.10.2015 / 01:28

2 respostas

1

Alguém no fórum do DD-WRT ajudou-me a resolver isto da melhor forma possível maneira (mais simples).

O roteamento baseado em diretivas é a maneira correta de realizar a parte seletiva do problema de tunelamento da VPN . É um dos campos em que você especifica detalhes para a conexão do OpenVPN. Você tem que entrar aqui os dispositivos que você quer ir através da VPN. Note que, devido a um bug no DD-WRT, o IP do roteador em si não pode estar nesta lista.

Então eu configurei o seguinte:

  • O DHCP serve de 1 a 127.
  • Todos os dispositivos que eu quero na VPN recebem IPs estáticos > 127
  • Os dispositivos que não devem passar pela VPN devem receber um IP estático < 128 ou apenas receber um IP de DHCP, que será < 128
  • O roteamento baseado em política CIDR é 192.168.1.128/25 (o que significa colocar todos os dispositivos com IP > 127 através da VPN )

Agora, para a segunda parte do problema, que está negando o acesso WAN aos dispositivos que devem estar na VPN quando a VPN está desligada / com falha pode ser feita inserindo os seguintes comandos no Seção> Salvar Firewall :

iptables -I FORWARD -s 192.168.1.128/25 -o $(nvram get wan_iface) -m state --state NEW -j REJECT --reject-with icmp-host-prohibited 
iptables -I FORWARD -p tcp -s 192.168.1.128/25 -o $(nvram get wan_iface) -m state --state NEW -j REJECT --reject-with tcp-reset

Duas notas sobre os comandos acima:

  1. Ele usa REJECT em vez de DROP , pois o primeiro é um pouco mais amigável do que o segundo. DROP não responde e exige que o cliente atinja o tempo limite, o que pode ser irritante para os usuários. Em contraste, REJECT faz com que o cliente saia IMEDIATAMENTE.
  2. O estado da conexão verificada é NEW . Ao verificar NEW, impedimos que esses dispositivos iniciem conexões de saída, mas não impedem que eles sejam acessados remotamente e enviem respostas por meio da WAN (pelo menos quando a VPN estiver inativa). Se você quiser impedir o acesso remoto, remova --state NEW dessas regras.
por 30.10.2015 / 18:03
1

Para bloquear todo o tráfego de saída para clientes na WAN normal, você pode usar a variável nvram get wan_iface

IPV4_WAN=$(nvram get wan_iface)
iptables -I FORWARD -s 192.168.x.x/24 -o "$IPV4_WAN" -j DROP

Você vai querer definir sua sub-rede IPv4 específica, tenha cuidado para não bloquear todo o seu alcance de LAN!

Isso bloqueará qualquer tráfego de saída que ultrapasse o roteador, quando não estiver na interface VPN, você pode confirmar fazendo traceroute em qualquer endereço IPv4 externo. Depois do primeiro salto, o tráfego irá cair. / p>

Para o seu cliente IPv4 específico, estou um pouco confuso. Você não pode criar uma sub-rede IPv4 para os clientes que deseja ir para a VPN e, em seguida, com base na faixa, certifique-se de que 192.168.1.50 client não esteja dentro dela? Em seguida, basta adicionar uma regra ACCEPT para permitir que ela use a WAN normalmente?

iptables -I FORWARD -s 192.168.1.50 -o "$IPV4_WAN" -j ACCEPT
    
por 29.10.2015 / 23:30