Tethering terbalik memindahkan lalu lintas ponsel ke komputer dan mengeluarkannya lewat koneksi komputer itu. Kabel USB saja tidak melakukannya: ponsel memerlukan layanan penangkapan yang mengambil alih peruteannya, dan komputer memerlukan relai yang membawa paket-paket itu lebih jauh. Jalur ini punya empat lompatan: aplikasi, penangkapan di ponsel, relai USB, dan pintu keluar host, dan masing-masing punya pemilik berbeda. Runbook ini membangun jalur itu, menempatkan VPN host di tempat yang semestinya, dan memeriksa setiap lompatan sebelum Anda memercayai hasilnya.

Petakan lompatannya sebelum menjalankan apa pun

Setiap lompatan menerapkan kebijakannya sendiri, karena itu hasil yang berfungsi di satu ujung tidak mengatakan apa pun tentang ujung lain. Aplikasi memilih tujuan dan resolver, layanan penangkapan memutuskan lalu lintas mana yang masuk ke relai, relai meneruskan ke soket host, dan perutean serta VPN host menentukan alamat yang akhirnya dilihat tujuan.

HopOwnerWhat it decides
Application requestThe appDestination, resolver, address family
Capture servicePhone VpnService appWhich traffic enters the relay at all
ADB relayHost processForwarding phone flows to host sockets
Host egressHost routing and VPNExit address and host policy

Hanya satu klien layanan VPN yang dapat memegang peran penangkapan ponsel pada satu waktu, jadi aplikasi VPN biasa kedua tidak menumpuk di atas relai. Jika VPN berada di komputer, layanan penangkapan adalah mata rantai akses menuju komputer itu, bukan bukti bahwa terowongan jarak jauh sudah melindungi hasilnya.

Siapkan relai sebelum menyentuh ponsel

Gnirehtet adalah contoh terdokumentasi arsitektur ini: klien layanan VPN tanpa root di ponsel ditambah relai yang dibawa lewat ADB di host, mendukung TCP dan UDP di atas IPv4. Repositorinya juga menyatakan bahwa proyek ini tidak lagi dirawat secara aktif, jadi perlakukan sebagai rancangan acuan dan alat kerja untuk laboratorium, bukan sebagai produk berdukungan yang bisa dijadikan standar di seluruh armada terkelola.

adb devices
adb shell getprop ro.build.version.release
gnirehtet run

Jalankan adb devices lebih dulu. Ponsel yang belum menerima kunci debug host dilaporkan sebagai tidak sah, dan relai tidak akan tersambung sampai permintaan di perangkat diterima. gnirehtet run memasang klien, memulai relai, dan mengaktifkan penangkapan; pada versi yang memisahkan langkah-langkahnya, gunakan subperintah install, relay, dan start yang terdokumentasi sebagai gantinya.

Akses ADB adalah hubungan kendali perangkat, bukan pengaturan jaringan. Otorisasi hanya komputer yang Anda kendalikan, dan rencanakan pencabutan otorisasi itu saat tugas selesai.

Kembalikan VPN host ke dalam jalur

Relai adalah proses host biasa, jadi koneksi lanjutannya mengikuti tabel perutean host. Profil terowongan penuh membawanya; terowongan terbagi mungkin tidak. Jika VPN host memakai kendali per aplikasi, tambahkan biner relai ke himpunan yang diizinkan, jika tidak relai tetap memakai antarmuka fisik sementara peramban tampak terlindungi.

ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay

Jalankan dua perintah pertama sebelum dan sesudah menyambungkan VPN host. Jika alamatnya tidak berubah, relai tidak berada di terowongan, apa pun kata jendela klien. Terowongan khusus privat juga meninggalkan tujuan publik di pintu keluar normal host, yang tampak seperti kebocoran tetapi itulah kebijakan yang Anda tetapkan.

DNS diselesaikan di host untuk lalu lintas lewat relai, jadi resolver host menentukan server mana yang melihat nama-nama itu. Pengaturan DNS privat di ponsel tidak terbawa melewati relai, dan uji resolver di sisi ponsel tidak akan menggambarkan pencarian host.

Periksa setiap lompatan secara terpisah

Tiga pemeriksaan, dalam urutan ini: ponsel mencapai relai, relai mencapai tujuan di bawah kebijakan host, dan aplikasi menyelesaikan serta memakai tujuan itu dengan benar. Berhentilah pada kegagalan pertama alih-alih memuat ulang halaman dan menebak.

adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V

Entri jaringan VPN di dump konektivitas menunjukkan layanan penangkapan aktif; log relai sendiri menunjukkan apakah aliran datang. Ketiadaan di salah satunya membelah masalah dengan bersih: tidak ada penangkapan berarti sisi ponsel, tidak ada aliran berarti sisi host.

Peramban yang berfungsi di host membuktikan jalur peramban host, bukan jalur proses relai. Bandingkan alamat yang dilaporkan masing-masing, dan uji sumber daya privat serta halaman publik, karena terowongan khusus privat dapat merutekan salah satu dan bukan yang lain.

Bongkar dan pilih perilaku kegagalan

Pembatalan adalah bagian dari runbook. Hentikan dan hapus relai, hapus pemasangan klien penangkapan, dan cabut otorisasi debug host dari opsi pengembang ponsel saat tugas selesai.

gnirehtet stop
gnirehtet uninstall
adb kill-server

Putuskan apa yang harus dilakukan ponsel saat relai menghilang. Tanpa pilihan tegas, ponsel bisa kembali ke data seluler dan membocorkan lalu lintas yang Anda coba rutekan, jadi tetapkan perilaku blokir koneksi atau kebijakan VPN dengan sengaja dan uji pembongkarannya sebelum mengandalkannya.

Catat host yang diotorisasi, versi relai, kebijakan terowongan host, dan langkah pembongkaran. Catatan itulah yang membuat penyiapan tethering terbalik berikutnya dapat diulang alih-alih satu sore lagi untuk menemukan ulang.

Artikel terkait