Configurar VPN apenas para algum software especial, não para todas as partes do sistema?

3

Como usar a VPN apenas para alguma parte do sistema? Isso significa que, por exemplo, o Firefox e o aria2c usarão o vpn e o pidgin não! É possível?

No meu caso, eu quero usar VPN para todo o sistema, exceto: transmissão, apt-get e pidgin ou vice-versa: Apenas usando vpn para estes softwares: firefox, aria2c, youtube-dl

    
por mini 31.07.2013 / 14:12

4 respostas

1

@sobre a pergunta do superusuário sobre diferentes interfaces para diferentes processos

Esta resposta requer alguma compilação (veja acima para mais), acesso root e o comando ip de iproute package

sudo apt-get install iproute

Isso irá recuperar e compilar a biblioteca bind.so PRELOAD no seu diretório atual.

wget http://www.ryde.net/code/bind.c.txt -O bind.c
gcc -nostartfiles -fpic -shared bind.c -o bind.so -ldl -D_GNU_SOURCE

Agora, vamos supor que sua VPN esteja on-line e você saiba o nome do seu dispositivo de encapsulamento (como tun0). Vamos supor também que você saiba o seu padrão gw ( route |awk '/default/ {print $2 }' ) E seu túnel / outro gateway de dispositivo route |awk '/tun0/ {print $2 }'

## run as root:
## which device to route out with (tun0, eth0, wlan0) 
export DEV=tun0
## default gw to use for that device (see above for advice)
export DEVGW=192.168.1.1
# which routing table to use
export TABLE=special_table1
# get ip for "$DEV"
export BINDIP=$(ifconfig $DEV | perl -ne 'if (/inet addr:([\d\.]+)/) {print $1}')

## create empty routing tables
# match name to TABLE variable above with unique number before it.
# like: (creates two tables)
echo 201 special_table1 >> /etc/iproute2/rt_tables
echo 202 special_table2 >> /etc/iproute2/rt_tables

## add default gw for special routing table
ip route add default via $DEVGW dev $DEV table $TABLE
## source route all traffice from you bound ip through that
ip rule add from $BINDIP table $TABLE

# flush routing cache
ip route flush cache

Para ver suas tabelas de roteamento:

# This is the main table (should basically have same info as 'route -n')
ip route show table main
# your special_table1
ip route show table special_table1

# this this you can see which source ips trigger which routing table
ip rule show

Execução de um programa como o firefox com bind.so PRELOADED e vinculá-lo à interface com a qual deseja direcionar o tráfego.

### run as user 
## change DEV to with route/device you want your program to bind to 
export DEV=tun0
export BINDIP=$(ifconfig $DEV | perl -ne 'if (/inet addr:([\d\.]+)/) {print $1}')
BIND_ADDR="$BINDIP" LD_PRELOAD=./bind.so "PROGRAM NAME"

#like:
BIND_ADDR="$BINDIP" LD_PRELOAD=./bind.so firefox

Se você quiser, pode repetir isso para quantas interfaces desejar e vincular. Portanto, para que o aplicativo específico esteja vinculado à interface específica. Todos os aplicativos não iniciados com o bind.so são encaminhados conforme sua tabela de roteamento principal especifica.

    
por Manwe 08.08.2013 / 14:24
0

Se você puder determinar os endereços IP e / ou portas específicos que deseja usar com a VPN ou vice-versa, o comando ip ajudará você a fazer isso, permitindo / impedindo uma rota para tal e tal.

O comando ip é encontrado no pacote iproute:

sudo apt-get install iproute
man ip

Eu tenho usado isso de uma forma muito limitada, então eu não quero lhe dar informações detalhadas, mas tenho certeza que você pode descobrir isso com a documentação. Você também pode encontrar um bom exemplo on-line sobre como fazer essas coisas com o comando ip.

    
por Alexis Wilke 02.08.2013 / 19:26
0

É possível configurar um soquete de escuta (ou seja, um programa que ofereça um serviço) para usar um adaptador específico. Mas os programas clientes, como o Firefox, geralmente enviam pacotes IP para o sistema operacional (vinculando-se a 0.0.0.0) e deixam para o SO como esses pacotes chegam à Internet.

Alguns programas clientes permitem que você configure a vinculação a um endereço IP específico do adaptador, mas como fazer isso é baixo para cada configuração de aplicativos.

É possível configurar o IPTABLES2 para usar o PID (ID do processo) para rotear o IP para um determinado adaptador, mas esse PID continuará mudando, de modo que as regras do firewall serão atualizadas continuamente.

Uma solução melhor é instalar um simples proxy SOCKS , como o Squid (que é bastante complicado), tinyproxy, Dante ou SS5.

Ligue o servidor proxy para oferecer o SOCKS5 no adaptador lo e configure-o para enviar todo o IP através do adaptador VPN.

Se você ligar o servidor proxy a uma porta Ethernet, outras máquinas na mesma rede poderão usar o mesmo servidor SOCKS.

Configure cada aplicativo que precisa usar a VPN para usar o servidor proxy.

Existem ferramentas como soxify e tsocks que podem ser usados para forçar programas que não suportam nativamente o SOCKS a usá-lo.

    
por Jason Morgan 04.08.2013 / 15:56
0

Se você quiser usar o vpn para rotear seu tráfego, e quiser, por exemplo, usá-lo com o firefox, por exemplo, isso é o que você faz: Você entra no Firefox, vá ao menu Opções:

Irparaavançar->AbadeRede

Agora, na caixa de diálogo Configurações de conexão:

Selecione a configuração manual
No host SOCKS, digite seu endereço IP de loopback (sempre 127.0.0.1)
Use a porta que você escolheu acima (80 ou 8080 ou qualquer outra coisa se você não quiser usar 80)
Certifique-se de que o SOCKS v5 seja escolhido Se você não quiser fazer proxy de alguns endereços (talvez localhost ou algo assim), insira esses endereços de email \ domínios na caixa de texto "Sem proxy para:". Clique em OK.

Evocêdeveriaestarbemparair.Vocêpodeverificaroseuipparaverseeleestáfuncionandocorretamente. link
O procedimento deve ser o mesmo para o resto dos aplicativos. Note que nem todos têm essas opções.

    
por Mihai 06.08.2013 / 18:33

Tags