USB üzerinden Android için ters tethering: komutlar, kontroller, geri alma
Ters tethering, telefonun trafiğini ana makinedeki bir aktarıcı üzerinden gönderir. Telefondan ana makineye giden yolu kurun, ana makinenin VPN’ini döngüde tutun ve her atlamayı doğrulayın.
Ters tethering, bir telefonun trafiğini bilgisayara taşır ve o bilgisayarın bağlantısından dışarı çıkarır. Tek başına USB kablosu bunu yapmaz: telefonun yönlendirmesini devralan bir yakalama servisine, bilgisayarın ise bu paketleri ileri taşıyan bir aktarıcıya ihtiyacı vardır. Yolda dört atlama vardır: uygulama, telefonda yakalama, USB aktarıcı ve ana makinenin çıkışı, ve her birinin sahibi farklıdır. Bu kılavuz o yolu kurar, ana makinenin VPN’ini olması gereken yere koyar ve sonuca güvenmeden önce her atlamayı denetler.
Bir şey çalıştırmadan önce atlamaları haritalandırın
Her atlama kendi politikasını uygular, bu yüzden bir uçta çalışan sonuç diğer uç hakkında hiçbir şey söylemez. Uygulama bir hedef ve bir çözümleyici seçer, yakalama servisi hangi trafiğin aktarıcıya gireceğine karar verir, aktarıcı ana makinenin soketlerine iletir, ana makinenin yönlendirmesi ve VPN’i ise hedefin sonunda gördüğü adresi belirler.
| Hop | Owner | What it decides |
|---|---|---|
| Application request | The app | Destination, resolver, address family |
| Capture service | Phone VpnService app | Which traffic enters the relay at all |
| ADB relay | Host process | Forwarding phone flows to host sockets |
| Host egress | Host routing and VPN | Exit address and host policy |
Telefonun yakalama rolünü aynı anda yalnızca bir VPN servisi istemcisi tutabilir, bu yüzden ikinci sıradan bir VPN uygulaması aktarıcının üzerine katmanlanmaz. VPN bilgisayara aitse, yakalama servisi o bilgisayara giden erişim halkasıdır, uzak bir tünelin sonucu zaten koruduğunun kanıtı değildir.
Telefona dokunmadan önce aktarıcıyı hazırlayın
Gnirehtet bu mimarinin belgelenmiş örneğidir: telefonda root gerektirmeyen bir VPN servisi istemcisi artı ana makinede ADB ile taşınan bir aktarıcı, IPv4 üzerinden TCP ve UDP desteğiyle. Deposu ayrıca projenin artık etkin olarak sürdürülmediğini belirtir, bu yüzden onu referans tasarım ve laboratuvar için çalışan bir araç olarak görün, yönetilen bir filo genelinde standartlaştırılacak destekli bir ürün olarak değil.
adb devices
adb shell getprop ro.build.version.release
gnirehtet run
Önce adb devices çalıştırın. Ana makinenin hata ayıklama anahtarını kabul etmemiş telefon yetkisiz olarak bildirilir ve cihazdaki istem kabul edilene kadar aktarıcı bağlanmaz. gnirehtet run istemciyi kurar, aktarıcıyı başlatır ve yakalamayı etkinleştirir; adımları ayıran bir sürümde bunun yerine belgelenmiş install, relay ve start alt komutlarını kullanın.
ADB erişimi bir cihaz denetimi ilişkisidir, ağ ayarı değildir. Yalnızca denetlediğiniz bir bilgisayarı yetkilendirin ve görev bitince bu yetkiyi geri çekmeyi planlayın.
Ana makinenin VPN’ini yola geri koyun
Aktarıcı ana makinede sıradan bir süreçtir, bu yüzden sonraki bağlantıları ana makinenin yönlendirme tablosunu izler. Tam tünel profili bunları taşır; bölünmüş tünel taşımayabilir. Ana makinenin VPN’i uygulama başına denetim kullanıyorsa aktarıcı ikili dosyasını izin verilen kümeye ekleyin, aksi halde tarayıcı korunuyor görünürken aktarıcı fiziksel arabirimi kullanmaya devam eder.
ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay
Ana makinenin VPN’ini bağlamadan önce ve sonra ilk iki komutu çalıştırın. Adres değişmiyorsa, istemci penceresi ne derse desin aktarıcı tünelde değildir. Yalnızca özel ağ tüneli, genel hedefleri ana makinenin olağan çıkışında bırakır; bu bir sızıntı gibi görünse de yapılandırdığınız politikadır.
Aktarıcıdan geçen trafik için DNS ana makinede çözülür, bu yüzden adları hangi sunucunun gördüğüne ana makinenin çözümleyicisi karar verir. Telefondaki özel DNS ayarı aktarıcıdan geçmez ve telefon tarafındaki çözümleyici testi ana makinenin sorgularını tanımlamaz.
Her atlamayı ayrı ayrı doğrulayın
Şu sırayla üç denetim: telefon aktarıcıya ulaşır, aktarıcı ana makinenin politikası altında hedefe ulaşır ve uygulama hedefi doğru çözer ve kullanır. Sayfaları yeniden yükleyip tahmin etmek yerine ilk hatada durun.
adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V
Bağlantı dökümünde bir VPN ağı girdisi yakalama servisinin etkin olduğunu gösterir; aktarıcının kendi günlüğü akışların gelip gelmediğini gösterir. Bunlardan birinde eksiklik sorunu temiz biçimde böler: yakalama yoksa telefon tarafı, akış yoksa ana makine tarafı.
Ana makinede çalışan tarayıcı ana makine tarayıcısının yolunu kanıtlar, aktarıcı sürecinin yolunu değil. Her birinin bildirdiği adresleri karşılaştırın ve hem özel bir kaynağı hem de genel bir sayfayı test edin, çünkü yalnızca özel ağ tüneli birini yönlendirip diğerini yönlendirmeyebilir.
Sökün ve hata davranışını seçin
Geri alma kılavuzun parçasıdır. Aktarıcıyı durdurup kaldırın, yakalama istemcisini kaldırın ve görev bittiğinde telefonun geliştirici seçeneklerinden ana makinenin hata ayıklama yetkisini geri çekin.
gnirehtet stop
gnirehtet uninstall
adb kill-server
Aktarıcı kaybolduğunda telefonun ne yapması gerektiğine karar verin. Açık bir seçim olmadan mobil veriye geri düşebilir ve yönlendirmeye çalıştığınız trafiği sızdırabilir, bu yüzden bağlantı engelleme davranışını veya VPN politikasını bilinçli olarak ayarlayın ve ona güvenmeden önce sökmeyi test edin.
Yetkilendirilen ana makineyi, aktarıcı sürümünü, ana makinenin tünel politikasını ve sökme adımlarını kaydedin. O kayıt, bir sonraki ters tethering kurulumunu yeniden keşifle geçen bir öğleden sonra yerine tekrarlanabilir kılar.