Tunnel bekerja untuk semua orang di belakangnya, gateway meneruskan lalu lintas mereka, namun mesin itu sendiri tidak dapat memasang pembaruan keamanan. Inilah bentuk masalah yang biasa: izin penerusan diberikan kepada klien, dan koneksi keluar milik gateway sendiri tidak pernah dimasukkan ke dalam rencana. Manajer paket membuka soketnya sendiri, dari gateway, ke repositori yang mungkin tidak pernah Anda sebutkan di mana pun dalam kebijakan firewall.

Mengunci gateway adalah hal yang benar. Menguncinya begitu rapat hingga berhenti menerima tambalan adalah keputusan lain, dan biasanya keputusan yang tidak disengaja.

Keluaran lokal bukan penerusan klien

Aturan penerusan mengatur paket yang datang dari tempat lain dan keluar melalui gateway. Lalu lintas pembaruan gateway sendiri tidak pernah cocok dengan aturan itu; lalu lintas tersebut dihasilkan secara lokal dan melewati jalur keluaran. Perbedaan itulah yang menjelaskan kegagalan yang tampak mustahil saat akses klien bekerja sempurna.

Hal itu juga menjelaskan celah kebijakan yang lolos dari pengujian, karena pemeriksaan cepat dari laptop di belakang tunnel membuktikan rantai penerusan bekerja dan tidak mengatakan apa pun tentang koneksi host itu sendiri. Perlakukan gateway sebagai dua subjek: router dengan rantai penerusan dan host dengan rantai keluaran. Keduanya memerlukan pendapat, dan biasanya hanya satu yang dituliskan.

Sebutkan tahap yang gagal

Kesalahan pembaruan menyebutkan batas yang berbeda, dan meraih aturan port sebelum membaca batas mana yang gagal menghabiskan satu sore. Nama repositori yang tidak dapat diresolusi adalah pertanyaan resolver, bukan pertanyaan transport.

getent hosts deb.debian.org
curl -sSI https://deb.debian.org/debian/dists/stable/Release | head -n 1
apt-get -o Debug::Acquire::https=true update

Batas waktu setelah pencarian berhasil memindahkan pertanyaan ke transport: alamat mana, port mana, dan proxy mana yang dikonfigurasi benar-benar dicoba oleh manajer paket. Kegagalan verifikasi TLS adalah hal ketiga yang sama sekali berbeda, dan itu berarti koneksi bekerja cukup baik untuk bernegosiasi. Keluhan autentikasi arsip adalah tahap keempat, dan itu menyangkut metadata bertanda tangan alih-alih keterjangkauan. Empat tahap, empat perbaikan berbeda, dan ping selalu hanya menjelaskan satu protokol yang tidak digunakan manajer paket mana pun.

Baca daftar sumber sebelum menambahkan aturan

Daftarkan URI sumber yang sebenarnya dan konfigurasi proxy yang efektif, bukan yang Anda ingat. Aturan yang ditulis untuk HTTP biasa tidak berguna ketika sumbernya HTTPS, dan proxy yang dikenal shell mungkin tidak terlihat oleh layanan yang dimulai saat boot dengan lingkungan berbeda.

Dokumentasi transport HTTP di APT mencakup pengaturan proxy lingkungan dan khusus APT, termasuk pilihan per host, dan transport HTTPS-nya memiliki pengaturan verifikasi sendiri. Jalur yang diambil peramban dan jalur yang diambil manajer paket adalah jalur terpisah, bahkan pada mesin yang sama.

Perhatikan keluarga alamat mana yang menjadi tujuan resolusi sumber. Aturan yang hanya mengizinkan IPv4 akan terus gagal pada host yang sumbernya lebih menyukai catatan AAAA, dan kesalahannya tampak intermiten karena bergantung pada jawaban mana yang tiba lebih dulu.

Pilih satu jalur pemeliharaan dan pertahankan

Ada tiga opsi yang dapat dipertahankan: lalu lintas pemeliharaan melalui tunnel, melalui proxy pembaruan terkelola, atau melalui pengecualian langsung yang sempit. Pilih satu dengan sengaja dan buat resolver setuju, karena pemisahan di mana nama diresolusi ke satu arah dan koneksi pergi ke arah lain menghasilkan kegagalan yang tidak dapat dijelaskan siapa pun.

Apa pun yang Anda pilih, itu tidak boleh menjadi cadangan tanpa batas. Jika lalu lintas keluar langsung dilarang saat tunnel mati, pengecualian pemeliharaan yang diam-diam mengizinkan semuanya adalah perubahan kebijakan yang menyamar sebagai perbaikan. Jaga titik akhir tunnel itu sendiri dan kebutuhan bootstrap dalam kategori terpisah dari akses repositori, karena keduanya menunjuk ke tujuan berbeda dan gagal dengan cara berbeda, sehingga satu pengecualian tidak dapat menutupi yang lain.

Verifikasi tanpa melemahkan pemeriksaan

Terapkan cakupan melalui firewall yang sudah memiliki kebijakan tersebut, alih-alih menambahkan manajer kedua karena satu panduan menggunakannya. Lalu jalankan penyegaran metadata dan satu transaksi paket nyata di bawah kebijakan yang dipelihara, dan baca keluarannya alih-alih hanya status keluarnya.

Keberhasilan transport bukan izin untuk melonggarkan verifikasi. Autentikasi arsip dan identitas server TLS adalah jaminan terpisah, dan menonaktifkan salah satunya untuk membungkam kesalahan mengubah apa yang Anda percaya, bukan apa yang dapat Anda jangkau.

Akhiri dengan sengaja menguji kasus tanpa tunnel. Mengetahui bagaimana gateway berperilaku tanpa tunnel-nya adalah bagian dari desain, menemukannya saat gangguan bukan. Matikan tunnel, jalankan penyegaran metadata, dan pastikan host gagal dengan cara yang Anda maksud alih-alih diam-diam kembali ke jalur terbuka. Jauhkan kredensial repositori dan proxy dari diagnostik bersama, dan tinggalkan catatan yang menyebutkan siapa pemilik jalur pembaruan.

Artikel terkait