Penerusan port hotspot Android: tiga titik masuk
Ponsel, jalur operator, dan jalan keluar VPN menunjukkan batas yang berbeda. Ketahui mesin mana yang memiliki socket yang mendengarkan sebelum membuka port.
Anda menyalakan hotspot, menghubungkan VPN, membuka port di aplikasi, dan perangkat lain tetap tidak bisa terhubung. Bagian yang hilang hampir tidak pernah port itu sendiri, melainkan pertanyaan mesin mana yang memiliki socket yang mendengarkan dan alamat mana yang harus dicapai perangkat lain. Saya bergerak dari ponsel ke luar, karena layar di depan Anda menunjukkan titik masuk mana dari tiga yang benar-benar Anda uji.
Mulai dari tempat layanan benar-benar berjalan
Buka aplikasi yang seharusnya menerima koneksi dan baca halaman statusnya. Jika dikatakan aplikasi itu mendengarkan, catat alamat yang diikatnya, karena satu detail itu menentukan sebagian besar kasus di bawah. Aplikasi yang terikat ke 127.0.0.1 hanya bisa dicapai dari ponsel, dan itu tidak diubah oleh klien hotspot, pemetaan operator, maupun jalan keluar VPN.
Lalu pastikan perangkat mana yang menjalankan layanan. Jika ponsel, socket milik aplikasi itu; jika laptop di belakang hotspot, pendengar dan firewall-nya milik laptop dan ponsel hanya meneruskan paket. Itu dua rancangan berbeda, dan mencampurnya adalah alasan port yang dibuka di satu tempat tidak melakukan apa pun di tempat lain.
Pada build yang bisa di-debug, adb shell mendaftar socket lewat /proc/net/tcp, tetapi bagi kebanyakan orang status aplikasi itu sendiri adalah sumber yang jujur.
Titik masuk pertama: perangkat lain di hotspot
Ini kasus lokal dan paling mudah. Perangkat lain mencapai ponsel pada alamat yang dilihatnya sebagai gateway, pada port tempat aplikasi mendengarkan, dan tidak ada yang di luar hotspot terlibat. Pemetaan operator tidak diperlukan, karena lalu lintas tidak pernah meninggalkan segmen lokal.
Dua hal merusaknya: aplikasi terikat ke loopback, atau kebijakan klien di ponsel tidak mengizinkan koneksi lokal. Uji dengan protokol aplikasi itu sendiri, bukan TCP telanjang, karena pendengar yang menerima lalu menolak terlihat dari jauh seperti port tertutup.
Jika layanan berjalan pada laptop yang tersambung, alamat hotspot ponsel sama sekali bukan tujuan; Anda perlu alamat laptop pada antarmuka hotspot dan pendengar di sana.
Titik masuk kedua: jalur operator
Mencapai ponsel dari jaringan seluler adalah masalah lain, dan untuk IPv4 biasanya tidak berhasil. Operator menempatkan perangkat di belakang terjemahan bersama, dan karena itulah RFC 6598 menyediakan rentang alamat bersama untuk susunan semacam itu. Koneksi masuk yang tidak diminta tidak punya pemetaan untuk dilewati, dan tidak ada konfigurasi lokal yang membuatnya, karena penerjemah itu bukan perangkat Anda.
Akses root juga tidak mengubahnya; itu memberi kendali atas tumpukan ponsel, bukan atas penerjemah operator. Jika operator menawarkan prefiks IPv6 publik, jalur masuk mungkin ada, tetapi pendengar dan firewall ponsel tetap perlu izin yang disengaja.
Titik masuk ketiga: jalan keluar VPN
Alamat yang dilaporkan situs web saat terowongan aktif adalah alamat keluar untuk lalu lintas keluar yang tercakup. Itu bukan alamat yang menerima koneksi masuk atas nama Anda. Memakainya ke dalam menuntut fitur yang benar-benar disediakan penyedia, seperti port yang diteruskan, ditambah jalur yang bisa dipakai dari keluar ke klien.
Aturan izin lokal tidak dapat membuat pemetaan itu. Yang dilakukannya adalah mengubah jalur yang diambil balasan aplikasi, dan itu penting ketika aplikasi dikecualikan dari terowongan: permintaan dan balasan bisa berakhir di konteks jaringan berbeda dan koneksi gagal seperti masalah firewall.
Uji satu jalur dari ujung ke ujung, lalu sebut pemiliknya
Tuliskan tupel sebelum menguji: sumber yang dimaksud, alamat tujuan, transportasi, port, dan mesin yang memiliki socket yang mendengarkan. Jika ada unsur yang hanya dugaan, pengujian tidak akan memberi tahu apa pun yang berguna.
Lalu uji satu jalur yang diizinkan itu dengan autentikasi aplikasi tetap utuh. Jangan mempublikasikan pendengar yang lebar atau mematikan kendali yang tidak terkait hanya agar pemeriksaan alamat yang ambigu menjawab, karena kedua perubahan bertahan setelah pengujian.
Subsistem tethering Android meneruskan lalu lintas ke bawah pada jalurnya sendiri, terpisah dari penangkapan VPN biasa, jadi peramban yang berfungsi di laptop tersambung tidak mengatakan apa pun tentang akses masuk ke layanan di ponsel. Sebelum mengatakan itu berhasil:
- Pendengar berada di alamat yang bisa dicapai pihak lain, bukan di loopback.
- Pihak lain memakai alamat titik masuk itu, bukan alamat keluar dari halaman status.
- Pemetaan apa pun di sisi operator atau penyedia adalah fitur yang didukung, bukan aturan yang Anda tambahkan secara lokal.
- Permintaan dan balasan melewati konteks jaringan yang sama, dan autentikasi masih lolos.