Hanyoyi biyu ne za su iya saka IP interface a gaban manhajar Android, kuma dukansu suna ƙarewa a irin wannan file descriptor tare da masu shi daban-daban ƙwarai. Ɗaya yana wucewa ta VpnService da builder ɗinsa, ɗayan kuma ta root shell da /dev/net/tun. Kowane karatu a kan wannan descriptor fakitin fita ne, kuma kowane rubutu fakitin shiga ne. Abin da ya raba hanyoyin shi ne wanene ke riƙe da manufar, wanene zai tsira daga haɓakar OS, da nawa daga teburin rarrabawa za ka iya taɓawa.

Ɗauki hanyar dandali sai dai idan za ka iya ambaton takamaiman abin da ta ƙi yi. Wannan ƙin yawanci TAP ne, ko kamawa a wajen jerin manhajojinka, ko ka'idar rarrabawa da tsarin ba ya taɓa bayyanawa.

A hanyar dandali kana bayyana niyya maimakon umarni. Kana bayar da aƙalla adireshi ɗaya, hanyoyin da kake so, sabar DNS da jerin manhajoji na zaɓi, sannan sabis ɗin tsarin Android yana yin saitin da ya dace a ƙarƙashin nasa asalin. Ba za ka taɓa sanin sunan interface ɗin tukuna ba, kuma ba za ka taɓa fitar da ioctl ɗin da ke ƙirƙirar sa ba, kuma wannan ne batun.

Hanyoyi biyu na samun IP interface

Hanyar root ita ce tsohuwar girke-girke. Kana buɗe /dev/net/tun, kana kira TUNSETIFF tare da IFF_TUN, kana ɗaga interface ɗin da ip link, sannan kana ƙara adireshi da hanyoyi da hannu. Kowane mataki naka ne ka yi daidai, har da waɗanda tsarin zai yi shiru. Rasa hanya ɗaya tana ba mai amfani irin wannan rahoton da sabar da ta mutu.

Bincike ya bambanta kamar yadda saiti ya bambanta. A hanyar root ko dai interface ɗin yana nan ko kuma ioctl ɗinka ya mayar da kuskure da za ka iya karantawa kai tsaye. A hanyar dandali interface ɗin yana nan ne kawai bayan establish() ya yi nasara, don haka gazawa tana zuwa a matsayin togiya ko null descriptor maimakon kumburin na'ura da za ka iya ɗanɗanawa.

Abin da establish() yake mayarwa da gaske

Builder.establish() yana da sakamako uku kuma suna buƙatar amsoshi uku daban-daban. Descriptor yana nufin an saita interface ɗin kuma naka ne don amfani, null yana nufin buƙatar ba ta wuce ba, kuma togiyar da aka jefa tana nufin sabis ɗin tsarin ya ƙi ta. Haɗa null da nasara cikin boolean ɗaya ita ce hanya mafi yawa da manhaja ke bayar da rahoton rami mai aiki wanda ba ya taɓa ɗaukar fakiti. Tushen Builder yana faɗin buƙatar adireshi, kuma ya cancanci karantawa kafin ka zargi sabar.

Descriptor ɗin ne ke ƙayyade kwatance, ba ka'idarka ba. Karatu yana ba ka fakitin fita da aka riga aka zaɓa don VPN, kuma rubutu yana shigar da fakitin shiga baya cikin interface ɗin. Jigilar ka da kanta ce ke ɓoye, tabbatarwa da firam ɗin waɗannan fakitin, domin dandalin yana tsayawa a iyakar fakiti.

Binder tsalle ɗaya ne, JNI wata gada ce

Buƙatar builder tana shiga tsarin ta hanyar Binder, kuma wani wuri a ƙasa dandalin yana kiran lambar asali don saita na'urar. Waɗannan hanyoyi biyu ne daban-daban da aka tara a cikin kira ɗaya. Binder sadarwa ce tsakanin matakai tsakanin manhajarka da sabis ɗin tsarin, yayin da JNI gadar daga Java zuwa asali ce a cikin mataki. Karanta bishiyar AOSP ta Android 9 yana sa tarin ya zama na zahiri, kuma ya kamata a tuna cewa sunayen aji na ciki da hanyoyin fayil suna motsawa tsakanin fitowa.

Abin da ba ya motsawa shi ne yarjejeniyar da za ka dogara da ita: builder, descriptor ɗin da yake mayarwa, da zagayowar rayuwar sabis ɗin da ke kewaye da shi. Babu manhaja da za ta kira ma'amalar sabis na ciki ko ta sake ƙirƙirar kumburin na'ura don samun interface. Idan lambarka ta dogara da sunan aji na AOSP, zai karye a fitowar da ba ka gwada ba.

TUN yana ɗaukar IP, TAP yana ɗaukar Ethernet

TUN interface ne na IP. TAP interface ne na Ethernet, kuma wannan bambanci ne ke yanke shawarar ko gada zai yiwu. Na'urar TUN ba ta da adireshin MAC kuma ba ta da kan Ethernet da za a tura, don haka abokin ciniki na TUN ba zai iya shiga gadar layer-2 ba, ko yaya aka rubuta hanyoyin.

VpnService yana ba ka nau'in IP, wanda VPN na matakin manhaja ke buƙata kuma zai iya tallafawa ba tare da danyen tarin Ethernet ba. Idan tsarinka yana buƙatar gada, hanyar dandali ba za ta kai ka can ba, kuma hanyar root za ta kai ne kawai idan kernel da izinin na'urar sun haɗa kai.

Inda hanyar root har yanzu take cin nasara

Ayyuka uku suna tura mutane daga hanyar dandali. Gadan layer-2 yana buƙatar TAP. Kama zirga-zirgar manhajoji a wajen iyakar VPN ɗinka yana buƙatar ganuwa da tsarin ba ya bayarwa. Rarraba manufa da builder ba ya taɓa bayyanawa, kamar tebur daban don manufa ɗaya, yana buƙatar dokoki da kanka za ka girka.

Kuɗaɗen suna zuwa daga baya: bootloader da aka buɗe ko hoton da aka yi root, manufar SELinux da ke motsawa ƙarƙashinka, da na'urar da ta daina ɗabi'a daidai bayan OTA. Har ila yau ba za a iya aika girke-girken root ta hanyar rarraba manhajoji na yau da kullum ba, don haka yawancin ƙungiyoyi suna riƙe da shi a matsayin hanyar bincike ta ciki maimakon kayan aiki.

Zaɓi tsakanin su

Fara daga interface ɗin da kake buƙata, ba daga lambar da kake da ita ba. Idan amsar ita ce na'urar TUN mai hanyoyi iyakance ga manhaja, hanyar dandali ta fi guntu kuma tana tsira daga haɓakawa. Idan amsar ta ƙunshi firam ɗin Ethernet, kama wasu manhajoji, ko dokokin rarrabawa da builder ya ƙi, kana cikin yankin root kuma ya kamata ka yi kasafin kuɗi don haka a matsayin kuɗin aiki.

Bincike da ke warware yawancin muhawara: fara gina hanyar dandali, rubuta sakamakon establish() dabam da yanayin zaman nesa, kuma tabbatar da fakiti ɗaya a kowace hanya. Bayan haka ne kawai za ka yanke shawarar ko ƙarfin da ya ɓace ya cancanci barin hanyar da ake tallafawa.

Labarai masu alaƙa