Satu baris dalam dokumen keperluan, “apl ini boleh menggunakan VPN, dan tiada yang lain”, secara senyap meminta dua mekanisme yang tidak diberikan oleh satu suis pun. Trafik memerlukan laluan melalui terowong yang dimaksudkan, dan trafik yang akan keluar terus mesti ditolak. Alat yang melakukan salah satu dengan baik dan yang lain tidak sama sekali adalah lazim, sebab itu perbandingan yang hanya bertanya sama ada sesuatu boleh menyekat menjawab separuh soalan dengan yakin. Tuliskan sempadan itu dahulu, kemudian pilih komponen yang meliputi kedua-dua belahnya.

Dua keperluan tersembunyi dalam satu ayat

Penghalaan ialah bahagian yang meletakkan sambungan ke dalam terowong atau proksi. Penolakan ialah bahagian yang menghalang sambungan yang sama daripada keluar melalui laluan lain. Komponen berbeza melaksanakannya, ia gagal dengan cara berbeza, dan produk boleh cemerlang dalam satu tanpa berkata apa-apa tentang yang 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

Baca jadual sebagai senarai semak, bukan kedudukan. Tiada baris mengisi kedua-dua lajur tengah, dan baris yang meliputinya ialah dua komponen yang bekerjasama: satu memiliki laluan, satu lagi memiliki penolakan. Lajur identiti penting atas sebab lain, kerana peraturan yang tidak boleh menamakan apl itu tidak boleh menguatkuasakan peraturan tentang apl itu. Apa pun yang anda gunakan, ia mesti menjawab ketiga-tiganya, jika tidak sempadan dalam dokumen keperluan bukan sempadan pada mesin.

Penghalaan sahaja meninggalkan jalan keluar

Tetapan proksi aplikasi ialah contoh paling jelas penghalaan tanpa penolakan. Ia boleh menghalakan permintaan daripada apl yang menghormati proksi sistem, dan tidak meliputi apa-apa lagi: proses pembantu, pengemas kini, perkhidmatan latar belakang atau protokol lain boleh melalui laluan sendiri tanpa pernah membaca tetapan itu. Jadi memilih titik akhir SOCKS dalam satu panel tidak mencipta dasar larangan keluar terus untuk aplikasi itu. Jika keperluan itu tentang apl secara keseluruhan, tanyakan komponen mana yang benar-benar dikenal pasti oleh peraturan itu.

Profil VPN setiap apl menghala dengan lebih baik daripada proksi, kerana platform menentukan apl mana yang masuk ke terowong bukannya setiap apl menentukan sendiri. Namun ia tidak menolak apa-apa: profil menyediakan laluan, dan trafik yang tidak sepadan dengannya mengambil laluan biasa. Jurang itulah tempat komponen kedua mendapat tempatnya, dan itulah sebabnya produk yang kelihatan seperti satu suis biasanya dua.

Penolakan sahaja merosakkan apl

Dokumentasi Apple tentang penapis kandungan menerangkan keputusan benarkan-atau-sekat terhadap trafik semasa ia melalui tindanan rangkaian. Keputusan itu bukan terowong dan bukan sambungan proksi, kerana ia menentukan sama ada sesuatu boleh diteruskan, bukan ke mana ia pergi. Penapis sahaja menguatkuasakan penolakan dengan sempurna dan meninggalkan aplikasi tidak boleh digunakan, dengan log bersih dan tanpa penjelasan. Keputusan penapis boleh menghentikan sambungan tetapi tidak pernah menyediakan terowong, jadi memasangkannya dengan penghalaan ialah keputusan reka bentuk, bukan tambahan pilihan.

Set peraturan PF yang ditadbir secara tempatan terletak di hujung lain spektrum itu. Ia keputusan sokongan yang sah pada mesin milik pentadbir, dan ia tidak secara automatik menjadi asas produk yang boleh diedarkan, kerana sesiapa yang memiliki set peraturan itu juga memiliki interaksinya dengan pengguna tembok api lain, laluan naik tarafnya dan pemulihannya apabila peraturan itu salah. Menambah PF pada produk tidak menghapuskan soalan pemilikan itu; ia mentakrifkannya.

Penggunaan menentukan sama ada peraturan itu masih wujud esok

Cara Network Extension digunakan pada platform Apple bergantung pada jenis penyedia, pembungkusan dan versi OS di hadapan anda. Sambungan apl pada macOS berjalan dalam konteks pengguna dan berakhir apabila pengguna itu log keluar, manakala sambungan sistem mempunyai konteks global yang tidak bergantung pada sesi. Jika perlindungan mesti bertahan selepas log keluar, perbezaan itulah keseluruhan reka bentuk, bukan nota kaki. Sahkan laluan penggunaan sebelum menjanjikan tingkah laku, kerana kod yang sama mendarat secara berbeza bergantung pada jenis sambungan yang dihantar.

Ketersediaan sumber ialah perkara berasingan daripada penguatkuasaan. Membaca repositori memberitahu anda bagaimana sesuatu dilaksanakan, bukan apa yang dibenarkan dilakukan oleh binari yang dipasang pada mesin ini. Penandatanganan, pemasangan dan kebenaran masih terpakai, dan arahan yang dibina sekitar sambungan kernel usang atau helah suntikan pustaka menerangkan platform lain dan pendirian risiko yang lain, sebaik mana pun ia pernah berfungsi.

Kes penerimaan yang menamakan apl itu

Pilih satu tindakan yang dilakukan oleh aplikasi itu sendiri, catat alamat yang sepatutnya dicapai dan sama ada alamat itu IPv4 atau IPv6, kemudian ulangi tindakan yang sama dalam keadaan tanpa terowong yang diluluskan. Larian kedua mesti menghasilkan penolakan yang diisytiharkan, bukan percubaan semula terus yang senyap. Itulah separuh yang orang biarkan tidak dinyatakan, dan satu-satunya separuh yang membuktikan penolakan itu wujud. Jalankan dahulu dengan terowong tersedia, supaya perbezaan antara dua keputusan hanya boleh datang daripada terowong yang hilang.

Kemudian jejaki peralihan yang dinamakan oleh keperluan: memulakan semula apl, proses pembantu yang tercetus, terowong yang menyambung semula, mesin yang bertukar rangkaian, dan log keluar atau but semula jika berkenaan. Halaman IP awam pelayar bukan ujian soket aplikasi lain, jadi ia tidak boleh menggantikan yang ini. Jika tiada penggunaan disokong yang meliputi tingkah laku sebenar apl itu, persekitaran terasing yang dibenarkan dengan gateway eksplisit dan tanpa jalan keluar alternatif ialah keputusan pembendungan dengan kos pengurusannya sendiri, bukan pengganti kotak semak.

Akhiri dengan menulis empat perkara: komponen apa yang membentuk apl itu, siapa memiliki penghalaan, siapa memiliki penolakan, dan keadaan di mana peraturan itu masih mesti terpakai. Repositori awam boleh menjadi satu kriteria pemilihan, tetapi ia bukan salah satu daripada empat itu, dan perkara-perkara itulah yang menentukan sama ada sesuatu alat memenuhi keperluan rangkaian.

Artikel berkaitan