Лакальны кліент базы даных і прыватны RDS: чаму злучэнне сканчаецца тайм-аўтам
Лакальны кліент не можа дасягнуць інстанцыі прыватнага RDS па трох асобных прычынах. Праверце раздвоены DNS, маршрут і доказы групы бяспекі, перш чым нешта змяняць.
Тайм-аўт здараецца ў наўтбуку распрацоўшчыка пры злучэнні з прыватнай канцавой кропкай RDS, хаця тыя ж уліковыя даныя працуюць з бастыённага хоста. Нішто не спынілася. Шляху паміж гэтым наўтбукам і базай даных не хапае аднаго з трох: імя, якое развязаецца, маршруту, які нясе трафік, ці правіла групы бяспекі, якое дапушчае крыніцу, якую база даных насамрэч бачыць. Вызначце, чаго не хапае, перш чым мяняць астатнія два.
Чытайце збой на правільным узроўні
Тайм-аўт — не адна памылка. Імя, якое не развязаецца, падае раней, чым пакет пакідае машыну. Нямаршрутызаваны адрас адпраўляе пакеты ў чорную дзірку. Адфільтраваны порт стварае чаканне, якое выглядае зусім як няправільны хост. Выканайце крокі па парадку і спыніцеся на першым, які падае.
dig +short db.internal.example
nc -vz db.internal.example 5432
Калі імя вяртае публічны адрас ці не вяртае нічога, тунэль пакуль не праблема.
Калі імя развязаецца, а тэст порта завісае, параўнайце адрас, які вы развязалі, з адрасам, які паведамляе база даных. Кіраваная канцавая кропка можа развязацца ў прыватны адрас унутры VPC і ні ў што карыснае звонку, а адрас, скапіяваны са старога пошуку, будзе паказваць на хост, які ўжо не адказвае.
Аддзяліце тунэль ад маршруту
Падключэнне кліенцкага VPN не маршрутызуе аўтаматычна кожны прыватны дыяпазон. Профіль нясе маршруты, якія штурхае служба, і кліент можа ўсталяваць толькі частку з іх. Паглядзіце, якія дыяпазоны кліент насамрэч дадаў і ці трапляе адрас базы даных у адзін з іх.
ip route get 10.20.40.15
ip addr show tun0
Маршрут, які паказвае на інтэрфейс тунэля, неабходны; яго недастаткова, бо далёкі бок усё яшчэ павінен прыняць трафік.
Профілі раздвоенага тунэля — звычайная крыніца гэтай палавіннай няўдачы. Яны працуюць для праграмы, пад якую профіль распрацаваны, і пакідаюць дыяпазон базы даных па-за тунэлем, што дае менавіта такі тайм-аўт, які даў бы фэйрвол.
Супастаўце групу бяспекі з сапраўднай крыніцай
Група бяспекі RDS дапушчае крыніцы, а не людзей. У залежнасці ад архітэктуры крыніцай можа быць пул кліентаў VPN, прыватны адрас бастыёна ці адрас NAT, у які пераўтвараецца трафік. Чытайце правіла і фактычную крыніцу пакета разам.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
--query 'SecurityGroups[].IpPermissions'
Правіла для хатняга адраса аднаго наўтбука — праблема абслугоўвання, а не дызайн доступу.
Калі ў шляху стаіць кліенцкі VPN ці шлюз NAT, база даных можа бачыць адрас транслятара замест адраса тунэля распрацоўшчыка. Таму правіла, скапіяванае з працоўнай налады бастыёна, можа не спрацаваць для наўтбука: два шляхі прыходзяць з розных крыніц, хаця абодва выглядаюць унутранымі.
Аддайце перавагу вузкаму шляху перад шырокім
Калі аднаму распрацоўшчыку патрэбна адна база даных, перадача праз сесію часта таннейшая ў эксплуатацыі за поўны сеткавы тунэль. Лакальны кліент падключаецца да перанакіраванага порта, а далёкі кампанент усталёўвае злучэнне з базай знутры сеткі.
ssh -N -L 5432:db.internal.example:5432 bastion.internal.example
Захавайце праверку TLS цэлай у гэтым дызайне. Кліент усё яшчэ павінен правяраць сертыфікат сервера супраць імені, якое чакае; лакальны перанакіраваны порт не прычына адключаць праверку, а адключэнне яе хавае менавіта праблему ідэнтычнасці, якую варта злавіць.
Выбар паміж поўным тунэлем і вузкай перадачай — рашэнне пра абсяг, а не пра тэатр бяспекі.
Пакіньце пасля сябе шлях, які можна паўтарыць
Дакументуйце імя канцавой кропкі, а не развязаны адрас, дыяпазон крыніц, які дапушчае група бяспекі, і ролю базы даных, якую выкарыстоўвае распрацоўшчык. Гэтыя тры факты тлумачаць большасць будучых збояў без званка. Дадайце таксама версію профілю кліента, бо змена профілю можа прыбраць маршрут, які нёс стары.
Затым адзін раз праверце адмоўны выпадак: кліент па-за ўхваленай крыніцай павінен па-ранейшаму атрымаць адмову.
Прыватная база даных, якая працуе толькі для таго, хто яе наладзіў, — не прыватны доступ; гэта недакументаванае выключэнне, якое чакае, каб яго зноў знайшлі. Запішыце шлях, і наступны распрацоўшчык атрымае метад замест загадкі.