Alternativa para iptables: use namespaces de rede. Como root, faça algo como
ip addr show dev tun0
ip netns add vpnssh
ip link set tun0 netns vpnssh
ip netns exec vpnssh su -c 'xterm &' user_name
em que tun0
é a interface de rede do seu ponto de extremidade do OpenVPN e user_name
do usuário que executa ssh
. Observe os endereços inet (vamos chamá-lo de vpn_local_ip
) e peer ( vpn_peer_ip
) para tun0
.
Agora você tem um xterm em que todos os subprocessos apenas "veem" tun0
(verifique com ip link
), mas, infelizmente, movendo-o, defina-o. Então, nessa janela, use sudo
para
ip link set tun0 up
ip addr add vpn_local_ip peer vpn_peer_ip dev tun0
ip route del default
ip route add default via vpn_local_ip dev tun0
Agora você pode executar ssh
nesta janela e usará a conexão OpenVPN. Script tudo conforme necessário (use ip netns exec vpnssh ...
para a segunda parte).