Este é um problema bem conhecido. Quando seu cliente interno acessa o endereço IP externo, o dumb-NAT encaminhará esse pacote para o servidor. Parece mais ou menos assim:
10.1.1.2 -> 69.1.1.1:80
Neste ponto, o dumb-NAT irá reescrever o pacote, então o que o servidor interno vê:
10.1.1.2 -> 10.1.1.1:80
Então, ele responderá:
10.1.1.2:80 -> 10.1.1.1
Infelizmente, o 10.1.1.2 estava esperando uma resposta do 69.1.1.1, não do 10.1.1.1, por isso apenas descarta o pacote e a conexão nunca é concluída.
Existem algumas maneiras de lidar com isso, alguns gateways NAT fazem isso de maneira inteligente. A maioria dos roteadores / firewalls domésticos não. Mas o termo para o que está fazendo é Source -NAT, onde o endereço de origem é reescrito em vez do destino.