Como rotear o tráfego do navegador através de uma conexão OpenVPN no Linux?

Como rotear o tráfego do navegador através de uma conexão OpenVPN no Linux?

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 sshpode 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.

informação relacionada