USB દ્વારા Android માટે ઉલટું ટેથરિંગ: આદેશો, તપાસ, પાછું ફેરવવું
ઉલટું ટેથરિંગ ફોનનો ટ્રાફિક હોસ્ટ રિલે દ્વારા મોકલે છે. ફોનથી હોસ્ટ સુધીનો માર્ગ બનાવો, હોસ્ટ 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 આ આર્કિટેક્ચરનું દસ્તાવેજીકૃત ઉદાહરણ છે: ફોન પર root વગરનો VPN સેવા ક્લાયન્ટ અને હોસ્ટ પર ADB દ્વારા વહન થતો રિલે, જે IPv4 પર TCP અને UDP ને સમર્થન આપે છે. તેનો રિપોઝિટરી એ પણ જણાવે છે કે પ્રોજેક્ટ હવે સક્રિય રીતે સંભાળવામાં આવતો નથી, તેથી તેને સંદર્ભ ડિઝાઇન અને પ્રયોગશાળા માટે કામ કરતા સાધન તરીકે લો, સંચાલિત ફ્લીટ પર ધોરણ બનાવવા યોગ્ય સમર્થિત ઉત્પાદન તરીકે નહીં.
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 નીતિ જાણી જોઈને સેટ કરો અને તેના પર ભરોસો કરો તે પહેલાં વિસર્જન ચકાસો.
જે હોસ્ટ અધિકૃત થયું, રિલે આવૃત્તિ, હોસ્ટ ટનલ નીતિ અને વિસર્જનના પગલાં નોંધો. તે નોંધ જ આગલી ઉલટી-ટેથરિંગ ગોઠવણને ફરી શોધવાના બીજા બપોરને બદલે પુનરાવર્તનીય બનાવે છે.