AWS – Acessando serviços Web em Subnet Privadas
Olá Pessoal,
Estou escrevendo para deixar registrado (publicamente) como acessar interfaces de serviços web rodando em uma subnet privada da AWS, como um EMR, Spark ou NiFi, por exemplo.
Aqui usaremos o cenário ja exposto em outro post (Como instalar Apache NiFi), onde tenho uma instance dentro de uma subnet privada com o serviço do NiFi ouvindo na 8080.
Temos também um BastionHost na subnet Pública, que fará o “tunneling” e o utilizaremos como ponte entre a internet e a subnet Privada.
Para startar o “SSH tunnel”, precisamos conhecer dois parâmetros pouco usuais no SSH.
-N: Não executa comando no host remoto, a sessão fica presa. É util apenas quando queremos o “port fowarding”.
-D: Indica a porta (opcionalmente pode informar um IP) que será redirecionada. Ele age como se tivesse alocando um socket ouvido nesta porta. Conexões que tem esta porta como destino, são então redirecionadas automaticamente em um canal seguro.
Para startar o port fowarding (tunnel):
$ ssh -ND 8080 ec2-user@ip-publico (não devolverá o prompt)
Feito isso, precisamos fazer um ajuste no Browser. Estou usando o Chrome e vamos precisar uma extensão para proxy, no meu caso foi o FoxyProxy.
Após instalar a extensão, crie um arquivo proxy-config.xml com o seguinte conteúdo
<?xml version="1.0" encoding="UTF-8"?> <foxyproxy> <proxies> <proxy name="nifi-proxy" id="123" notes="" fromSubscription="false" enabled="true" mode="manual" selectedTabIndex="2" lastresort="false" animatedIcons="true" includeInCycle="true" color="#0055E5" proxyDNS="true" noInternalIPs="false" autoconfMode="pac" clearCacheBeforeUse="false" disableCache="false" clearCookiesBeforeUse="false" rejectCookies="false"> <matches> <match enabled="true" name="*.ec2.internal* " pattern="*.ec2.internal*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false"/> </matches> <manualconf host="localhost" port="8080" socksversion="5" isSocks="true" username="" password="" domain="" /> </proxy> </proxies> </foxyproxy>
No canto superior direito agora há um ícone do FoxyProxy. Clique nele para configurar.
Agora, faça os ajustes:
No menu lateral: Import/Export
Em seguida: Choose File e indique seu arquivo.
No alerta, escolha: Replace
E no Proxy Mode, bem lá em cima: Use proxies based on their pre-defined patterns and prioriteis.
Pronto, basta acessar com o nome Privado do host seguido da porta.
Qualquer dúvida, só gritar. 🙂
Até mais.