Configure o cliente openvpn para rotear todo o tráfego da LAN através do túnel VPN no Openwrt

1

Estou a executar o caos OPENWRT mais calmo no Raspberry pi 2. Configurei com êxito o cliente e o cliente OPENVPN para encaminhar o tráfego através do túnel VPN. Mas quando eu reinicio a interface LAN pi conecto diretamente à interface WAN para o pequeno tempo e tráfego de rota fora do túnel VPN. Isso só vai acontecer por muito pouco tempo. (Hora que precisa do cliente VPN para iniciar). Mas eu preciso parar isso. Eu preciso encaminhar quase todo o tráfego através do cliente VPN o tempo todo e se o usuário VPN não conectado não conseguir acessar a internet. Eu configurei o cliente Proxy chamado TINYPROXY com essa configuração e isso pode causar o problema. Mas eu não tenho idéia clara de como parar isso

Estas são as minhas configurações

/ etc / config / network

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config interface 'lan'
    option ifname 'eth0'
    option proto 'static'
    option netmask '255.255.255.0'
    option ipaddr '192.168.2.1'
    option dns '8.8.8.8 8.8.4.4'

config interface 'wan'
    option ifname 'eth1'
    option proto 'dhcp'
    option peerdns '0'
    option dns '8.8.8.8 8.8.4.4'

config globals 'globals'
    option ula_prefix 'fd14:b495:5965::/48'

config interface 'vpn0'
    option ifname 'tun0'
    option proto 'none'
    option auto '1'
    option delegate '0'

/ etc / config / firewall

config defaults
    option syn_flood '1'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'

config zone
    option name 'lan'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'
    option network 'lan'

config zone
    option name 'wan'
    option output 'ACCEPT'
    option masq '1'
    option mtu_fix '1'
    option input 'ACCEPT'
    option forward 'ACCEPT'
    option network 'wan wan6 vpn0'

config rule
    option name 'Allow-DHCP-Renew'
    option src 'wan'
    option proto 'udp'
    option dest_port '68'
    option target 'ACCEPT'
    option family 'ipv4'

config rule
    option name 'Allow-Ping'
    option src 'wan'
    option proto 'icmp'
    option icmp_type 'echo-request'
    option family 'ipv4'
    option target 'ACCEPT'

config rule
    option name 'Allow-IGMP'
    option src 'wan'
    option proto 'igmp'
    option family 'ipv4'
    option target 'ACCEPT'

config include
    option path '/etc/firewall.user'

config redirect
#   option target 'DNAT'
#   option dest 'vpn'
    option name 'Transparent Proxy Redirect'
    option src 'lan'
    option proto 'tcp'
    option dest_port '8888'
    option src_dport '80'
    option src_dip '!192.168.2.1'
    option dest_ip '192.168.2.1'

config zone
    option name 'vpn'
    option masq '1'
    option input 'ACCEPT'
    option forward 'ACCEPT'
    option output 'ACCEPT'
    option network 'vpn0'

config forwarding
    option src 'vpn'
    option dest 'lan'

/ etc / config / tinyproxy

config tinyproxy
    option enabled '1'
    option User 'nobody'
    option Group 'nogroup'
    option Port '8888'
    option Timeout '600'
    option DefaultErrorFile '/usr/share/tinyproxy/default.html'
    option StatFile '/usr/share/tinyproxy/stats.html'
    option LogFile '/var/log/tinyproxy.log'
    option LogLevel 'Info'
    option MaxClients '100'
    option MinSpareServers '5'
    option MaxSpareServers '20'
    option StartServers '10'
    option MaxRequestsPerChild '0'
    option ViaProxyName 'tinyproxy'
    list Allow '127.0.0.1'
    list Allow '192.168.2.1/24'
    list ConnectPort '443'
    list ConnectPort '563'
    list ConnectPort '80'
    option Filter '/www/textui/tinyproxy/blocked.txt'

Eu quero exatamente alcançar isso

USER - > LAN - > TINYPROXY - > VPN - > WAN

Meu TINYPROXY está funcionando perfeitamente bem. Todas as outras configurações estão funcionando bem. O problema existe apenas por pouco tempo quando o PI reinicia

Alguém poderia me ajudar nisso?

    
por charith 26.10.2015 / 16:24

2 respostas

0

Isso é (para mim!) uma pergunta difícil. Eu posso oferecer uma solução parcial e uma ideia para testar uma solução completa.

SE este era um Linux regular, como por exemplo um Debian, pode-se inserir, no arquivo /etc/network/interfaces , na sub-rotina da interface externa (vamos chamá-lo wan ), a seguinte linha:

  pre-up iptables -A OUTPUT -s 192.168.0.0/24 -o wan -j DROP

onde assumi que sua LAN é 192.168.0.0/24. O fato de usar pre-up torna certa a regra de firewall em vigor quando a interface wan é ativada. Juntamente com a regra:

 iptables -t nat -A POSTROUTING -o wan -j MASQUERADE 

podemos ter certeza de que os pacotes da LAN passam apenas pelo tun0 , mesmo que alguns sejam descartados enquanto esperamos que o OpenVPN estabeleça a conexão com o servidor.

No entanto, não consegui encontrar nas páginas da Web do OpenWRT um substituto para a condição pre-up acima. Então, se você configurar seu firewall com as duas regras acima, você estará certo de que nenhum pacote de sua LAN deixa seu roteador fora do OpenVPN, mas você não tem certeza de que o firewall do iptables será ativado antes networking.

Em esta página Wiki do OpenWRT , a ordem de execução dos diferentes serviços é explicada:

rcS executes the symlinks to the actual startup scripts located in /etc/rc.d/S##xxxxxx with option "start":

.....

S40network start a network subsystem (run /sbin/netifd, up interfaces and wifi

S45firewall create and implement firewall rules from /etc/config/firewall

Você vê que os dois serviços são iniciados um após o outro, o que deixa pouco tempo para os pacotes passarem; isso é certamente melhor do que esperar que o OpenVPN apareça. Esta é a minha solução parcial: é parcial porque encurtei o tempo durante o qual os pacotes da LAN podem passar, mas não acedeu desta vez .=0

Você pode tentar inverter os dois serviços, isto é, renomeando-os:

      S40firewall
      S45network    

e veja se isso funciona. Não tenho certeza sobre o que o iptables/netfilter faz, quando a interface que ele tenta proteger não existe. No meu Debian isso funcionou bem, mas, como eu não tenho um OpenWRT para experimentar, não posso ter certeza de que isso funcionará para você também. Esta é a minha sugestão para uma solução completa. Felicidades.

    
por 26.10.2015 / 18:09
0

O problema é que seus pacotes não estão vindo do lan , eles estão vindo do roteador que está executando o seu proxy. Não há nenhuma regra no firewall para forçar o tráfego de saída através da VPN no roteador .

Eu não tentei isso, mas ...

Defina option output REJECT na sua interface wan , depois adicione regras específicas para permitir o tráfego de saída na interface wan para os servidores e portas que o roteador precisa (dhcp, OpenVPN) antes da chegada da VPN. Nessas regras, você terá option output ALLOW e option dest wan , mas não definirá src .

Como alternativa, continue permitindo o tráfego de saída na zona e crie regras que bloqueiam o tráfego HTTP para o wan. Novamente, não defina src .

    
por 18.11.2015 / 18:44