Como um ex-administrador PIX / ASA obsoleto, eu achei isso irresistível. Eu não tenho nenhum aparelho (mas um velho PIX 506E rodando 6.3) para experimentá-lo, então é meio que totalmente idiota. Mas isso é o que eu encontrei na documentação on-line para 9.1 e através de algum Google pesquisado aleatoriamente. Os links de referência são fornecidos na parte inferior da postagem. Então dedos cruzados ...
Assumindo que todas as outras configurações estejam corretas, como roteamento, listas de acesso, etc, você ainda precisa usar o comando
same-security-traffic permit intra-interface
para ter o tráfego de um cliente interno em um endereço mapeado externamente permitido para re-traduzir para um endereço de servidor interno, ou seja, com "hairpinned".
Para port mapear o endereço interno i.i.i.i para o endereço externo x.x.x.x você teria antes de 8.3 ter usado o comando
static (inside,inside) x.x.x.x i.i.i.i
para permitir o nat nativo de um host interno ao servidor interno usando o endereço externo obtido do dns. Isso difere da sintaxe regular "sem grampo" que seria
static (inside,outside) x.x.x.x i.i.i.i
e que naturalmente também estaria presente para permitir clientes externos chamando o servidor usando o ip público.
Na versão 8.3 e posterior, essa sintaxe foi reescrita e a instrução de mapeamento de porta hairpinning correspondente para o ASA ficaria assim, como se fosse alimentada:
asa-box(config)# object network my-outside-address-obj
asa-box(config-network-object)# host x.x.x.x
asa-box(config-network-object)# object network my-inside-address-obj
asa-box(config-network-object)# host i.i.i.i
asa-box(config-network-object)# nat (inside,inside) static my-outside-address-obj
Isso seria complementado com uma instrução regular "sem grampo" também.
Essa parece ser a única diferença real que eu posso encontrar, mas é claro que estou terrivelmente curioso em saber como isso funciona na prática.
Eu encontrei a sintaxe do comando 9.1 para tradução de endereço de porta (ou seja, correspondente ao antigo comando estático) aqui: link
Eu encontrei um guia histórico absolutamente excelente para a sintaxe hairpinning, mostrando o mesmo exemplo de design que seria configurado nas diferentes versões aqui: link
Boa sorte!