Satu baris di dokumen kebutuhan, “aplikasi ini boleh memakai VPN, dan tidak yang lain”, diam-diam meminta dua mekanisme yang tidak diberikan satu sakelar pun. Lalu lintas butuh jalur melalui terowongan yang dimaksud, dan lalu lintas yang akan keluar langsung harus ditolak. Perkakas yang melakukan salah satunya dengan baik dan yang lain tidak sama sekali lazim, karena itu perbandingan yang hanya bertanya apakah sesuatu bisa memblokir menjawab separuh pertanyaan dengan yakin. Tuliskan batasnya lebih dulu, lalu pilih komponen yang mencakup kedua belahannya.

Dua kebutuhan yang tersembunyi dalam satu kalimat

Pengaturan arah adalah bagian yang menempatkan koneksi ke dalam terowongan atau proxy. Penolakan adalah bagian yang mencegah koneksi yang sama keluar lewat rute lain mana pun. Komponen yang berbeda menerapkannya, keduanya gagal dengan cara berbeda, dan sebuah produk bisa sangat baik di satu sisi tanpa berkata apa pun tentang sisi lain:

ApproachSteers trafficRefuses direct egressKnows the app identity
Per-app VPN profileYes, for the apps it namesOnly if a filter or firewall also blocksYes, within its own rules
Application proxy settingPartly, for requests that honour itNoNo
Content filterNoYesYes, if the filter is written that way
Local PF rulesetNoYes, by address and portNot reliably

Bacalah tabel sebagai daftar periksa, bukan peringkat. Tidak ada baris yang mengisi kedua kolom tengah, dan baris yang mencakupnya adalah dua komponen yang bekerja sama: satu memiliki jalur, yang lain memiliki penolakan. Kolom identitas penting karena alasan lain, sebab aturan yang tidak bisa menyebut nama aplikasi tidak bisa menegakkan aturan tentang aplikasi itu. Apa pun yang Anda pasang harus menjawab ketiganya, atau batas di dokumen kebutuhan bukanlah batas di mesin.

Pengaturan arah saja meninggalkan jalan keluar

Pengaturan proxy aplikasi adalah contoh paling jelas dari pengaturan arah tanpa penolakan. Ia dapat mengarahkan permintaan dari aplikasi yang menghormati proxy sistem, dan tidak mencakup apa pun yang lain: proses pembantu, pembaru, layanan latar belakang, atau protokol berbeda dapat menempuh jalurnya sendiri tanpa pernah membaca preferensi itu. Jadi memilih titik akhir SOCKS di satu panel tidak menciptakan kebijakan larangan keluar langsung bagi aplikasi. Jika kebutuhan menyangkut aplikasi secara keseluruhan, tanyakan komponen mana yang benar-benar dikenali aturan itu.

Profil VPN per aplikasi mengarahkan lebih baik daripada proxy, karena platform yang menentukan aplikasi mana yang masuk ke terowongan alih-alih setiap aplikasi menentukan sendiri. Meski begitu ia tidak menolak apa pun: profil menyediakan jalur, dan lalu lintas yang tidak cocok dengannya menempuh rute biasa. Celah itulah tempat komponen kedua mendapat tempatnya, dan itulah sebabnya produk yang tampak seperti satu sakelar biasanya ada dua.

Penolakan saja merusak aplikasi

Dokumentasi Apple tentang filter konten menjabarkan putusan izinkan-atau-blokir atas lalu lintas saat melewati tumpukan jaringan. Putusan itu bukan terowongan dan bukan koneksi proxy, karena ia memutuskan apakah sesuatu boleh berlanjut, bukan ke mana ia pergi. Filter saja menegakkan penolakan dengan sempurna dan membuat aplikasi tidak terpakai, dengan log bersih dan tanpa penjelasan. Putusan filter dapat menghentikan koneksi tetapi tidak pernah menyediakan terowongan, jadi memadukannya dengan pengaturan arah adalah keputusan desain, bukan tambahan opsional.

Himpunan aturan PF yang dikelola secara lokal berada di ujung lain spektrum itu. Itu keputusan dukungan yang sah pada mesin milik administrator, dan tidak otomatis menjadi landasan produk yang bisa didistribusikan, karena siapa pun yang memiliki himpunan aturan juga memiliki interaksinya dengan pengguna firewall lain, jalur peningkatannya, dan pemulihannya saat sebuah aturan salah. Menambahkan PF ke sebuah produk tidak menghapus pertanyaan kepemilikan itu; ia mendefinisikannya.

Penerapan menentukan apakah aturan itu masih ada besok

Bagaimana Network Extension diterapkan di platform Apple bergantung pada jenis penyedia, pengemasan, dan versi OS yang ada di hadapan Anda. Ekstensi aplikasi di macOS berjalan dalam konteks pengguna dan berakhir saat pengguna itu keluar, sedangkan ekstensi sistem memiliki konteks global yang tidak bergantung pada sesi. Jika perlindungan harus bertahan setelah keluar, perbedaan itulah seluruh desainnya, bukan catatan kaki. Pastikan jalur penerapannya sebelum menjanjikan perilakunya, karena kode yang sama mendarat berbeda tergantung jenis ekstensi yang dikirim.

Ketersediaan sumber adalah soal terpisah dari penegakan. Membaca repositori memberi tahu Anda bagaimana sesuatu diterapkan, bukan apa yang boleh dilakukan biner terpasang di mesin ini. Penandatanganan, pemasangan, dan otorisasi tetap berlaku, dan petunjuk yang dibangun di sekitar ekstensi kernel usang atau trik penyuntikan pustaka menjabarkan platform lain dan sikap risiko lain, sebaik apa pun kinerjanya dahulu.

Kasus penerimaan yang menyebut nama aplikasi

Pilih satu tindakan yang dilakukan aplikasi atas kemauannya sendiri, catat alamat yang seharusnya ia capai dan apakah alamat itu IPv4 atau IPv6, lalu ulangi tindakan yang sama dalam keadaan tanpa terowongan yang disetujui. Eksekusi kedua harus menghasilkan penolakan yang dinyatakan, bukan upaya ulang langsung yang senyap. Itulah separuh yang orang biarkan tidak dirinci, dan satu-satunya separuh yang membuktikan penolakan memang ada. Jalankan lebih dulu dengan terowongan tersedia, agar perbedaan antara kedua hasil hanya bisa berasal dari terowongan yang hilang.

Lalu telusuri peralihan yang disebut kebutuhan: memulai ulang aplikasi, proses pembantu yang aktif, terowongan yang menyambung lagi, mesin yang berganti jaringan, serta keluar atau boot ulang bila berlaku. Halaman IP publik di peramban bukan uji soket aplikasi lain, jadi tidak bisa menggantikan yang ini. Bila tidak ada penerapan yang didukung yang mencakup perilaku nyata aplikasi, lingkungan terisolasi resmi dengan gerbang eksplisit dan tanpa jalan keluar alternatif adalah keputusan pengekangan dengan biaya pengelolaannya sendiri, bukan pengganti kotak centang.

Akhiri dengan menuliskan empat butir: komponen apa yang membentuk aplikasi, siapa pemilik pengaturan arah, siapa pemilik penolakan, dan keadaan di mana aturan itu masih harus berlaku. Repositori publik bisa menjadi salah satu kriteria pemilihan, tetapi bukan salah satu dari keempat itu, dan butir-butir itulah yang menentukan apakah suatu alat memenuhi kebutuhan jaringan.

Artikel terkait