Урвуу тетеринг нь утасны урсгалыг компьютер руу шилжүүлж, тухайн компьютерийн холболтоор гадагш гаргадаг. Зөвхөн USB кабель үүнийг хийдэггүй: утсанд түүний маршрутчлалыг хүлээж авах барилтын үйлчилгээ, компьютерт тэдгээр пакетыг цааш зөөх реле хэрэгтэй. Замд дөрвөн үсрэлт байна: аппликейшн, утсан дахь барилт, USB реле, хостын гаралт, мөн тус бүр өөр эзэнтэй. Энэхүү гарын авлага тэр замыг барьж, хостын VPN-г зөв газарт нь тавьж, үр дүнд итгэхээс өмнө үсрэлт бүрийг шалгана.

Ямар нэгэн зүйл ажиллуулахын өмнө үсрэлтүүдийг зураглан тэмдэглэ

Үсрэлт бүр өөрийн бодлогыг хэрэгжүүлдэг тул нэг зах дээр ажилласан үр дүн нөгөө талын талаар юу ч хэлэхгүй. Аппликейшн очих газрыг болон шийдэгчийг сонгож, барилтын үйлчилгээ аль урсгал реле руу орохыг шийдэж, реле нь хостын сокет руу дамжуулж, хостын маршрутчлал болон VPN нь очих газар эцэст нь харах хаягыг тодорхойлно.

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

Утасны барилтын дүрд нэгэн зэрэг зөвхөн нэг 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 бодлогыг санаатайгаар тохируулж, түүнд найдахын өмнө задаргааг туршиж үз.

Зөвшөөрөл олгосон хост, релений хувилбар, хостын туннелийн бодлого, задаргааны алхмуудыг тэмдэглэ. Тэр бичлэг л дараагийн урвуу тетерингийн тохиргоог дахин нээх өдрийн дараа биш, давтагдахуйц болгодог.

Холбоотой нийтлэлүүд