Lapho i-emulator ingakwazi ukufinyelela i-build server evulwa kahle isiphequluli sase-host, umbuzo owusizo awuwona wokuthi i-VPN iyasebenza yini. Umbuzo uwukuthi iyiphi kulezi zindlela ezimbili i-guest engayitholanga. Idivayisi ebonakalayo isebenza nge-stack yayo yenethiwekhi ngemuva kwe-NAT ye-emulator, futhi uhlu lwayo lwama-resolver luyikhophi ethathwe ngesikhathi sokuboota, ngakho itunnel efika kamuva ishintsha indlela ye-host kodwa ayishintshi lokho okubuza i-guest. Ukuqonda lezi zingqimba ezimbili kuchaza cishe zonke izinhlobo zale nkinga.

I-guest iyistack ehlukile ngemuva kwe-NAT engaguquki

Inethiwekhi yemodi yomsebenzisi ye-QEMU ibeka i-guest ku-10.0.2.15 negetiweyidi ku-10.0.2.2, kanye nensizakalo ye-DNS ku-10.0.2.3 kuya ku-10.0.2.6. Ithrafikhi ephumayo ye-guest ayidluliswanga yi-kernel yase-host; iguqulwa ibe amasokhethi ohlangothini lwe-host, elilodwa kokuxhumana ngakunye kwe-guest, futhi lawo masokhethi aphuma endaweni yamakheli ye-host. Yingakho ukuxhumana kwe-guest kuzuza isinqumo somzila we-host ngesikhathi kwakhiwa, futhi yingakho i-guest ingenayo ingxenye kuthebula lomzila ebiza itunnel yakho.

Indlela efanayo inikeza i-guest indlela yokuphuma ewusizo. I-10.0.2.2 iyisiteki segama lesikhombisi se-loopback sase-host, ngakho insizakalo elalela ku-127.0.0.1 kulephutophu iyafinyeleleka isuka ku-guest kulelo kheli. Noma yini iklayenti eyiveza kuphela ku-loopback iyafinyeleleka ngale ndlela, futhi lesi yisisekelo sesetho se-proxy esichazwe ngezansi.

Into i-guest engakwazi ukuyenza ukubuka inethiwekhi yase-host njengokungathi iyi-namespace yayo. Akukho bridge, akukho thebula lomzila elabiwe futhi akukho resolver ezuziwe; kukhona kuphela insizakalo ye-NAT eyamukela amaphakethe ayo kanye nesithombe esathathwa isiqalisi ngesikhathi idivayisi ebonakalayo iqala.

I-DNS iyisithombe, akuwona umbono ophilayo

Ekuqaleni i-emulator ifunda uhlu lwama-resolver ase-host futhi inikeza i-guest amaseva afika kwamane, avezwa kumakheli 10.0.2.3 kuya ku-10.0.2.6. Uma itunnel yayiphansi ngaleso sikhathi, isithombe siqukethe i-resolver yomphakathi eyayisetshenziswa ilephutophu, futhi i-guest iqhubeka nokuyibuza impilo yayo yonke. Amagama omphakathi ayaxazululwa, amagama angaphakathi ayehluleka, futhi zonke izimpawu zikhomba ku-VPN kanti inani langempela elidala uhlu lwama-resolver olwathathwa ngaphambi kwemizuzu embalwa ukuthi itunnel inyuke.

Ngakho ukulungisa ukulandelana akuyona inganekwane. Xhuma itunnel kuqala, bese uqalisa kabusha i-emulator, futhi ukhetha ukuqalisa okubandayo kunokubuyisela isithombe, ngoba isithombe sokuqalisa okusheshayo singabuya nesimo sama-resolver nomzila esigcinwe ngaphambili. Uma udinga ukubona lokho i-guest ekusebenzisayo manje, buza idivayisi, hhayi i-host:

adb shell dumpsys connectivity | grep -i -A2 dns
adb shell ping -c 1 build.internal.example

I-emulator futhi yamukela i-resolver ecacile lapho iqaliswa, okuwusizo uma wazi kahle ukuthi iyiphi iseva okufanele i-guest iyisebenzise futhi kuyingozi uma leyo seva ingeyomphakathi:

emulator -avd Pixel_API_34 -dns-server 203.0.113.53

I-resolver yomphakathi ayinayo ikhophi yendawo yangaphakathi, ngakho ukubophela eyodwa kuguqula inkinga yokulandelana ibe ukwehluleka okungapheli. Uma iphrofayili icindezela i-DNS yangasese, vumela itunnel ukuthi iyihlinzeke futhi uqalise kabusha i-guest ngendlela ebandayo esikhundleni sokubhala ikheli ngokugcwele.

Umzila ulandela i-host ngesikhathi sokuxhumana

Njengoba ukuxhumana kwe-guest kuba amasokhethi e-host, isinqumo somzila sithathwa lapho isokhethi sakhiwa. Itunnel enyuke ngaphambi kwesicelo isho ukuthi isicelo siphuma ngetunnel, ngokulandela imizila yephrofayili. Iphrofayili ye-split-tunnel ethwala kuphela ama-prefix akhethiwe izoshiya i-subnet yakho yangasese ngaphandle ngokukhululeka, ngakho ukufinyeleleka kwe-host kuwumbono nge-guest, akuwona umphumela. Ukuxhumana okukhona kwe-guest kugcina indlela eyakhiwa ngayo, yingakho iklayenti elixhuma kabusha lingayilungisi njalo into yokulanda ebambekile ku-emulator.

Ukuqinisekisa kukho kusikhombisi sase-host, hhayi ezibalweni ze-guest:

sudo tcpdump -ni tun0 'host 203.0.113.10'

Uma isicelo se-guest sibonakala kusikhombisi setunnel, umzila uyasebenza futhi inkinga ingaphezulu kwawo. Uma sibonakala kusikhombisi somzimba, iphrofayili ayisihlanganisi leso sikhathi se-prefix, futhi akukho ukuhlela kabusha ohlangothini lwe-guest okungakushintsha.

Uma iklayenti linikeza kuphela i-proxy ye-loopback

Amanye amaklayenti ezentengiselwano awakhi i-system tunnel nhlobo. Aveza isilaleli se-HTTP noma se-SOCKS ku-127.0.0.1 futhi alindele ukuthi izinhlelo zisebenzise. I-guest ayikwazi ukubona leyo sokhethi ngqo, kodwa i-emulator ingatshelwa ukuthi iyisebenzise, kungaba ngezilawuli ezandisiwe (Settings, bese Proxy, imodi yesandla, i-host 127.0.0.1 kanye ne-port ephrintwa iklayenti) noma lapho iqaliswa:

emulator -avd Pixel_API_34 -http-proxy http://127.0.0.1:8080

Kopisha i-port kusuka kuwindi leklayenti; i-port eqanjiwe iyehluleka buthule futhi ibukeka njenge-tunnel ephukile. Khumbula ukuthi lokhu kuhlanganisa ini: isethingi ye-proxy ye-HTTP iyahlonishwa izinhlelo ezazi i-proxy, futhi amasokhethi aluhlaza ayiyishiyele ngokuphelele. Uma umsebenzi kuyi-native binary evula ukuxhumana kwayo, indlela ye-proxy ayilingani ne-tunnel futhi ukuqhathanisa kufanele kwenziwe ngokucacile.

Fakazela umphumela ngaphakathi kwe-guest

Hlukanisa ukuxazulula nomzila ngezivivinyo ezimbili esikhatheni esisodwa. Igama elehlulekayo kanti ikheli lezinombolo liyaphendula inkinga yesithombe se-DNS, futhi isixazululo ukulandelana noma i-resolver ecacile. Uma kokubili kwehluleka lokho kukhombisa umzila noma inqubomgomo, futhi ukuhlola okulandelayo ukuthi uhlelo lusebenza yini ngaphakathi kwe-work profile enemikhawulo yayo yenethiwekhi.

Ekugcineni, yazi ukuthi uhlola kuphi i-guest. Izithombe ze-emulator ezindala kakhulu zakhishwa ngaphandle kokusekelwa kwe-tun okudingwa iklayenti le-VPN ohlangothini lwe-guest, ngakho akukho phrofayili eyayingasebenza lapho; izithombe zamanje zinakho. Iklayenti elehlulekayo esithombeni samanje inkinga yeklayenti noma yephrofayili, futhi ukwakha kabusha itunnel ye-host ngeke kushintshe umphumela.

Izihloko ezihlobene