Onde está o firewall, no próprio B ou externo?
Seu comando ssh não está funcionando porque ele liga a porta 80 em B para encaminhar para C a A. Em sua descrição, você tem um endereço codificado, o que significa que B não está tentando se conectar à porta 80 em si. O endereço codificado é a chave para o seu problema. O URL contém um endereço lógico ou um endereço IP real codificado?
Se o firewall estiver em B, você teria que evitar que os pacotes fossem endereçados para C. Eu assumo que este não é o caso, já que você tem root em B. No entanto, uma solução neste caso também deve funcionar Não importa o que, a saber, encontrar uma maneira de obter conexões para C para ir para A vez. Você pode fazer isso manipulando o DNS ou com uma regra de reconfiguração do firewall.
Outro truque seria ter A como sua rota padrão para B. Supondo que C é externo e atingirá o firewall ao tentar devolver pacotes para B, você desejará ter A do NAT para B. Uma abordagem realmente grosseira é ter um responder às solicitações ARP para enganar o tráfego, mas é improvável que seja viável, exceto em configurações muito pequenas.