Respondendo a minha própria pergunta, pois consegui descobrir o que estava errado.
Layout de rede:
192.168.23.0/24 192.168.9.0/24
----------------------- ------------------------
192.168.23.5 (server)
192.168.23.1 (router)
192.168.23.2 (----- windows -----) 192.168.9.23
192.168.9.1 (floor router)
Houve dois problemas, nenhum deles no lado do Windows (e outro no lado do Windows, mas não relacionado ao roteamento):
-
O Windows estava tunelando corretamente as mensagens, mas o roteador de piso não sabia para onde enviar as respostas. Depois de adicionar a rota estática para 192.168.23.0/24 através do meu windows PC, consegui acessar 192.168.9.0/24 de dentro da minha sub-rede.
-
Por algum motivo, ao acessar o servidor de fora da minha sub-rede, as respostas do servidor estavam se perdendo (a menos que o servidor acessasse diretamente o IP que enviou a solicitação). O encaminhamento foi definido no roteador, mas não respondeu "Host de redirecionamento" quando o servidor estava enviando respostas, portanto, a menos que o servidor tivesse armazenado a rota correta em cache, as respostas já haviam sido perdidas. Eu tive que mover o roteamento 192.168.23.0/24 - > 192.168.9.0/24 da configuração do roteador diretamente para o servidor linux. Depois de
route add -net 192.168.9.0/24 gw 192.168.23.2
diretamente no servidor, tudo começou a funcionar corretamente.
Quanto ao motivo pelo qual eu não percebi no primeiro windows é corretamente encaminhando pacotes é porque eu não percebi que estou ouvindo em apenas um dispositivo de rede em wireshark ...
o terceiro problema (o relacionado ao Windows, mas não de roteamento) foi que a primeira coisa depois que eu consegui configurar tudo corretamente foi BSOD 0x000000D1 no driver da placa de rede ... Atualizado o driver, e por enquanto tudo funciona bem.