AWS Client VPN trafiki uyğun marşrut olmadan niyə atır
Son nöqtə paketi yalnız marşrut cədvəli təyinatı əhatə etdikdə ötürür. Marşrutları oxuyun, prefiksləri for_each ilə elan edin, geri yolu yoxlayın.
Client VPN müştəriyə ünvan verir, əl sıxma tamamlanır, amma bağlantı yenə heç yerə getmir. Sertifikatlara və ya müştəri versiyalarına toxunmadan əvvəl son nöqtənin öz marşrut cədvəlinə baxın. AWS Client VPN son nöqtəsi paketi yalnız marşrutlarından biri təyinat prefiksini əhatə etdikdə ötürür; heç biri uyğun gəlmirsə, paket son nöqtədə atılır və hədəf host SYN-i heç vaxt görmür.
Bu yönləndirmə qərarıdır, autentifikasiya qərarı deyil. Bu, tunel qurulduqdan və avtorizasiya qaydaları qiymətləndirildikdən sonra baş verir; buna görə də etibarlı sertifikat və etibarlı qrup yenə də ölü bağlantı yarada bilər.
Son nöqtə yalnız marşrut cədvəlinin əhatə etdiyini ötürür
Hər marşrut təyinat CIDR-i və trafiki qəbul etməli olan alt şəbəkədən ibarətdir. Son nöqtə müştərinin təyinatını həmin siyahı ilə tutuşdurur, uyğun girişi seçir və paketi əlaqəli alt şəbəkəyə göndərir. Giriş yoxdursa, növbəti hop da yoxdur.
Marşrutun nə olmadığına diqqət edin. O, VPC marşrut cədvəlinin girişi deyil və heç nəyə icazə vermir. Avtorizasiya qaydaları qrupun hədəfə çata biləcəyini, marşrutlar isə son nöqtənin paketi göndərəcək yerinin olub-olmadığını müəyyən edir. Hər ikisi uzlaşmalıdır və fərqli simptomlarla sıradan çıxır, ona görə də hansının xarab olduğunu təxmin etmək bir günortanı boşa verir.
Klassik uyğunsuzluq peer VPC-dir. Kimsə 10.20.0.0/24 üçün marşrut əlavə edir, halbuki host 10.20.4.0/24-də yerləşir, yəni ünvan bütün girişlərdən kənarda qalır. Müştəri tərəfindəki tutma cavabsız təkrar SYN-lər göstərir, hədəfin jurnalları isə heç nə göstərmir.
Sertifikatdan əvvəl marşrut siyahısını oxuyun
Son nöqtənin marşrutları ayrı obyektdir, ona görə VPC cədvəlini oxumaq əvəzinə birbaşa onları sorğulayın:
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 --query 'Routes[].{Dest:DestinationCidr,Target:TargetSubnet,Origin:Origin}'Uğursuz müştəridən dəqiq ünvanı və prefiks uzunluğunu götürün, sonra əhatəni hərfbəhərf yoxlayın. Ən uzun prefiks uyğunluğu tətbiq olunur, ona görə daha dar marşrut başqa yerə işarə edəndə geniş marşrut sizi xilas etmir.
for_each ilə hər təyinat üçün bir resurs
Əl ilə yazılmış marşrut blokları kimsə konsolda prefiks əlavə edən kimi sürüşür. Təyinatları xəritədə saxlayın və hər açar üçün bir resurs yaradın ki, hər əlavə və ya silmə təcrid olunmuş qalsın.
variable "client_vpn_routes" {
type = map(string)
default = {
"10.20.0.0/16" = "subnet-0aa11bb22cc33dd44"
"172.31.0.0/20" = "subnet-0aa11bb22cc33dd44"
}
}
resource "aws_ec2_client_vpn_route" "this" {
for_each = var.client_vpn_routes
client_vpn_endpoint_id = var.client_vpn_endpoint_id
destination_cidr_block = each.key
target_vpc_subnet_id = each.value
depends_on = [aws_ec2_client_vpn_network_association.this]
}Şəbəkə assosiasiyasından asılılığı saxlayın. Marşrutun əlaqəli alt şəbəkəyə ehtiyacı var, ona görə hər ikisini yaradan apply əvvəlcə assosiasiyanı sıralamalıdır və bu istinad olmadan Terraform marşrutu əvvəl sınamaqda sərbəstdir. Sonra planı oxuyun: marşrut əlavələrinin sayı əlavə etdiyiniz prefikslərə uyğun olmalıdır. Plan həm də son nöqtəni əvəz edirsə, son nöqtə resursu səhv yazılıb və onu tətbiq etmək bütün qoşulmuş müştəriləri ayırır.
Yaratmadığınız son nöqtəni mənimsəmək
Əksər komandalar konsolda qurulmuş son nöqtəni miras alır, buna görə heç bir marşrut kodu mövcud deyil. Yalnız marşrutları Terraform-a salmaq üçün ikinci son nöqtə qurmayın.
Əvəzində import edin və ya id-ləri dəyişən kimi ötürüb miras obyektləri idarəsiz buraxın. Import provayderin hər resurs tipi üçün sənədləşdirdiyi identifikator formatını tələb edir; bu format son nöqtəni, təyinat prefiksini və hədəf alt şəbəkəni kodlayır. Həmin sətri yaddaşdan qurmaq əvəzinə resurs sənədindən kopyalayın, plan işə salın və yeni bir şey əlavə etməzdən əvvəl heç bir dəyişiklik gözləməyin.
Paketi getdiyi sıra ilə izləyin
Marşrut varsa və bağlantı yenə uğursuz olursa, yuxarı qatda təxmin etmək əvəzinə yolu sıra ilə gəzin.
- Marşrut: prefiks təyinatı əhatə edir və son nöqtə ilə əlaqəli alt şəbəkəyə işarə edir.
- Avtorizasiya: avtorizasiya qaydası istifadəçinin qrupu üçün həmin təyinatı icazəli edir. Tək marşrut heç vaxt giriş vermir.
- Geri yol: hədəf alt şəbəkənin marşrut cədvəli cavabları son nöqtəyə doğru geri göndərir və təhlükəsizlik qrupu portu müştəri ünvan hovuzundan icazəli edir.
- Tətbiq: müştəridən real TCP bağlantısı açın, sonra hədəf jurnallarının hovuzdan gözlənilən mənbə ünvanını göstərdiyini təsdiqləyin.
Hər apply-da bir prefiks dəyişin, sonra marşrut siyahısını yenidən oxuyun və təyinatı, icazə qaydasını və geri yolu birlikdə qeyd edin. Rədd edilmiş bağlantını sonra sazlayan şəxs sertifikat nəzəriyyəsindən deyil, həmin inventardan başlamalıdır.