Configurando um servidor proxy que usa uma conexão vpn

4

Meus pensamentos são assim:

Eu tenho esse serviço vpn externo ao qual estou me conectando. Mas é possível para mim configurar um servidor proxy local que usa essa conexão vpn, para que os aplicativos que se conectam através desse proxy usem a VPN? Isso se aplica a um sistema Linux.

Dicas e links são bem-vindos!

EDIT: Caso de uso: Talvez haja outra maneira de fazer isso.

Router #1 - Connects by the default net provided by ISP
Router #2 - Connects by PPTP VPN to another 'ISP'

Clientes na rede são pelo padrão conectados ao roteador normal # 1 e todo o tráfego é tratado por isso. O cliente tem um navegador diferente (ópera) que se conecta através de um proxy no roteador 2 e termina no final do túnel VPN.

Isso esclarece?

    
por Stojg 20.07.2009 / 12:25

3 respostas

0

Embora a situação descrita por você não seja possível (o aplicativo em execução não pode sobrescrever a tabela de roteamento do sistema), você pode ter várias opções:

  • configurar um proxy na rede que você está acessando por VPN e fazer com que seus aplicativos usem esse proxy como padrão. Existem vários proxies que você pode escolher dependendo do protocolo que seu aplicativo está usando
  • ssh para um host na rede em questão e explora o serviço ssh-s chamado como Dynamic Forwarding . Este é basicamente um proxy SOCKS feito de seu cliente ssh. Você pode então configurar seu aplicativo usando este proxy ou ajustá-lo com tsocks (Transparent Socks)

man ssh_config

     DynamicForward
             Specifies that a TCP port on the local machine be forwarded over the
             secure channel, and the application protocol is then used to determine
             where to connect to from the remote machine.

             The argument must be [bind_address:]port.  IPv6 addresses can be specified
             by enclosing addresses in square brackets or by using an alternative syn‐
             tax: [bind_address/]port.  By default, the local port is bound in accor‐
             dance with the GatewayPorts setting.  However, an explicit bind_address
             may be used to bind the connection to a specific address.  The
             bind_address of “localhost” indicates that the listening port be bound for
             local use only, while an empty address or ‘*’ indicates that the port
             should be available from all interfaces.

             Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh(1) will
             act as a SOCKS server.  Multiple forwardings may be specified, and addi‐
             tional forwardings can be given on the command line.  Only the superuser
             can forward privileged ports.
    
por 20.07.2009 / 13:44
5

Seis anos depois, cheguei a essa questão e quase a desanime com base na resposta aceita. A partir de hoje, não é complicado, usando o roteamento de políticas. Todos os detalhes estão disponíveis neste mesmo site, no link .

No meu caso, primeiro eu tive que ter certeza de que a vpn não era a rota padrão. Como você vai conseguir isso depende do tipo de gerenciador de conexões que você está usando.

O proxy (tinyproxy) está rodando com seu próprio usuário, então eu marquei todos os pacotes vindos deste usuário com o comando

iptables -t mangle -A OUTPUT -m owner --uid-owner 125 -j MARK --set-mark 2

em que 125 é o uid do usuário tinyproxy e 2 é um número arbitrário para ser correspondido mais tarde.

Em seguida, instruo o sistema de roteamento a usar uma tabela específica para rotear todas as solicitações marcadas com 2 .

ip rule add fwmark 2 table 3

Novamente, o 3 é apenas um número arbitrário. Apenas preste atenção para escolher uma mesa não usada (basta ver se há algo na mesa com a escolha de ip route list table 3 ).

Em seguida, preenho a tabela 3 com minha rota padrão:

ip route add default dev ppp0 via proto static scope link metric 1024

O último passo foi fazer uma regra de mascaramento, da qual eu não entendo completamente a necessidade:

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

Et voilà!

    
por 10.03.2015 / 20:05
0

Talvez eu não tenha entendido sua pergunta, mas tente o seguinte:

  • Configure um servidor, conecte-se ao seu servidor VPN (que tipo de VPN? OpenVpn, PPTP? IPSec?).
  • Tornar o GW padrão o ponto de extremidade da VPN
  • Habilite o encaminhamento de IP, algo como: "echo 1 > / proc / sys / net / ipv4 / ip_forward"
  • Nos clientes, use seu servidor como GW padrão.
por 20.07.2009 / 12:36

Tags