AWS Client VPN туташты, бирок EC2 дагы деле жооп бербейт
Туташты деген сөз сертификат же SAML кирүү иштегенин гана билдирет. Авторизация эрежелери, endpoint маршруттары жана коопсуздук топтору жеке хостко чейинки жолдун ар бир бөлүгүн өзү коргойт.
Ноутбугум туташты деп көрсөттү. AWS Client VPN кардары өзүнүн жашыл абалын көрсөттү, endpoint сессияны каттады, бирок мен жеке кошумча тармактагы EC2 инстансында MongoDB портун ача албадым. Көрүнүктүү эч нерсе бузулган эмес: сертификат жарактуу, профиль консолдон келген, туннель трафикти ташыган. Ката меники болчу, анткени мен туташты дегенди уруксат берилген деп окучумун.
Кирүү так бир суроого жооп берет: бул инсан сессия түзө алабы? Андан кийинкинин баарын сиздин сертификатыңызды эч качан көрбөгөн өзүнчө эрежелер чечет. Аутентификациядан өткөн сессия менен жеткен пакет эки башка ийгилик, жана алардын ортосундагы ажырым VPN күйүп турат, бирок хост жеткиликсиз деген кайрылуулардын көбү жашаган жер.
Төмөнкү текшерүүлөр — азыр колдонуп жүргөн тартибим.
Туташкан сессия чындыгында эмнени далилдейт
Handshake учурунда endpoint кардардын сертификатын өзүнүн trust store'уна каршы текшерет же SAML конфигурацияланганда браузерди сиздин идентификация провайдериңизге багыттайт. Эгер бул өтсө, кардар endpoint'тин кардар CIDR'инен дарегин алат жана консоль активдүү байланышты көрсөтөт. Ал алмашуунун бир да учурунда 10.0.4.17ге 27017 порту аркылуу жете аласызбы деп суралбайт.
Барар жерге уруксат endpoint'те өзүнчө объект. Ар бир агым авторизация эрежелери менен салыштырылат жана ар бир эреже барар жердин CIDR'ин эреже берилген топ менен жуптайт. Эч бир эреже барар жерди камтыбаса, endpoint сессияны кабыл алат жана трафикти таштайт. Эч кандай баннер жок, кайра туташуу цикли жок жана кардар интерфейсинде баш тартылды деп жазган эч нерсе жок.
Авторизация эрежесин VPC менен эмес, ресурс менен салыштырыңыз
Эрежелерди тизмелеп, аларды инстанстын чындыгында бар дарегинин жанына кой:
aws ec2 describe-client-vpn-authorization-rules \
--client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6a7b8Чыгуу ар бир эреже боюнча барар жердин CIDR'ин жана топ ID'ин көрсөтөт. Ичинде эки кемчилик жашырылган. Эреже 10.0.0.0/16га уруксат бериши мүмкүн, ал эми инстанс 10.1.0.0/16дагы peer кылынган VPC'де турат; peering маршруту бар, бирок эч ким экинчи диапазонго авторизация эрежесин жазган эмес. Же эреже колдонуучу каталогдо мүчө болгон, бирок endpoint баалай турган топто болбогон каталог тобуна шилтейт.
Барар жерди камтыган эң тар эрежени жазыңыз, экинчи CIDR чын эле керек болгондо гана экинчисин кошуңуз. Тез баштоодон келген кенен 0.0.0.0/0 эрежеси иштейт, ошондуктан ал өндүрүшкө чейин жашайт жана моделди жашырат.
Пакеттин кыймылын эки маршрут таблицасы чечет
Endpoint маршруту барар жердин CIDR'ин endpoint байланышкан кошумча тармактардын бирине салыштырат. Бул жолдун жарымы. Кошумча тармактын өз маршрут таблицасы пакетти кантип жөнөтүүнү дагы эле билиши керек, жана бул барар жер peering байланышынын, transit gateway'дин же site-to-site туннели аркылуу жеткиликтүү жергиликтүү диапазондун артында турган учурда маанилүү.
aws ec2 describe-client-vpn-routes \
--client-vpn-endpoint-id cvpn-endpoint-0a1b2c3d4e5f6a7b8Барар жери ресурстун CIDR'ине дал келген жана бутасы байланышкан кошумча тармак болгон маршрутту издеңиз. Маршрут жок болсо, кошуңуз. Бар болсо да хост үнсүз болсо, ажырым VPC тарапта, ошондуктан байланыш кошумча тармагынын маршрут таблицасы менен салыштырыңыз.
Кардар тараптагы бир параметр туннелди бузбастан маршруттоону бузат: route-nopull бар профиль. Нускама OpenVPN негизиндеги кардарга сервер түрткөн маршруттарды этибарга албоону айтат, ошондуктан интерфейс endpoint'тин өз дареги менен гана көтөрүлөт жана барар жердин маршруту такыр жок. Linux'то ip route show же macOS'то netstat -rn аркылуу tun интерфейси аркылуу маршрут барбы текшериңиз. Жок болсо, экспорттолгон профилден route-nopull'ду алып салып, түртүлгөн маршруттар колдонулушу үчүн кайра туташыңыз.
Коопсуздук топтору сиздин кардар дарегиңизди көрбөйт
Бул мен бир түштөн кийин ката кетирген бөлүк. Кошумча тармакка байланышкан IPv4 endpoint үчүн кызмат кардардын баштапкы дарегин ошол кошумча тармактагы endpoint'тин тармактык интерфейсинин дарегине которот. Инстанска жеткен пакет сиздин кардарыңыз көрсөткөн даректи ташыбайт, ошондуктан кардар пулуна, айталы, 172.16.0.0/22ге уруксат берген коопсуздук тобунун эрежеси эч нерсеге дал келбейт.
Портко кардар CIDR'инен эмес, байланыштын интерфейсине бекитилген endpoint'тин коопсуздук тобунан уруксат бериңиз. Топко шилтеме жасоо даректи катуу коддоодон узакка жашайт, анткени интерфейстин дареги сиздин көзөмөлүңүздө эмес. Тармактык ACL абалсыз, ошондуктан ыңгайлаштырылган жазуулар бар жерде кирүү жана чыгуу багыттары тең агымга уруксат бериши керек.
Инстанстын жеке дареги менен да туташыңыз. Коомдук IP пакетти VPC'ден чыгарып, башка эрежелер менен башка жол менен кайтарат, ошондуктан коомдук дарек боюнча сыноо жеке жол тууралуу эч нерсе айтпайт.
Биринчи ийгиликсиздикте токтогон обочолонуу тартиби
Буларды ирети менен аткарып, бири ийгиликсиз болгон жерде токтоңуз. Ар бир кадам бардык катмарды эмес, бир катмарды алып салат.
- Сессия кайсы инсанды колдонгонун жана endpoint кайсы топту баалаарын ырастаңыз. Бир trust store'дон алынган сертификат каталогдон келген SAML билдирүүсү менен бирдей субъект эмес.
- Авторизация эрежеси ошол топ үчүн ресурстун CIDR'ин камтыйарын ырастаңыз.
- Endpoint маршруту бар экенин жана байланышкан кошумча тармакка багытталганын, андан кийин кошумча тармактын маршрут таблицасы андан ары жөнөтө аларын ырастаңыз.
- Коопсуздук тобу портко кардар пулунан эмес, endpoint интерфейсинен уруксат берерин ырастаңыз.
- Колдонмо маселесин кардар жолунун маселесинен ажыратуу үчүн VPC'нин ичинен, ошол кошумча тармактагы башка инстанста SSM сессиясы менен сынаңыз.
Кадамдар чечкиндүү болбогондо, мен ушул таблицага таянам:
| Symptom | Layer to inspect |
|---|---|
| Client shows connected, host times out, no byte growth on the interface | Authorization rule, then security group |
| Ping fails but a TCP connect to the port succeeds | ICMP is blocked; not an access failure |
| Tunnel reconnects every few minutes | Two machines sharing one client certificate |
| Works on one laptop, fails on another | Local profile has route-nopull or stale pushed routes |
Эсептин эки деталы уруксат катасына окшош белгилерди жаратат. Ар бир колдонуучуга өзүнчө кардар сертификаты керек; бирөөнү эки машинага бөлүшсө, сессиялар бирин-бири сүрүп чыгарат, жана натыйжа баш тартуу эмес, кайра туташуу цикли болот. Жаңы endpoint түзүлгөндө консоль DNS атын көрсөтөт, аны кардардын айрым версиялары endpoint баракчасында көрсөтүлгөн туш келди префикспен гана кабыл алат, ошондуктан аны кайра куруунун ордуна толук атты көчүрүңүз.
Бешинчи кадам сизди токтотсо, бир нерсени өзгөртүүдөн мурун endpoint'тин туташуу журналын алып, авторизация жазууларын окуңуз. Журнал текшерилген барар жерди жана дал келген же келбеген эрежени атайт, бул төрт катмарлуу суроону бир жоопко жыйнайт.