AWS Client VPN или bastion за приступ peer-ованом VPC-у
Оба пута раде, али се ломе на различитим местима. Упоредите руте endpoint-а, повратно рутирање и три случаја у којима је bastion поштена граница.
Један endpoint Client VPN-а може достићи VPC који је peer-ован са његовим придруженим VPC-ом, и за то вам није потребан bastion да би било легитимно. Избор који вреди направити је где саобраћај мења руке: рута endpoint-а која слеће у подмрежу придруживања и прелази peering везу, или host у peer-ованом VPC-у који завршава сесију. Оба пута раде и ломе се на различитим местима, па је одлука о власништву и ревизији, а не о томе шта AWS дозвољава. Ево како бирам између њих и четири уноса који чине рутирану путању исправном.
Два пута, један endpoint, различити власници
На рутираној путањи клијентски саобраћај стиже до endpoint-а, преводи се у адресу мрежног интерфејса Client VPN-а у подмрежи придруживања и напушта ту подмрежу преко peering везе од A до B. VPC B не завршава ниједну VPN сесију; види обичан саобраћај из VPC-а A, зато његова повратна рута показује на VPC A, а не на клијентски пул.
На путањи преко bastion-а клијент прво стиже до host-а. Bastion у A и даље оставља последњи скок преко peering везе, па задржавате peering посао и додајете сесију. Bastion у B такође тражи пут од клијента, а када је тај пут иста рута endpoint-а, имате рутирани дизајн плус један скок. Bastion уклања посао само када већ постоји, већ је одобрен, а ствар иза њега тражи границу сесије, а не мрежну границу.
Четири уноса чине рутирану путању исправном
AWS документује овај сценарио на страници Client VPN how-it-works, а у пракси се све своди на четири уноса које поседују два или три тима. Опсези су илустративни; peer-овани опсег мора бити јединствен, а повратни опсег мора одговарати вашем плану.
| Control | What it must say |
|---|---|
| Endpoint route | 10.70.0.0/16 targets the association subnet |
| Authorization rule | The approved group may reach 10.70.0.0/16 |
| VPC A association-subnet table | 10.70.0.0/16 targets the peering connection |
| VPC B resource-subnet table | VPC A's range targets the same peering connection |
Рута и дозвола су одвојене контроле. Исправна рута endpoint-а без одговарајућег правила ауторизације не даје клијенту ништа; правило ауторизације за одредиште које endpoint не може да рутира даје му црну рупу. Оба морају навести исти опсег.
Рута endpoint-а показује на подмрежу у сопственом VPC-у endpoint-а, никада на peering везу. Табеле рута VPC-а показују на peering везу, никада на инстанцу или интерфејс. Копирање вредности између њих се чува без приговора и ништа не рутира.
Пошто подмрежа придруживања преводи извор клијента, B мора да рутира назад ка VPC-у A, а не ка клијентском пулу. Слање клијентског опсега преко peering везе изгледа симетрично, пролази ревизију и тихо пада јер B никада не види пакет са клијентским извором.
Безбедносне групе и последњи метар дозволе
Рутирање уноси пакете у B; B и даље одлучује. За активну peering везу у истој регији, безбедносна група у B може да референцира групу примењену на придруживање Client VPN-а, што правило држи уским и преживљава промене адреса. Где референца на групу није изводљива, дозволите опсег подмреже придруживања експлицитно уместо ширења на 0.0.0.0/0, што грешку рутирања претвара у необјашњен тајмаут.
Затим проверите оно што рутирање никада не дира: мрежне ACL-ове на обе подмреже, листу дозвољених или публику токена апликације, и DNS. Peering не копира приватне хостоване зоне, па лаптоп може да држи радну руту до адресе коју не може да реши, а peering веза не додаје поверење сертификату. Усмерите endpoint на resolver који одговара за B, па потврдите да се приватно име и сертификат поклапају.
Када је bastion поштен одговор
Држим три окидача за намерно бирање bastion-а. Peer-овани VPC припада тиму који неће додати повратну руту за ваш опсег или неће прихватити референцу на групу. Приступ мора бити одобрен или забележен по сесији, а апликација то не може сама да носи. Или последњи скок мора да остане унутар B јер се сервис решава само тамо и његов TLS идентитет је прикован за интерно име.
Ништа од тога није заобилажење чињенице да peering није транзитиван. Нетранзитивност ограничава шта ресурси у B смеју да раде: не могу да користе A као транзит до трећег VPC-а са којим је A у peering-у. То никада није значило да VPN корисник не може да достигне директно peer-ован VPC, а bastion изграђен да заобиђе то погрешно читање је host који се крпи без разлога.
Обрнута грешка временом кошта више: провуците сваки тим кроз једини већ постојећи bastion, па откријте да су његова безбедносна група, табела рута и прозор за крпење производна зависност. Запишите ком окидачу host служи и повуците га када окидач нестане.
Transit Gateway и неколико придруживања мењају аритметику
Ако је endpoint повезан директно на Transit Gateway, а не на подмрежу, модел се мења: клијенти се више не преводе у адресу интерфејса у подмрежи придруживања, а табеле рута gateway-а морају да носе клијентски опсег плус прикључак који води до peer-ованог VPC-а. То је чистије у размери, али посао се сели са четири уноса у табеле рута gateway-а.
Неколико придруживања умножава провере. Рута endpoint-а припада endpoint-у, али свака подмрежа придруживања тражи табелу рута са стварним peering следећим скоком. Сесија може да успе кроз једно придруживање док друго нема повратни пут, зато тестирајте свако.
Редослед провере који брзо проналази прекид
Изводите их по реду; сваки корак може да прође док следећи пада, а тајмаут клијента скоро никада не каже који се сломио.
- Решите име апликације са клијента и проверите да је адреса унутар peer-ованог опсега.
- Повежите се, па прочитајте дневник веза endpoint-а за придруживање које је завршило сесију.
- На тој подмрежи придруживања потврдите да табела рута усмерава peer-овани опсег на активну peering везу.
- На подмрежи ресурса у B потврдите повратни унос за опсег интерфејса и одговарајућа правила групе.
- Тестирајте једну дозвољену операцију и један ресурс који мора да остане недоступан; други хвата остатке дебаговања.
- Поново се повежите после сваке промене split-tunnel руте, јер покренути тунел неће преузети нови скуп рута.
Два симптома вреди запамтити. SYN који стигне до B без одговора скоро је увек повратна рута која недостаје. Веза која се заврши и затим ресетује обично је група, ACL или апликација. Ниједно се у дневнику endpoint-а не појављује као узрок, зато држите четири уноса са власником поред сваког.
Ако ниједан од три окидача не важи, довршите рутирану путању и забележите та четири уноса. Ако један важи, задржите bastion само за ту границу и оставите руту endpoint-а за сервисе којима не треба сесија испред њих.