AWS Client VPN туташкан, бирок интернет жок: маршруттарды текшерүү
AWS Client VPN туташкан, бирок интернетке кирүү жокпу? Клиент маршруттарын, эндпойнт авторизациясын, ички тармактын чыгымын жана DNSти ушул тартипте текшериңиз.
Сиз AWS Client VPN эндпойнтине туташкансыз, жеке ички тармак жооп берет, бирок ар бир ачык барак убакыт чеги менен бүтөт. Бул айкалыш маселени башкарылуучу тараптагы үч объектинин бирине чейин куушурат: клиент орноткон маршрут, эндпойнттун маршруту анын авторизация эрежеси менен, же байланышкан ички тармактын кийинки секирүүсү. Мен аларды ушул тартипте текшерем, анткени ар бир бузулуу клиент тарабынан башкача көрүнөт. Бул колдонмо VPC менен байланышкан башкарылуучу эндпойнтту камтыйт, EC2 инстанциясындагы OpenVPN серверин жана Cloud WAN же Transit Gateway туташуусун камтыбайт.
Клиент чындыгында эмнени маршруттайт, ошондон баштаңыз
Туташкан абал TLS сессиясын жана клиентке CIDR бөлүштүрүлүшүн далилдейт, андан ашык эмес. Туннель иштеп турганда ачык дарек кайда кетээрин операциялык системадан сураңыз. Linuxта ip route get 1.1.1.1 туннель интерфейсин атоосу керек; macOSто netstat -rn -f inet | head -5 демейки жазууну көрсөтөт; Windowsто Find-NetRoute -RemoteIPAddress 1.1.1.1 тандалган интерфейсти жана кийинки секирүүнү басып чыгарат.
Андан кийин split-tunnel желегин окуңуз, анткени эндпойнт жарыялаган маршруттар клиенттин туннелге жиберген жалгыз багыттарыбы экенин ошол аныктайт:
aws ec2 describe-client-vpn-endpoints \
--client-vpn-endpoint-ids cvpn-endpoint-0123456789abcdef0 \
--query 'ClientVpnEndpoints[0].SplitTunnel'Эгер SplitTunnel true болсо, ачык багыт туннелди эндпойнт аны камтыган маршрутту жарыялаганда гана колдонот, ошондуктан жок 0.0.0.0/0 бул трафикти жергиликтүү интерфейсте калтырат. Эгер ал false болсо, клиент трафикти кармайт, бирок эндпойнт аны дагы эле маршруттап, авторизациялоосу керек; болбосо пакеттер туннелге кирип, ушунда токтойт. Эки параметрдин бирин өзгөрткөндөн кийин клиентти кайра туташтырыңыз, анткени маршруттар жана DNS серверлери туташуу учурунда берилет жана иштеп жаткан клиент эски топтомун сактап калышы мүмкүн.
Эндпойнт маршрутун жана авторизация эрежесин өзүнчө окуңуз
Бул эки объект, бирин түзүү экинчисин түзбөйт. Эндпойнт маршруттарын тизмектеп, бутагы байланышкан ички тармак болгон демейки маршрутту издеңиз:
aws ec2 describe-client-vpn-routes \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0Ар бир маршруттун так бир бутак ички тармагы бар, ошондуктан үч байланышууга ар бири үчүн тиешелүү демейки маршрут керек. AWS бул камтуу талабын документтештирет, ал эми кемчиликтин практикалык белгиси — бир ички тармактан иштеп, экинчисинен тыгылып калган колдонуучу, бул жоголгон маршрут эмес, үзгүлтүктүү бузулуу катары окулат. Расмий Client VPN сценарийинин документтери бул маршруттар таандык болгон ачык ички тармактын түзүлүшүн сүрөттөйт.
Авторизация — экинчи объект. Ачык багытты эч бир эреже камтыбаса, туннель пакетти алып жүрөт жана кызмат аны таштайт, ошондуктан жеке ресурстар иштей берет, интернет иштебейт:
aws ec2 describe-client-vpn-authorization-rules \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0VPC CIDR үчүн эреже 0.0.0.0/0 жөнүндө эч нерсе айтпайт. Толук туннель үчүн жок бөлүктөрдү кошуу ар бир байланышкан ички тармакка бир маршрут жана кийин текшере ала турган авторизация эрежесин кошууну билдирет:
aws ec2 create-client-vpn-route \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--target-vpc-subnet-id subnet-0a1b2c3d4e5f67890
aws ec2 create-client-vpn-authorization-rule \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--access-all \
--description "internet egress for full tunnel"--access-all багытты эндпойнттун ар бир клиентине берет, ошондуктан аны туннель толук болушу керек болгонго чейин гана кармаңыз; байлоого топторуңуз болсо, каталог тобуна байланган эреже жакшыраак.
Пакетти байланышкан ички тармактан сырткары ээрчиңиз
Эндпойнт маршруту AWS пакетти ошол ички тармакка берерин чечет. Ал андан кийинки секирүүнү чечпейт, ал ички тармактын өз VPC маршрут таблицасында жашайт:
aws ec2 describe-route-tables \
--filters Name=association.subnet-id,Values=subnet-0a1b2c3d4e5f67890 \
--query 'RouteTables[].Routes[?DestinationCidrBlock==`0.0.0.0/0`]'Колдонууга жарактуу демейки маршрут ачык ички тармак үчүн интернет дарбазасын, жекеси үчүн NAT дарбазасын көрсөтөт, ал эми blackhole абалы бута жоюлганын жана жол эми үнсүз өлүп жатканын билдирет. Бул эндпойнттун маршрут тизмесинен башка таблицалар, бирин оңдоо экинчисин оңдобойт.
Бул секирүүдө эки чыпка турат. Бутак тармактык байланышууга колдонулган коопсуздук тобу ачык багытка чыгуучу трафикке уруксат бериши керек, ал эми колдонулуучу каалаган тармактык ACL сурамга жана эфемердик порттордогу кайтарым трафикке уруксат бериши керек. Чектөөчү байланышуу коопсуздук тобу жеке кирүү иштеп, ачык кирүү иштебей калышынын кеңири тараган себеби.
Үчөөнү бир убакта өзгөртүүнүн ордуна белги боюнча биринчи катмарды тандаңыз:
| What you observe | Layer to check first |
|---|---|
| No tunnel interface for a public IP | Client route or split-tunnel flag |
| Tunnel interface chosen, request times out | Endpoint route and authorization rule |
| Endpoint route present, still times out | Subnet route table, association security group |
| Named host fails, numeric address works | DNS servers and their own authorization |
DNS бузулуусун өлүк маршруттан ажыратыңыз
Ат чечүү жөнөтүүдөн башкача ишке ашпайт, ал эми толук туннель бул айырманы маанилүү кылат, анткени түртүлгөн резолверге эми туннель аркылуу жетет. Эгер эндпойнт VPC DNS серверлерин көрсөтсө, алардын даректери башка каалаган багыт сыяктуу маршрут камтуусун жана авторизацияны талап кылат. Кайсы бузулуу бар экенин көрүү үчүн резолверден түз сураңыз: dig +short example.com @10.0.0.2, же nslookup example.com 10.0.0.2 Windowsто.
Сандык URL жооп берип, аттуу URL бербесе, демейки маршрутту оңдоону токтотуп, DNS менен иштеңиз. IP дарекке сурам аттуу виртуалдык хост жана анын сертификаты жөнүндө эч нерсе далилдебейт, ошондуктан акыркы текшерүүдө бир аттуу сынак калтырыңыз.
Убакыт жардам берет. Бир нече секундада жооп албаган TCP туташуусу маршруттоого же чыпкага көрсөтөт, ал эми ат издөөдө илинип турган сурам резолверге көрсөтөт. Резолвер жеткиликсиз кезде демейки маршрутту өзгөртүү адатта бир бузулууну экиге айландырат.
Таза кайтарыңыз, анан чыгуу жолун текшериңиз
Эки объект тең кошумча болчу, ошондуктан кайтаруу — оңдоо эмес, жок кылуу:
aws ec2 delete-client-vpn-route \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--target-vpc-subnet-id subnet-0a1b2c3d4e5f67890
aws ec2 delete-client-vpn-authorization-rule \
--client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 \
--destination-cidr-block 0.0.0.0/0 \
--access-allКайра туташып, трафиктин кайсы жол менен чыкканын тастыктаңыз. Байкалган ачык даректи NAT дарбазасынын серпилгич IP дареги менен же колдонууну көздөгөн интернет дарбазасы менен салыштырып, жеке ресурстун ошол эле сессияда дагы жооп берерин текшериңиз.
Кыска тизме менен бүтүрүп, акыркы пунктту документ катары эмес, өзгөртүүнүн бөлүгү катары караңыз:
- Ар бир байланышкан ички тармак үчүн бир
0.0.0.0/0эндпойнт маршруту. - Тейлегиңиз келген клиенттер үчүн
0.0.0.0/0камтыган авторизация эрежеси. - Ар бир байланышкан ички тармакта blackhole эмес VPC демейки маршруту.
- Байланышуу коопсуздук тобунун чыгымы, кошумча ACL кайтарым трафиги.
- Резолвер даректери маршрутталып жана авторизацияланып, аттуу сурам менен текшерилди.
- Маршрут жана эреже үчүн жазылган кайтаруу.
Бир көлөм эскертүүсү: бул IPv4 жолу. Кош стектүү клиент өзүндө бар IPv6 туташуусун сактайт, ошондуктан IPv6 демейки маршруту буга кошумча таасир эмес, өзүнүн авторизациясы бар өзүнчө чечим.