Lokal na kliyente ng database, pribadong RDS: bakit nag-time out ang koneksyon
Hindi maabot ng lokal na kliyente ang isang pribadong RDS instance dahil sa tatlong magkakahiwalay na dahilan. Suriin ang split DNS, ruta at ebidensya ng security group bago magbago ng anuman.
Nag-time out ang laptop ng isang developer kapag kumokonekta sa pribadong RDS endpoint, habang gumagana ang parehong kredensyal mula sa isang bastion host. Walang bumagsak. Kulang ang landas sa pagitan ng laptop na iyon at ng database ng isa sa tatlong bagay: pangalang nagre-resolve, rutang nagdadala ng trapiko, o panuntunan sa security group na nagpapahintulot sa pinagmulan na aktwal na nakikita ng database. Alamin kung alin ang kulang bago baguhin ang dalawa.
Basahin ang kabiguan sa tamang layer
Ang pag-time out ay hindi isang error lang. Ang pangalang hindi nagre-resolve ay nabigo bago pa umalis ang packet sa makina. Ang address na walang ruta ay nagpapadala ng packet sa itim na butas. Ang na-filter na port ay gumagawa ng paghihintay na mukhang maling host. Isagawa ang mga hakbang nang sunod-sunod at huminto sa unang nabigo.
dig +short db.internal.example
nc -vz db.internal.example 5432
Kung nagbabalik ang pangalan ng pampublikong address, o wala, hindi pa ang tunnel ang problema.
Kung nagre-resolve ang pangalan at nag-hang ang pagsubok sa port, ihambing ang address na na-resolve mo sa address na iniuulat ng database. Ang pinamamahalaang endpoint ay maaaring mag-resolve sa pribadong address sa loob ng VPC at sa walang kapaki-pakinabang sa labas nito, at ang address na kinopya mula sa lumang paghahanap ay tuturo sa host na hindi na tumutugon.
Paghiwalayin ang tunnel sa ruta
Ang pagkonekta ng client VPN ay hindi awtomatikong nagro-ruta sa bawat pribadong saklaw. Dinadala ng profile ang mga rutang itinutulak ng serbisyo, at maaaring ilan lang ang i-install ng kliyente. Tingnan kung aling mga saklaw ang aktwal na idinagdag ng kliyente at kung ang address ng database ay nasa loob ng isa sa kanila.
ip route get 10.20.40.15
ip addr show tun0
Ang rutang tumuturo sa tunnel interface ay kailangan; hindi ito sapat, dahil kailangan pa ring tanggapin ng kabilang panig ang trapiko.
Ang mga split-tunnel profile ang karaniwang pinagmulan ng kalahating kabiguan na ito. Gumagana ang mga ito para sa aplikasyong dinisenyuhan ng profile at iniiwan ang saklaw ng database sa labas ng tunnel, na gumagawa ng eksaktong pag-time out na gagawin ng firewall.
Itugma ang security group sa tunay na pinagmulan
Ang security group ng RDS ay nagpapahintulot ng pinagmulan, hindi tao. Depende sa arkitektura, ang pinagmulan ay maaaring ang pool ng client VPN, ang pribadong address ng bastion, o isang NAT address kung saan isinasalin ang trapiko. Basahin ang panuntunan at ang aktwal na pinagmulan ng packet nang sabay.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
--query 'SecurityGroups[].IpPermissions'
Ang panuntunan para sa address ng bahay ng isang laptop ay problema sa maintenance, hindi disenyo ng access.
Kapag may client VPN o NAT gateway sa landas, maaaring makita ng database ang address ng tagasalin sa halip na address ng tunnel ng developer. Ito ang dahilan kung bakit ang panuntunang kinopya mula sa gumaganang bastion setup ay maaaring mabigo para sa laptop: ang dalawang landas ay nagmumula sa magkaibang pinagmulan kahit pareho silang mukhang panloob.
Piliin ang makitid na landas kaysa malawak
Kapag kailangan ng isang developer ang isang database, ang session-based forwarding ay kadalasang mas mura patakbuhin kaysa sa buong network tunnel. Kumokonekta ang lokal na kliyente sa forwarded port, at ang remote component ang gumagawa ng koneksyon sa database mula sa loob ng network.
ssh -N -L 5432:db.internal.example:5432 bastion.internal.example
Panatilihing buo ang TLS verification sa disenyong iyon. Dapat pa ring i-validate ng kliyente ang server certificate laban sa pangalang inaasahan nito; ang lokal na forwarded port ay hindi dahilan para patayin ang verification, at ang pagpatay nito ay nagtatago ng eksaktong problema sa pagkakakilanlan na sulit mahuli.
Ang pagpili sa pagitan ng buong tunnel at makitid na forwarding ay desisyon tungkol sa saklaw, hindi tungkol sa teatro ng seguridad.
Mag-iwan ng landas na mauulit
Idokumento ang pangalan ng endpoint sa halip na na-resolve na address, ang saklaw ng pinagmulan na pinapayagan ng security group, at ang papel sa database na ginagamit ng developer. Ang tatlong katotohanang ito ay nagpapaliwanag sa karamihan ng susunod na kabiguan nang walang tawag. Idagdag din ang bersyon ng profile ng kliyente, dahil ang pagbabago ng profile ay maaaring mag-alis ng rutang dala ng luma.
Pagkatapos ay subukan ang negatibong kaso nang isang beses: ang kliyenteng nasa labas ng aprubadong pinagmulan ay dapat pa ring tanggihan.
Ang pribadong database na gumagana lamang para sa taong nag-set up nito ay hindi pribadong access; ito ay hindi dokumentadong eksepsyon na naghihintay na matuklasan muli. Isulat ang landas, at ang susunod na developer ay magmamana ng pamamaraan sa halip na misteryo.