AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1263772
Accepted
codlord
codlord
Asked: 2020-08-02 04:24:04 +0800 CST2020-08-02 04:24:04 +0800 CST 2020-08-02 04:24:04 +0800 CST

É possível configurar o proxy (Squid) para que um navegador possa ignorar uma VPN?

  • 772

Eu quero fazer o seguinte (se for possível):

Tenha 1 navegador (digamos Firefox) normalmente - todo o tráfego usa minha VPN. Tenha outro navegador (digamos Chrome) onde todo o tráfego contorna a VPN.

Já configurei um PC com uma VPN usando OpenVPN e entendo como adicionar rotas estáticas para que o acesso a endereços IP específicos ignore a VPN.

Eu pensei que o que eu quero fazer pode ser possível configurando um servidor proxy (Squid) que roteia todo o tráfego fora da VPN e, em seguida, configure o navegador Chrome para usar esse servidor proxy. A menos que haja uma maneira melhor/mais fácil?

Mas não sei como fazer isso e configurar o Squid/routes apesar de fazer muita leitura e experimentação (não sou especialista em redes), nem consegui encontrar nenhum recurso para me dizer como (ou se é possível) .

Qualquer ajuda ou links para informações apreciadas.

networking vpn proxy squid openvpn
  • 3 3 respostas
  • 2459 Views

3 respostas

  • Voted
  1. Kate
    2020-08-09T13:03:26+08:002020-08-09T13:03:26+08:00

    Eu acho que o melhor seria não mudar nada na sua configuração atual, mas aproveitar os namespaces do Linux . Você pode usar ferramentas como nsjail ou Firejail por conveniência.

    A ideia seria configurar um namespace dedicado para esse outro navegador que deveria ignorar a VPN, com suas próprias regras de roteamento. Isso é tudo que você precisa, altere as regras de roteamento para que ele use sua interface Ethernet regular em vez da interface tun criada pelo OpenVPN.

    O outro benefício é o isolamento de seus aplicativos. Ao limitar o escopo e os recursos que eles podem ver, você os isola efetivamente uns dos outros.

    Usar o Firejail aqui é como eu faria aproximadamente - eu encorajo você a ler o documento para ajustar a configuração para o resultado desejado. O Firejail vem com perfis prontos para uso para aplicativos comuns, para que possa iniciar imediatamente o sandboxing de seus navegadores e outros aplicativos.

    Existe também uma ferramenta de configuração de GUI (firetools), mas minha sugestão seria experimentar o Firejail com apenas um aplicativo em vez de reconfigurar todo o seu ambiente.

    Aqui está um PoC usando Python (supondo que você tenha o pacote netifaces instalado).

    firejail --net=enp4s0 --noprofile python3
    
    >>> importar netifaces
    >>> netifaces.interfaces()
    ['lo', 'eth0-11182']
    

    Como você pode ver, o Python vê apenas uma interface (além da interface de loopback). eth0-11182 é, obviamente, uma interface virtual que existe apenas dentro do namespace atual.

    Leitura sugerida: Guia de sandboxing do Firefox

    • 2
  2. ofirule
    2020-08-08T22:29:33+08:002020-08-08T22:29:33+08:00

    Eu não usei squid, mas pelo que entendi é apenas um proxy comum, portanto, ao instalá-lo em seu computador, ele ainda segue as regras de roteamento do seu sistema operacional.

    Eu tentaria a seguinte configuração:

    1. Configure o OpenVPN para não alterar seu gateway padrão
    2. Instale o squid ou algum outro serviço de proxy na mesma máquina rodando seu servidor OpenVPN

    Depois de ter esta configuração configurada, seus navegadores não usariam a VPN por padrão, e você pode configurar um deles para ir pelo servidor proxy usando o endereço de sub-rede OpenVPN do servidor.

    Nota1: Você deve usar o proxy através do endereço de sub-rede OpenVPN e não seu IP público.

    Nota2: Não permita tráfego para a porta do servidor proxy de fora da sub-rede OpenVPN, pode ser obtido usando iptables ou não abrindo a porta usando as regras do seu provedor de nuvem

    ATUALIZAR:

    Ao usar um serviço de VPN externo (por exemplo: nordVPN) você não tem acesso à máquina que executa o servidor OpenVPN e isso torna a solução acima inválida, pois você não pode instalar nada na máquina que executa o servidor OpenVPN.

    É possível instalar o serviço proxy em outro dispositivo da sua sub-rede local, e alguns roteadores (ex: mikrotik ) disponibilizam esse recurso. Mas isso fará com que a solução funcione apenas em um local específico com essa configuração.

    • 1
  3. Best Answer
    codlord
    2020-08-13T06:43:28+08:002020-08-13T06:43:28+08:00

    Obrigado por todas as ideias e comentários até agora. Eu (ainda) não consegui firejailtrabalhar com a VPN ativa (sugestão @Anonymous). Mas segui a sugestão vinculada por @ofirule especificamente esta resposta para usar grupos de controle.

    Essa resposta tem um link para um script de shell completo para fazer tudo automaticamente, mas eu queria fazer as coisas manualmente, pelo menos para começar, para poder acompanhar e ter certeza de que sabia exatamente o que estava mudando. Então, seguindo o Manual HowTo lá vou postar abaixo exatamente o que eu fiz para qualquer outra pessoa.

    Observe que minha interface de rede é denominada enp0s31f6 e meu IP de gateway é 192.168.0.1 Acho que essas são as duas únicas coisas específicas que podem precisar ser alteradas para outras pessoas após isso:

    # Install required tools
    sudo apt-get install cgroup-lite cgroup-tools
    
    sudo su
    
    # Define a control group named novpn with a classid of 11:11
    cd /sys/fs/cgroup/net_cls
    mkdir novpn
    cd novpn
    echo 0x00110011 > net_cls.classid
    
    # Add mark 11 on packets of classid 0x00110011
    iptables -t mangle -A OUTPUT -m cgroup --cgroup 0x00110011 -j MARK --set-mark 11
    
    # Force the packets to exit through my interface (enp0s31f6) with NAT
    iptables -t nat -A POSTROUTING -m cgroup --cgroup 0x00110011 -o enp0s31f6 -j MASQUERADE
    
    # Define a new "novpn" routing table
    echo 11 novpn >> /etc/iproute2/rt_tables
    
    # Packets with mark 11 will use novpn
    ip rule add fwmark 11 table novpn
    
    # Add a route for default gateway for novpn
    ip route add default via 192.168.0.1 table novpn
    
    # Unset reverse path filtering for all interfaces
    # My PREVIOUS VALUES: lo was 0, others (all, default, enp0s31f6) were 2 in case I need to revert back.
    for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i; done
    
    exit
    
    # Create control group    
    sudo cgcreate -t $USER:$USER -a $USER:$USER -g net_cls:novpn
    
    # Run app on specific novpn interface (close all browser windows first)
    killall firefox
    cgexec -g net_cls:novpn firefox
    

    Eu (ainda) não entendo completamente todos os itens acima, mas funciona! :-) Executando o firefox através do cgexeccomando, posso verificar meu IP no firefox com a VPN ativa e posso ver que relata meu IP público real e não o IP da VPN. Também provei que esse método funciona executando um serviço de streaming de rádio que estava tendo problemas ao trabalhar com a VPN - agora funciona absolutamente bem ignorando a VPN.

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve