Pemblokiran geografis CloudFront di balik VPN: mendiagnosis jalur keluar
Edge memutuskan berdasarkan alamat yang dilihatnya, dan jalur keluar bersama mengubah negara sekaligus reputasi. Uji setiap kontrol secara terpisah sebelum merotasi node keluar.
Pembatasan geografis adalah keputusan tentang alamat IP, dan VPN mengubah alamat mana yang dilihat layanan. Satu kalimat itu menjelaskan sebagian besar laporan membingungkan yang masuk ke antrean dukungan: «situs berfungsi di rumah dan gagal di terowongan» dan «situs berfungsi di terowongan tetapi tidak ada orang lain di kantor yang dapat memuatnya» adalah mekanisme yang sama yang menghasilkan hasil berlawanan. Runbook ini menelusuri diagnosis dalam urutan yang menyingkirkan penyebab, dimulai dari apa yang sebenarnya dikatakan edge kepada Anda. Alamat keluar yang sama dapat lolos satu kontrol dan gagal di kontrol berikutnya, karena setiap kontrol mengevaluasi properti berbeda dari alamat itu.
Baca 403 sebelum mengubah apa pun
Blokir geografis dan blokir WAF keduanya datang sebagai 403, dan keduanya diperbaiki di tempat berbeda. Catat header respons dan baris pertama isi, karena CloudFront menyertakan header cache dan string alasan yang memberi tahu lapisan mana yang menjawab:
curl -sS -o /tmp/body.txt -D /tmp/headers.txt https://d111111abcdef8.cloudfront.net/
grep -i "x-cache\|via" /tmp/headers.txt
head -c 300 /tmp/body.txt
Ketika distribusi itu sendiri memblokir permintaan karena geografi, isi membawa pesan yang menyebutkan pembatasan negara. Ketika aturan WAF yang memblokirnya, isi biasanya halaman terlarang generik dan ID permintaan distribusi di header adalah yang Anda bawa ke log WAF. Salah di sini mengirim Anda ke daftar negara yang diizinkan untuk masalah aturan berbasis laju, yang merupakan satu hari kerja yang tidak dapat berhasil.
Langkah 1: pastikan alamat mana yang dilihat distribusi
Tanyakan kepada jaringan apa yang dilihat dunia luar, dari mesin yang sama dan rute yang sama dengan yang digunakan peramban yang gagal. curl -s https://checkip.amazonaws.com mengembalikan alamat publik pemanggil, yang bagi klien VPN adalah jalur keluar, bukan koneksi rumah pelanggan:
curl -s https://checkip.amazonaws.com
nslookup d111111abcdef8.cloudfront.net
Jika alamat itu milik jalur keluar penyedia Anda di negara lain, keputusan geografis sudah dibuat dan tidak ada yang di klien akan mengubahnya. Tulis alamat itu di tiket sebelum menyentuh pengaturan, karena itulah satu-satunya fakta dalam laporan yang Anda dan layanan sepakati.
Langkah 2: pisahkan negara dari reputasi
CloudFront menentukan lokasi penonton dari basis data GeoIP pihak ketiga yang dikunci pada alamat sumber permintaan, dan pemetaannya perkiraan dan regional, bukan penentuan yang tepat. Ketika lokasi tidak dapat ditentukan, default yang didokumentasikan adalah tetap menyajikan konten. Jadi ada tiga keadaan yang mungkin: jalur keluar memetakan ke negara yang diblokir, ke negara yang diizinkan, atau basis data tidak berpendapat dan permintaan berlanjut.
Pengguna di negara yang diblokir dapat tampak berada di negara yang diizinkan jika penyedia memiliki jalur keluar di sana, dan pengguna di negara yang diizinkan dapat diblokir karena jalur keluar terdaftar di tempat lain. Tidak satu pun hasil membuktikan bahwa pembatasan rusak. Keduanya adalah pembatasan yang bekerja pada alamat yang diberikan kepadanya, seperti yang dijelaskan dokumentasi pembatasan geografis CloudFront.
Reputasi adalah sumbu kedua dan bertahan melewati terowongan. Grup aturan terkelola AWS WAF untuk IP anonim dibuat untuk memblokir permintaan dari VPN, proksi, node Tor, dan penyedia hosting, sehingga permintaan yang lolos pemeriksaan negara masih dapat ditolak karena apa alamat itu, bukan di mana. Jika pemblokiran dimulai saat Anda memindahkan terowongan ke host cloud, ini kemungkinan lapisan itu.
Langkah 3: periksa perilaku kuota
Jalur keluar bersama gagal dengan cara ketiga. Batas laju per IP dan jumlah sesi memperlakukan satu alamat sebagai satu klien, dan jalur keluar konsumen membawa banyak pelanggan sekaligus, sehingga pola permintaan yang biasa dari koneksi rumah terlihat seperti otomasi dari jalur keluar. Gejalanya adalah pembatasan atau blokir sementara yang hilang sendiri, bukan pesan kesalahan geografis.
Distribusi juga dapat dengan sengaja menghitung sesi per alamat, misalnya dengan fungsi Lambda@Edge yang menulis ke DynamoDB. Itu tidak mengidentifikasi orang di balik jalur keluar, tetapi membuat satu alamat berperilaku seperti satu klien, yang sering kali merupakan maksud sebenarnya. Catat alamat berbeda di balik keluhan sebelum menyetel ambang apa pun, karena NAT korporat di depan dua ratus meja dari luar terlihat persis seperti jalur keluar yang sibuk. Perkirakan positif palsu dari NAT korporat, jaringan universitas, atau rumah tangga besar yang semuanya menampilkan satu alamat.
Lihat permintaan sampel WAF dan metrik aturan berbasis laju sebelum menyalahkan geografi. Aturan yang terpicu oleh volume permintaan jalur keluar meninggalkan tanda tangan yang jelas, dan juga memberi tahu Anda apakah perbaikannya adalah penyesuaian batas atau jalur keluar yang berbeda.
Apa yang harus diubah, dan dalam urutan apa
Pertama putuskan untuk apa kontrol itu. Mempertahankan katalog regional, membatasi penyalahgunaan, dan menegakkan kontrak adalah tiga tujuan berbeda, dan hanya yang pertama ditangani oleh daftar negara. Jika tujuannya adalah kontrol penyalahgunaan, jalur keluar adalah unit identitas yang salah, dan berapa pun daftar izin tidak akan membuat alamat bersama tepercaya.
Jika alamat stabil benar-benar diperlukan untuk daftar izin, jalur keluar khusus atau statis membantu karena alamat dapat didaftarkan dan tidak berotasi. Itu tidak membuat alamat menjadi residensial, dan tidak mengubah negara yang ditetapkan basis data GeoIP padanya. Merotasi jalur keluar sampai satu berhasil adalah perubahan reputasi sementara, bukan perbaikan kebijakan.
Lalu tulis hasilnya dengan istilah yang digunakan pemohon: alamat ini diblokir berdasarkan negara, reputasi, atau laju, dan inilah kontrol yang akan berubah. Apa pun yang lebih kabur mengundang tiket yang sama minggu depan dengan jalur keluar berbeda.