Configure traffic routing and NAT from a Windows host (192.168.0.101, eth0) through a Linux VM (192.168.0.181, eth1 bridged interface) to VPN (10.10.10.0/24, tun0).
Enable IP forwarding on Linux VM:
$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
Create iptables rules to do the forwarding on Linux VM:
$ sudo iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
For the purpose of redirecting NEW connections from Linux tun0 to Windows host I can set socat on a needed port as a quick solution (actually it's not necessary for this routing task):
I shall configure an intermediate OpenVPN server to serve as a jump box (1st hop) to connect to the target lab. It's helpful when the target OpenVPN server (2nd hop) doesn't allow to have multiple connections with the same common name (--duplicate-cn not set), i.e. using the same client's .ovpn profile.
Change server config (/etc/openvpn/server/server.conf):
# Allocate a virtual /30 network
topology net30
# Add as many clients as you need
route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0
# Set a directory to look for clients' configs
client-config-dir ccd
Create a directory with clients' configs to push and set static IPs for clients: