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