Client VPN memberikan klien satu alamat, jabat tangan selesai, dan sambungan masih tidak ke mana-mana. Sebelum menyentuh sijil atau versi klien, lihat jadual laluan titik akhir itu sendiri. Titik akhir AWS Client VPN hanya memajukan paket apabila salah satu laluannya meliputi awalan destinasi; jika tiada yang sepadan, paket dibuang di titik akhir dan hos sasaran tidak pernah melihat SYN.

Itu keputusan pemajuan, bukan keputusan pengesahan. Ia berlaku selepas terowong naik dan selepas peraturan kebenaran dinilai, sebab itu sijil sah dan kumpulan sah masih boleh menghasilkan sambungan mati.

Titik akhir hanya memajukan apa yang diliputi jadual laluannya

Setiap laluan ialah CIDR destinasi serta subrang yang sepatutnya menerima trafik. Titik akhir membandingkan destinasi klien dengan senarai itu, memilih entri yang sepadan dan menghantar paket ke subrang berkaitan. Tiada entri bermakna tiada hop seterusnya.

Perhatikan apa yang bukan laluan. Ia bukan entri jadual laluan VPC, dan ia tidak membenarkan apa-apa. Peraturan kebenaran menentukan sama ada kumpulan boleh mencapai destinasi; laluan menentukan sama ada titik akhir mempunyai tempat untuk menghantar paket. Kedua-duanya mesti sepadan, dan ia gagal dengan gejala berbeza, jadi meneka yang mana rosak membazir sebelah petang.

Ketidakpadanan klasik ialah VPC yang di-peer. Seseorang menambah laluan untuk 10.20.0.0/24 sedangkan hos berada di 10.20.4.0/24, jadi alamat itu terletak di luar setiap entri. Tangkapan di sebelah klien menunjukkan SYN berulang tanpa balasan, dan log sasaran tidak menunjukkan apa-apa.

Baca senarai laluan sebelum sijil

Laluan titik akhir ialah objek tersendiri, jadi tanyakan terus daripada membaca jadual VPC:

aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 --query 'Routes[].{Dest:DestinationCidr,Target:TargetSubnet,Origin:Origin}'

Ambil alamat tepat dan panjang awalan daripada klien yang gagal, kemudian semak liputan aksara demi aksara. Padanan awalan terpanjang terpakai, jadi laluan yang lebih luas tidak menyelamatkan anda apabila laluan yang lebih sempit menunjuk ke tempat lain.

Satu sumber bagi setiap destinasi dengan for_each

Blok laluan yang ditulis tangan melencong pada saat seseorang menambah awalan dalam konsol. Simpan destinasi dalam peta dan cipta satu sumber bagi setiap kunci, supaya setiap penambahan atau pembuangan kekal terasing.

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]
}

Kekalkan kebergantungan pada perkaitan rangkaian. Laluan memerlukan subrang yang dikaitkan, jadi apply yang mencipta kedua-duanya mesti menyusun perkaitan dahulu, dan tanpa rujukan itu Terraform bebas mencuba laluan dahulu. Kemudian baca pelan: bilangan penambahan laluan harus sepadan dengan awalan yang anda tambah. Jika pelan juga menggantikan titik akhir, sumber titik akhir ditulis salah, dan menerapkannya memutuskan setiap klien yang bersambung.

Menerima pakai titik akhir yang anda tidak cipta

Kebanyakan pasukan mewarisi titik akhir yang dibina dalam konsol, sebab itu tiada kod laluan. Jangan dirikan titik akhir kedua hanya untuk membawa laluan ke Terraform.

Import sebaliknya, atau hantar id sebagai pemboleh ubah dan biarkan objek warisan tidak terurus. Import memerlukan format pengecam yang didokumenkan pembekal bagi setiap jenis sumber; ia mengekod titik akhir, awalan destinasi dan subrang sasaran. Salin rentetan itu daripada dokumentasi sumber dan bukannya menyusunnya daripada ingatan, jalankan pelan, dan jangkakan tiada perubahan sebelum anda menambah sesuatu yang baharu.

Jejaki paket mengikut urutan perjalanannya

Apabila laluan wujud dan sambungan masih gagal, telusuri laluan mengikut urutan daripada meneka pada lapisan atas.

  1. Laluan: awalan meliputi destinasi dan menunjuk ke subrang yang dikaitkan dengan titik akhir.
  2. Kebenaran: peraturan kebenaran membenarkan destinasi itu untuk kumpulan pengguna. Laluan sahaja tidak pernah memberi akses.
  3. Laluan balik: jadual laluan subrang sasaran menghantar balasan kembali ke arah titik akhir, dan kumpulan keselamatan membenarkan port daripada kolam alamat klien.
  4. Aplikasi: buka sambungan TCP sebenar daripada klien, kemudian sahkan log sasaran menunjukkan alamat sumber yang dijangka daripada kolam itu.

Tukar satu awalan setiap apply, kemudian baca semula senarai laluan, dan catat destinasi, peraturan yang membenarkan serta laluan balik bersama-sama. Orang seterusnya yang menyahpepijat sambungan yang ditolak harus bermula daripada senarai itu, bukan daripada teori sijil.

Artikel berkaitan