Você descreve casos bem diferentes em sua pergunta. Se você quiser alcançar somente 20.x: 80 via 50.50.50.50:80, então você pode configurar o encaminhamento de porta em 50.50.50.50 com iptables
:
target_ip="20.1.2.3"
source_ip="50.50.50.50"
iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp --dport 80 -j DNAT --to-destination 20.1.2.3
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -d "$target_ip" -p tcp --dport 80 -j SNAT --to-source "$source_ip"
iptables -A FORWARD -s 10.0.0.0/8 -d "$target_ip" -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 10.0.0.0/8 -s "$target_ip" -p tcp --sport 80 -j ACCEPT
echo 1 >/proc/sys/net/ipv4/ip_forward
Se houver um túnel entre 20.0.0.0/8 e 50.50.50.50, você provavelmente terá que definir $source_ip
para o endereço IP da interface do túnel.