Cliente local de base de datos, RDS privado: por que caduca a conexión
Un cliente local non chega a unha instancia RDS privada por tres motivos distintos. Comprobe o DNS dividido, a ruta e as probas do grupo de seguridade antes de cambiar nada.
O portátil dun desenvolvedor caduca ao conectar co punto de acceso privado de RDS, mentres as mesmas credenciais funcionan desde un host bastión. Nada está caído. Á ruta entre ese portátil e a base de datos fáltalle unha de tres cousas: un nome que resolva, unha ruta que transporte o tráfico ou unha regra de grupo de seguridade que admita a orixe que a base de datos ve realmente. Descubra cal falta antes de cambiar as outras dúas.
Lea o fallo na capa correcta
Un tempo de espera non é un só erro. Un nome que non resolve falla antes de que un paquete saia da máquina. Un enderezo sen ruta envía paquetes a un burato negro. Un porto filtrado produce unha espera que parece exactamente un host equivocado. Execute os pasos en orde e detéñase no primeiro que falle.
dig +short db.internal.example
nc -vz db.internal.example 5432
Se o nome devolve un enderezo público, ou non devolve nada, o túnel aínda non é o problema.
Se o nome resolve e a proba do porto colga, compare o enderezo que resolveu co enderezo que informa a base de datos. Un punto de acceso xestionado pode resolver nun enderezo privado dentro da VPC e en nada útil fóra dela, e un enderezo copiado dunha consulta antiga apuntará a un host que xa non responde.
Separe o túnel da ruta
Conectar unha VPN de cliente non encamiña automaticamente todos os rangos privados. O perfil leva as rutas que empurra o servizo, e o cliente pode instalar só algunhas delas. Mire que rangos engadiu realmente o cliente e se o enderezo da base de datos cae dentro dun.
ip route get 10.20.40.15
ip addr show tun0
Unha ruta que apunta á interface do túnel é necesaria; non é suficiente, porque o lado oposto aínda ten que aceptar o tráfico.
Os perfís de túnel dividido son a orixe habitual deste fallo parcial. Funcionan para a aplicación para a que se deseñou o perfil e deixan o rango da base de datos fóra do túnel, o que produce exactamente o tempo de espera que produciría un cortalumes.
Axuste o grupo de seguridade á orixe real
O grupo de seguridade de RDS admite orixes, non persoas. Segundo a arquitectura, a orixe pode ser o grupo de clientes da VPN, o enderezo privado dun bastión ou un enderezo NAT ao que se traduce o tráfico. Lea a regra e a orixe real do paquete á vez.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
--query 'SecurityGroups[].IpPermissions'
Unha regra para o enderezo da casa dun só portátil é un problema de mantemento, non un deseño de acceso.
Cando unha VPN de cliente ou unha pasarela NAT está na ruta, a base de datos pode ver o enderezo do tradutor en lugar do enderezo do túnel do desenvolvedor. Por iso unha regra copiada dunha configuración de bastión que funciona pode fallar para un portátil: as dúas rutas chegan desde orixes distintas aínda que ambas parezan internas.
Prefera unha ruta estreita a unha ancha
Cando un desenvolvedor necesita unha base de datos, o reenvío baseado en sesión adoita ser máis barato de operar que un túnel de rede completo. O cliente local conéctase a un porto reenviado, e o compoñente remoto fai a conexión á base de datos desde dentro da rede.
ssh -N -L 5432:db.internal.example:5432 bastion.internal.example
Manteña a verificación TLS intacta nese deseño. O cliente debería seguir validando o certificado do servidor contra o nome que espera; un porto reenviado local non é un motivo para desactivar a verificación, e desactivala agocha exactamente o problema de identidade que paga a pena detectar.
A elección entre un túnel completo e un reenvío estreito é unha decisión sobre o alcance, non sobre teatro de seguridade.
Deixe unha ruta repetible detrás
Documente o nome do punto de acceso en lugar dun enderezo resolto, o rango de orixe que admite o grupo de seguridade e o rol de base de datos que usa o desenvolvedor. Eses tres feitos explican a maioría dos fallos futuros sen unha chamada. Engada tamén a versión do perfil de cliente, porque un cambio de perfil pode eliminar unha ruta que o antigo levaba.
Despois probe o caso negativo unha vez: un cliente fóra da orixe aprobada debería seguir sendo rexeitado.
Unha base de datos privada que só funciona para a persoa que a configurou non é acceso privado; é unha excepción non documentada que agarda ser redescuberta. Escriba a ruta, e o seguinte desenvolvedor herdará un método en lugar dun misterio.