Como regra geral, você não pode definir um gateway em uma rota que não esteja em sua sub-rede. Você pode resolver seu problema no servidor A com o seguinte truque.
Primeiro, defina a rota do seu gateway desejado:
ip route add B_SERVER_PUBLIC_IP dev eth0
Em seguida, defina sua rota:
ip route add C_SUBNET_IP via B_SERVER_PUBLIC_IP
Agora vai funcionar! Isso é explicado no post abaixo, incluindo como torná-lo permanente no Ubuntu:
Agora que você chegou ao seu servidor B, você terá que implementar algumas coisas de encaminhamento lá ...