Configurei uma conexão OpenVPN, mas não quero enviar todo o tráfego por ela.
Minha tabela de roteamento atual está assim:
$ ip route
default via 192.168.88.1 dev enp7s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
192.168.88.0/24 dev enp7s0 proto kernel scope link src 192.168.88.29 metric 100
O objetivo é encaminhar todo o tráfego de umespecíficoprograma através de tun0
, e o primeiro programa candidato é, obviamente, um navegador.
Vocês têm alguma idéia de como isso pode ser feito?
Eu sei sobretabelas de iproteamento de origem baseado em PID, mas exigiria a recriação de regras de iptables toda vez que um novo processo fosse gerado. E como cada aba de um navegador é um novo processo... Sinceramente, não consigo imaginar como tudo isso pode ser feito.
A próxima ideia é usar o proxy de meias local e então executar say google-chrome --proxy-server="socks5://127.0.0.1:1080"
.
Isso funciona bem com túneis SSH, pois ssh
pode atuar como um proxy SOCKS. No entanto, não encontrei um programa proxy que pudesse funcionar da mesma maneira, mas sem túnel SSH: ou seja, expor a interface SOCKS e rotear todo o tráfego via tun0
. Você poderia recomendar algo?
Responder1
Você poderia usar iproute2 e uid do usuário que executa o navegador ou qualquer outro. Por exemplo:
ip route add table 502 default dev tun0
lp rule add uidrange 1000-1002 table 502
Responder2
Execute os programas que você deseja rotear por meio da VPN em um novo namespace de rede com o túnel como gateway padrão.
Você pode reconfigurar seu PC de forma que o arquivo .desktop do navegador (e qualquer outro programa que deva usar a VPN) execute um script para controlar o comportamento e adicione um script à configuração do openvpn para configurar o namespace.