Tiket sokongan tiba yang menyatakan aplikasi menunjukkan satu alamat manakala pelayan merekodkan alamat lain, lalu bertanya yang mana satu berbohong. Kedua-duanya tidak; ini dua pemerhatian terhadap dua perkara berbeza. Alamat yang terikat pada antara muka, alamat yang terikat pada soket, dan alamat sumber yang dilihat oleh perkhidmatan jauh menjawab tiga soalan berasingan. VPN menambah konteks rangkaian pada telefon dan tidak meruntuhkan ketiga-tiganya menjadi satu nombor untuk seluruh peranti. Baca nama medan dalam tiket sebelum membaca alamatnya.

Apa yang biasanya dijelaskan oleh tiket

Bayangkan telefon di Wi-Fi dengan terowong yang aktif. Antara muka Wi-Fi memegang alamat LAN, antara muka terowong memegang alamat dalaman yang diperuntukkan, dan permintaan yang keluar melalui terowong tiba di perkhidmatan awam daripada mana-mana sumber yang bertahan daripada sebarang terjemahan di laluan. Aplikasi yang mencetak alamat dalaman dan pelayan yang merekodkan sumber terjemahan kedua-duanya melaporkan dengan tepat, dan kedua-dua nilai itu tidak akan pernah sepadan.

Ketiga-tiga pemerhatian berbeza dari segi apa yang boleh dibuktikan, bukan hanya dari segi apa yang digambarkan.

ObservationWhat it describesWhat it cannot prove
An address on a local interfaceOne configured attachment: Wi-Fi, cellular or a tunnelThe source a remote site receives
A socket's local endpointThe binding used by that one connectionThe address after translation further along
The peer address at a serviceWhat arrived at that observation pointAny other interface on the phone

Simpan jadual itu di sebelah kod yang mengisi nilai-nilai ini ke dalam tiket, kerana sebahagian besar kekeliruan di sini ialah kolum tertukar dan bukan kerosakan rangkaian.

Apa yang boleh dan tidak boleh dijawab oleh panggilan soket

Pada peringkat API, getsockname melaporkan titik akhir setempat yang kini terikat pada soket tertentu. Bagi soket yang bersambung, itulah sumber yang dipilih kernel untuk sambungan itu, yang sudah lebih khusus daripada mana-mana senarai antara muka. Ini bukan carian alamat awam, dan memanggilnya pada soket yang tidak terikat hampir tidak memberitahu apa-apa. Apa pun yang dikembalikannya masih boleh ditulis semula kemudian di laluan, jadi hanya pemerhatian perkhidmatan itu sendiri yang berautoriti tentang apa yang diterima oleh perkhidmatan.

Pada platform Apple, bahagian antara muka mempunyai permukaan berasingan: tetapan terowong menyenaraikan alamat yang diperuntukkan kepada antara muka terowong. Membacanya memberitahu anda bagaimana terowong dikonfigurasikan, dan ia tidak memberitahu anda laluan mana yang diambil oleh permintaan tertentu, kerana penghalaan dan peraturan setiap aplikasi menentukan perkara itu bagi setiap sambungan.

Terowong berpecah menjadikan jurang itu kelihatan. Satu permintaan mungkin keluar melalui terowong manakala yang seterusnya, yang ditujukan kepada destinasi atau keluarga alamat lain, tidak, jadi dua keputusan daripada aplikasi yang sama dengan selang beberapa saat boleh jujur dan berbeza.

Pilih pemerhatian yang sepadan dengan soalan

Pilih dengan sengaja daripada menginstrumentasikan segala-galanya. Untuk apa yang dilihat oleh backend, rekodkan sumber di backend, dan di tempat proksi terbalik berdiri di hadapan, baca alamat klien daripada pengepala penghantaran yang benar-benar ditetapkan oleh penggunaan anda, bukan daripada apa-apa yang dihantar oleh klien.

Untuk mengetahui sama ada terowong dikonfigurasikan, baca antara muka. Untuk mengetahui sama ada trafik aplikasi ini menggunakannya, hantar trafik daripada aplikasi itu ke destinasi yang anda kawal dan bandingkan sumber di kedua-dua hujung.

Peraturan setiap aplikasi berhak mendapat ayatnya sendiri. Keputusan pelayar ialah bukti tentang pelayar itu, dan terowong terurus setiap aplikasi boleh meletakkan dua aplikasi pada telefon yang sama di laluan berbeza pada saat yang sama. Mengesahkan liputan bermakna menghantar trafik daripada aplikasi berkenaan, dalam keluarga alamat berkenaan.

Nama antara muka bukan pengesan

Jangan gunakan nama antara muka sebagai pemeriksaan VPN juga. Nama-nama itu bukan kontrak awam, dan telefon boleh mempunyai beberapa sambungan manakala hanya satu daripadanya membawa permintaan anda.

Namakan medan itu sempena pemerhatian yang dibawanya. local_interface_address, socket_local_endpoint dan service_observed_source janggal dan tidak kabur, dan tidak kabur itulah yang anda mahu apabila nilainya berakhir dalam tiket sokongan seminggu kemudian. Satu lajur bernama device IP akan mengumpul ketiga-tiganya dan kemudian dipercayai seolah-olah ia satu.

Jauhkan identiti daripada lajur alamat

Keluaran VPN yang dikongsi bukanlah identiti pengguna, dan alamat peribadi bukanlah kelayakan akses. Kedua-duanya menggambarkan laluan dan bukan orang, dan memperlakukan mana-mana satu daripadanya sebagai pengesahan mengubah kemalangan penghalaan menjadi keputusan kebenaran.

Apabila seseorang bertanya alamat mana yang dimiliki telefon, jawapan yang berguna ialah soalan tentang sambungan mana dan pemerhati mana. Takrif getsockname wajar dipetik untuk kes tengah, kerana ia menyelesaikan persoalan soket tanpa berpura-pura menyelesaikan dua yang lain.

Kemudian tuliskan yang mana antara ketiga-tiganya produk anda benar-benar perlu dipaparkan, dan padamkan dua yang lain daripada antara muka.

Artikel berkaitan