O encaminhamento de porta reescreve apenas o endereço de destino. Isso funciona perfeitamente para fontes externas. Veja por que não funciona para fontes internas:
-
Você tenta se conectar ao seu endereço externo. Você forma um pacote com uma fonte interna e um destino externo.
-
O pacote leva sua rota padrão ao seu roteador.
-
A porta do roteador encaminha o pacote, alterando o endereço de destino para o endereço interno do servidor.
-
O servidor recebe o pacote com um endereço de origem interno (a máquina de origem) e seu endereço de destino interno (o servidor).
-
O servidor forma um pacote de resposta com um endereço de origem interno e um endereço de destino interno.
-
Como o destino é local, esse pacote não usa a rota padrão do servidor. Vai diretamente para a máquina de origem.
-
A máquina de origem recebe um pacote de resposta com um endereço de origem interno, mas esperava uma resposta com um endereço de origem externo (a máquina que estava tentando acessar).
-
A máquina de origem ignora o pacote e a conexão não funciona.
Para que isso funcione, você precisa de "hairpin NAT", no qual os endereços de origem e de destino são reescritos para que os pacotes de resposta do servidor sejam direcionados de volta ao roteador, e não à origem.