Обрнути тетеринг за Android преко USB-а: команде, провере, враћање
Обрнути тетеринг шаље саобраћај телефона кроз релеј на домаћину. Изградите пут од телефона до домаћина, задржите VPN домаћина у петљи и проверите сваки скок.
Обрнути тетеринг премешта саобраћај телефона на рачунар и изводи га кроз везу тог рачунара. Само USB кабл то не чини: телефону је потребна услуга хватања која преузима његово рутирање, а рачунару релеј који те пакете носи даље. Пут има четири скока: апликација, хватање на телефону, USB релеј и излаз домаћина, и сваки има другог власника. Овај приручник гради тај пут, поставља VPN домаћина на право место и проверава сваки скок пре него што поверите резултату.
Мапирајте скокове пре него што било шта покренете
Сваки скок примењује своју политику, зато резултат који ради на једном крају не говори ништа о другом. Апликација бира одредиште и резолвер, услуга хватања одлучује који саобраћај улази у релеј, релеј прослеђује у сокете домаћина, а рутирање и VPN домаћина одређују адресу коју одредиште на крају види.
| 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 |
Само један клијент услуге VPN може истовремено да држи улогу хватања телефона, па се друга обична VPN апликација не наставља на релеј. Ако VPN припада рачунару, услуга хватања је карика приступа ка том рачунару, а не доказ да удаљени тунел већ штити резултат.
Припремите релеј пре него што дотакнете телефон
Gnirehtet је документовани пример ове архитектуре: клијент услуге VPN без root-а на телефону плус релеј који се преноси преко ADB-а на домаћину, уз подршку за TCP и UDP преко IPv4. Његово складиште такође наводи да се пројекат више не одржава активно, зато га третирајте као референтни дизајн и радни алат за лабораторију, а не као подржан производ за стандардизацију на управљаном парку уређаја.
adb devices
adb shell getprop ro.build.version.release
gnirehtet run
Прво покрените adb devices. Телефон који није прихватио кључ за отклањање грешака домаћина пријављује се као неовлашћен, а релеј се неће повезати док се захтев на уређају не прихвати. gnirehtet run инсталира клијента, покреће релеј и активира хватање; у верзији која раздваја кораке, користите уместо тога документоване подкоманде install, relay и start.
Приступ преко ADB-а је однос контроле уређаја, а не мрежно подешавање. Овластите само рачунар који контролишете и планирајте да то овлашћење опозовете када задатак заврши.
Вратите VPN домаћина на пут
Релеј је обичан процес на домаћину, зато његове даље везе прате табелу рутирања домаћина. Профил пуног тунела их носи; подељени тунел можда не. Ако VPN домаћина користи контроле по апликацији, додајте бинарни фајл релеја у дозвољени скуп, иначе релеј наставља да користи физички интерфејс док прегледач изгледа заштићено.
ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay
Покрените прве две команде пре и после повезивања VPN-а домаћина. Ако се адреса не мења, релеј није на тунелу, шта год рекао прозор клијента. Тунел само за приватне мреже такође оставља јавна одредишта на уобичајеном излазу домаћина, што изгледа као цурење, али је политика коју сте поставили.
DNS се за саобраћај кроз релеј решава на домаћину, зато резолвер домаћина одређује који сервер види имена. Подешавање приватног DNS-а на телефону не преноси се преко релеја, а тест резолвера на страни телефона неће описати упите домаћина.
Проверите сваки скок одвојено
Три провере у овом редоследу: телефон стиже до релеја, релеј стиже до одредишта по политици домаћина, и апликација исправно решава и користи то одредиште. Зауставите се на првом неуспеху уместо да поново учитавате странице и нагађате.
adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V
Запис VPN мреже у испису повезаности показује да је услуга хватања активна; сопствени дневник релеја показује да ли токови пристижу. Недостатак у једном од њих чисто дели проблем: нема хватања значи страну телефона, нема токова значи страну домаћина.
Прегледач који ради на домаћину доказује пут прегледача домаћина, а не пут процеса релеја. Упоредите адресе које сваки од њих пријављује и тестирајте приватни ресурс као и јавну страницу, јер тунел само за приватне мреже може да рутира једно, а не друго.
Разградите и изаберите понашање при отказу
Враћање је део приручника. Зауставите и уклоните релеј, деинсталирајте клијента за хватање и опозовите овлашћење за отклањање грешака домаћина у опцијама за програмере на телефону када задатак заврши.
gnirehtet stop
gnirehtet uninstall
adb kill-server
Одлучите шта телефон треба да ради када релеј нестане. Без јасног избора може се вратити на мобилне податке и просути саобраћај који сте покушавали да рутирате, зато намерно поставите понашање блокирања веза или политику VPN-а и тестирајте разградњу пре него што се на њу ослоните.
Запишите који је домаћин овлашћен, верзију релеја, политику тунела домаћина и кораке разградње. Тај запис чини следеће подешавање обрнутог тетеринга поновљивим уместо још једног поподнева поновног откривања.