Bloqueia todo o tráfego não VPN no DD-WRT

0

Eu tenho um roteador com o DD-WRT instalado. Só tenho Open VPN configurado nele. Funciona muito bem.

Eu gostaria agora de fazer com que, se o túnel VPN cair, todo o tráfego seja bloqueado, nada além da própria conexão VPN deve ir diretamente para o ISP. Ou seja, o roteador só deve permitir a comunicação pela VPN.

Lendo em vários blogs, cheguei a esta linha de código:

iptables -I FORWARD -i br0 -o eth1 -j DROP 

Que eu adicionei à inicialização e ao Firewall. Mas isso não parece funcionar. Desativei a VPN e ainda estou escrevendo esta pergunta.

Isso é o que eu tenho atualmente. Que depois de vários reebots não faz absolutamente nada.

Seforimportante,éumroteadorAsusRT-N16executandofirmware:DD-WRTv24-sp2(12/20/11)mega

Ponteatual(maisseajudaainformação).

EDIT:Eutenhoissoparafuncionarusandoosseguintescomandosdefirewall:

iptables-IFORWARD-ibr0-otun0-jACCEPTiptables-IFORWARD-itun0-obr0-jACCEPTiptables-IFORWARD-ibr0-ovlan2-jDROPiptables-IINPUT-itun0-jREJECTiptables-tnat-APOSTROUTING-otun0-jMASQUERADE

Escreveuumartigodetalhandocomousá-lonoDD-WRTcomoOpenVPNparabloqueartodootráfegonãoVPNaqui: link

    
por JensB 14.02.2017 / 19:06

1 resposta

1

Você tem o OpenVPN como o endpoint no wrt? A regra FORWARD não afetará o tráfego originado no próprio Asus, apenas o tráfego que é enviado em / sobre uma interface diferente na qual o Asus precisa rotear. Este diagrama do Netfilter pode ser útil

Exemplo (na sua estação de trabalho Linux): adicione um logger para a porta 80 saindo da sua interface WAN (pode ser eth0 no seu, eu corro uma br0 bridge para virtualização):

# iptables -I FORWARD -o br0 -p tcp --dport 80 -j LOG --log-prefix="FWD: "

Agora conecte-se a um servidor que usa a porta 80

# wget -q www.google.com -O /tmp/out.htm

Verifique sua cadeia FORWARD :

# iptables -nvL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        tcp  --  *      br0     0.0.0.0/0            0.0.0.0/0            tcp dpt:80 LOG flags 0 level 4 prefix "FWD: "

Nada .. dmesg também é silencioso:

# dmesg | grep FWD:

Nada é mostrado .. agora tente a cadeia OUTPUT:

# iptables -I OUTPUT -o br0 -p tcp --dport 80 -j LOG --log-prefix="OUT: "

Depois de repetir o wget, você deve ver agora:

    # dmesg | grep OUT
...
    [427898.519765] OUT: IN= OUT=br0 SRC=192.168.1.6 DST=72.21.91.29 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=62284 DF PROTO=TCP SPT=58982 DPT=80 WINDOW=242 RES=0x00 ACK URGP=0 

Eliminar o TCP de saída agora se torna uma regra simples que pode se parecer com isso. Você também pode deixar de fora o -p tcp para bloquear qualquer tráfego IP, isso é apenas um exemplo:

# iptables -I OUTPUT -o br0 -p tcp -j REJECT --reject-with icmp-host-prohibited

# wget www.google.com -O /tmp/foo
converted 'http://www.google.com' (ANSI_X3.4-1968) -> 'http://www.google.com' (UTF-8)
--2017-02-14 12:38:00--  http://www.google.com/
Resolving www.google.com (www.google.com)... 216.58.192.132, 2607:f8b0:4009:80c::2004
Connecting to www.google.com (www.google.com)|216.58.192.132|:80... failed: No route to host.
Connecting to www.google.com (www.google.com)|2607:f8b0:4009:80c::2004|:80... failed: Address family not supported by protocol.
    
por 14.02.2017 / 19:40