Execute um único comando NÃO através da minha VPN, com todo o outro tráfego através da minha VPN

0

Gostaria de usar minha VPN para todo o tráfego de rede exceto para o tráfego de um único comando arbitrário. Existe uma maneira de fazer isso?

Eu entendo que pode haver maneiras mais fáceis de fazer mais ou menos o que eu quero; Por exemplo, se meu comando for ssh, eu poderia configurar o roteamento para que as conexões de saída para a porta 22 não passem pela VPN. Isso tem a limitação, no entanto, de que preciso saber as portas que meu comando usa e que, se eu executasse outra sessão ssh ao mesmo tempo, ela também não passaria pela VPN; Eu só quero o comando para fazer isso. Eu também gostaria que isso funcionasse, independentemente de quais portas o comando usa ou de quais endereços ele se conecta (que até agora não consegui encontrar um exemplo de lugar nenhum).

Obrigado!

    
por charliegreen 04.08.2017 / 21:29

1 resposta

0

Uma maneira de executar comandos que são roteados de maneira diferente é usar o iptables e o roteamento de políticas. Você pode criar um novo usuário (ou grupo) que você usa para executar o comando.

Marque o tráfego na tabela mangle usando o módulo proprietário iptables. Neste exemplo, o tráfego é marcado com a identificação 10 para o usuário novpn :

iptables -t mangle -A OUTPUT -m owner --uid novpn -j MARK --set-mark 10

Crie uma nova tabela de roteamento (tabela 100 ) para o tráfego marcado e defina uma rota e uma regra padrão para aplicar a nova tabela de roteamento para o tráfego marcado:

ip route add table 100 default via *DEFAULTGW*
ip rule add fwmark 10 table 100
ip route flush cache

Agora para executar o comando que não é roteado através da sua VPN, você pode usar su etc. para executar o comando como o novo usuário novpn.

Se você criar um novo usuário para executar comandos, como não é aceitável, poderá configurar um namespace de rede separado, com seus próprios roteamento para executar seus comandos.

    
por 05.08.2017 / 01:23