Como você NAT Hairpin no IOS 8.3+

5

Como eu perguntei aqui e duplicou < href="https://serverfault.com/questions/282959/how-do-i-reach-my-internal-server-on-the-external-ip"> aqui aparece NAT Hairpinning é o resposta Estou procurando para permitir que os servidores internos para loopback através do ASA para acessar IP's externos (sem usar DNS Doctoring). No entanto, as instruções apresentadas nesses posts e aqui, link não parecem para cobrir o NAT Hairpinning no IOS 8.3+ (eu estou rodando 9.1) 9.1 não tem mais o comando static (sozinho).

Como faço o NAT Hairpin no IOS 8.3+ (especificamente 9.1 (2) em um Cisco ASA 5505).

Obrigado!

ATUALIZAÇÃO:

Isso é o que eu publiquei no site de suporte da Cisco ... talvez as informações adicionais tornem minha situação mais clara

Eu não consigo fazer o nat nativo funcionar ... A maioria das instruções na internet indica como fazer isso com os comandos disponíveis antes do 8.3.

Eu tentei o seguinte:

same-security-traffic permit intra-interface

asa-box(config-network-object)# object network my-inside-address-obj
asa-box(config-network-object)# nat (inside,inside) static my-outside-address-obj

que não funcionou.

Então eu adicionei:

access-list hairpin_allow extended permit tcp object Internal_NAT_Range object External_NAT_Range

com

access-group hairpin_allow in interface inside

que também não funcionou (tentando mostrar a devida dilligence aqui ...).

Então eu tentei:

nat (inside,inside) source static Internal_NAT_Range Internal_NAT_Range destination static External_NAT_Range External_NAT_Range

Ainda não é possível.

Por fim, executei estas etapas (conforme visto aqui ): "9. Para evitar quedas de pacotes devido à natureza assimétrica do roteamento que está ocorrendo internamente, precisamos que o ASA contorne a inspeção com informações de estado para esse tráfego específico. Para isso, precisamos configurar o seguinte:

ASA (config) # lista de acesso tcp_bypass objeto tcp de permissão estendida Internal_NAT_Range objeto External_NAT_Range    ! --- Configure a lista de acesso para especificar o tráfego TCP    ! --- que precisa passar por inspeção para melhorar o desempenho.

! --- Configure o mapa de classes e especifique o parâmetro de correspondência para o    ! --- mapa de classe para corresponder ao tráfego interessante.

ASA (config) # class-map tcp_bypass    ASA (config-cmap) #description "Tráfego TCP que ignora o firewall com estado"    ASA (config-cmap) #match lista de acessos tcp_bypass

! --- Configure o mapa da política e especifique o mapa da classe    ! --- dentro deste mapa de políticas para o mapa de classes.

ASA (config-cmap) # política-mapa tcp_bypass_policy    ASA (config-pmap) #classe tcp_bypass

! --- Use o conjunto de opções avançadas de conexão tcp-state-bypass    ! --- comando para ativar o recurso de desvio de estado TCP.

ASA (config-pmap-c) #conexão avançada de conexão entre opções tcp-state-bypass

! --- Use o service-policy policymap_name [global | interface intf]    ! --- comando no modo de configuração global para ativar um mapa de políticas    ! --- globalmente em todas as interfaces ou em uma interface segmentada.

ASA (config-pmap-c) # política de serviço tcp_bypass_policy dentro de "

Novamente, nada ...

Minha configuração (limpa / antes de qualquer uma das opções acima) é a seguinte ...

...
object network External_NAT_Range
 range x.x.56.3 x.x.59.255
object network Internal_NAT_Range
 range 172.17.56.3 172.17.59.255
object network InternalIPs
 subnet 172.17.56.0 255.255.248.0
object network VpnIPs
 subnet 172.17.63.0 255.255.255.0
object network InternalIPs_OutOnly
 range 172.17.60.1 172.17.62.254
...

nat (inside,outside) source static InternalIPs InternalIPs destination static VpnIPs VpnIPs no-proxy-arp route-lookup description Un-Nats VPN IPs
nat (inside,outside) source dynamic InternalIPs_OutOnly interface description Allows remaining interior network to access the Internet
!
object network Internal_NAT_Range
 nat (inside,outside) static External_NAT_Range net-to-net
access-group outside_access_in in interface outside
route outside 0.0.0.0 0.0.0.0 x.x.56.1 1
...

Eu só quero poder acessar um recurso externo, por exemplo, link de um IP interno, digamos, 172.17.56.8

Eu tentei usar a manipulação de DNS. A configuração era muito mais simples e funcionava, mas quando as solicitações de PTR chegavam da Internet, o DNS Doctoring também parecia traduzir as respostas de saída para refletir meus IPs internos, o que obviamente estava completamente errado ...

Qualquer ajuda dos seus profissionais da Cisco seria apreciada!

Obrigado!

    
por Novox 15.11.2013 / 15:50

1 resposta

2

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!

    
por 15.11.2013 / 22:07