Izimpawu ezimbili zivela kumjikelezo ofanayo we-VpnService futhi zombili zibekwa icala entweni eyodwa: umfundi ongabuyi neze, nokubhala okwehlulwa yi-ENOBUFS. Lezi akuzona izinhlobo zegciwane elilodwa. Ukufunda okumisiwe ukungavumelani mayelana nokulawulwa kokugeleza ne-peer; ukubhala okwehlulekile iphakethe okungeke kuyamukele isikhombimsebenzisi. Uma uzithatha njengenkinga eyodwa, uzochitha usuku ulungisa amabhafa angakaze abe khona. Ukwehlukanisa ngezansi yindlela enginquma ngayo ukuthi yiluphi uhhafu womjikelezo engizolukala kuqala.

Umjikelezo owodwa, izindawo ezimbili zokwehluleka ezizimele

Insizakalo yakho ifunda iphakethe le-IP kusidluli-mbhalo sefayela le-TUN, ilihlola, bese ibhala impendulo ibuyela kuso leso sidluli-mbhalo. Konke okwephukayo kuleyo ndlela kuvela komunye walezi zingcingo ezimbili, yingakho zombili zibikwa njengomhubhe ophukile. Izingcingo zinezinqubo ezihlukene. Ukufunda kulinda ukuthi i-kernel ikunikeze iphakethe, kanti ukubhala kunikeza i-kernel iphakethe enelungelo lokulala.

Ukufunda ingxenye elula okufanele kucatshangwe ngayo. Ukufunda okungabuyisi lutho kungase kulinde ithrafikhi engafiki neze noma kulinde ngoba i-peer iyekile ukuthumela.

Ukufunda okumisiwe ukungavumelani kokulawulwa kokugeleza

Ukufunda idivayisi ye-TUN kuyavimba kuze kube khona iphakethe. Lokho kungukuziphatha okwakhelwe, futhi yikho ukuthi intambo emile ngaphakathi kwe-read ibonakala ijwayelekile kuxhumano olungenzi lutho. Kuba ukumiswa lapho isitaki sakho se-TCP siqhubeka samukela idatha kusuka kuhlelo lwasendaweni kodwa singazange simemezele iwindi elanele ukuze i-peer ekude ithumele okwengeziwe. I-peer igcwalisa iwindi owelimemezele, ilinde i-ACK nokubuyekezwa kwewindi, bese iyama. Lapho-ke umfundi wakho akanalutho angalubuyisela, futhi uhlelo lubona uxhumano oluvulekile kodwa oluthule.

Izimbangela ezijwayelekile isitaki esibhala kusokhethi ngaphandle kokulandela iwindi elimenyezelwe, nesinye esikhohlwa ukuthumela ukubuyekezwa kwewindi ngemva kokukhipha ibhafa yaso. Ngaphandle zibukeka zifana: amabhayithi ayaphuma, akukho okubuyayo, akukho phutha eliphakanyiswayo. Ukuvimba intambo yokufunda ekuhlaziyeni, ekuxazululeni i-DNS noma ku-I/O yediski kukhiqiza isimo esifanayo sezimpawu ngesizathu esingahlobene, ngakho qinisekisa ukuthi intambo ingaphakathi kwe-read ngempela ngaphambi kokusola ukulawulwa kokugeleza.

Hlola umugqa wokuthumela we-peer kanye newindi eyaligcina ukulibona. Uma i-peer ibamba idatha ngoba iwindi lakho linguqanda, ukulungisa kusendleleni yakho ye-ACK, hhayi ekufundeni kwe-TUN.

I-ENOBUFS inkinga yobukhulu, hhayi ukusweleka kwebhafa

Ukubhala okubuyisela i-ENOBUFS kusikhombimsebenzisi se-TUN ngokuvamile kwala ubude bephakethe. Isikhombimsebenzisi sine-MTU, iphakethe elikhulu kunesikhathi angeke lifakwe emugqeni, futhi ukuphinda iphakethe elifanayo kwehluleka ngendlela efanayo njalo. Lokho kuzimisela kuwuphawu. Ukusweleka kwebhafa kwangempela kuyanyamalala lapho ingcindezi yehla, kanti ukwenqatshwa kobukhulu akunandaba ukuthi ulinda isikhathi esingakanani.

I-TCP inendlela yale nto ngqo, futhi yiso leso sinyathelo abantu abasidlulayo: ukucindezelwa kwe-MSS. Uma wenza izingxenye endaweni yomsebenzisi, uwena okhetha usayizi womthwalo, futhi ukuwuthatha ku-MTU yesikhombimsebenzisi sasendaweni esikhundleni se-MTU yomhubhe kukhipha izingxenye umhubhe ongakwazi ukuzithwala. Cindezela kwencane kwezimbili. Ukucindezelwa kuhlanganisa i-TCP kuphela, ngakho idathagramu ye-UDP enkulu kakhulu kufanele ihlukaniswe noma ilahlwe yikhodi yakho.

Bhala ubude bayo yonke iphakethe oyibhalayo ngesikhathi ukhipha amaphutha. Ubude obuhlulekayo yimpendulo, futhi ngeke bushintshe phakathi kwemizamo.

Izilinganiso ezintathu ezihlukanisa amacala

Awudingi isikhiphi samaphutha kukho kokubili ukwehluleka. Ukubona okuthathu kwanele ukukuqondisa esigabeni esifanele, futhi kuthatha isikhathi esingaphansi kokwakha kabusha.

What you seeWhere to look
Reader parked, peer send queue empty, last advertised window zeroWindow updates in your ACK path
Write fails on one length and succeeds on a smaller oneMSS clamp and tunnel MTU
Both directions look fine, app still sees no dataProtected socket and routing loop

Uma umugqa wesithathu uhambisana, umjikelezo ngokwawo ulungile futhi inkinga isendaweni umhubhe ongakwazi ukuyibona: isokhethi yokuthutha engavikelwe ethwala ithrafikhi yakho ye-VPN ibuyela emhubheni, okuvame ukuvela njengoxhumano oluphumelelayo bese lungalethi lutho.

Lungisa amapayipi imizila yomibili encike kuwo

Asikho isimpawu esifanele ukulandelelwa kuze kwakhiwe kahle isikhombimsebenzisi. Izingcingo ze-builder ezibalulekile ikheli, umzila, i-MTU nemvume, ngalowo myalo:

Builder()
  .addAddress(10.8.0.2, 32)
  .addRoute(0.0.0.0, 0)
  .setMtu(1400)
  .establish()

Setha i-MTU enanini langempela lomhubhe esikhundleni sokuyishiya kunalelo elisetshenziswe isibonelo. Konke okubhalayo kamuva kukhawulwa yilelo nani, futhi ukungafani phakathi kwe-MTU oyisethayo ne-MSS oyicindezela kuyo yindlela evame kakhulu yokubuyisela ukwehluleka kokubhala ngemva kokulungisa. Bese uvikela isokhethi ethwala ithrafikhi iya kuseva ye-VPN ngokwayo. Ngaphandle kwe-protect leyo maphakethe iphinda iqondiswe emhubheni wakho futhi uxhumano alukapheli, okubonakala njengokufunda okumisiwe kodwa kungumjikelezo wokuhlela.

Imvume ayikwazi ukweqelwa. Insizakalo eqalwe ngaphandle kokuthi i-prepare ibuyisele i-null ayitholi sikhombimsebenzisi, futhi i-establish ibuyisela i-null esikhundleni sokuphonsa, ngakho hlola isidluli-mbhalo ngaphambi kokuqala umjikelezo wakho. Incwadi ye-VpnService iyindawo yokuqinisekisa inkontileka ye-builder esikhundleni sokukopisha isibonelo.

Qinisekisa uhlangothi olulodwa ngesikhathi

Thumela umsindo we-UDP ngomhubhe futhi ubheke ubude bamaphakethe ngaphambi kokuthinta i-TCP. Bese uvula ukuxhawulana futhi uqinisekise ukuthi izingxenye zihlala ngaphansi kwe-MSS oyibale. Bala amaphakethe hhayi ukuxhumana, ukuze ukumiswa kubonakale njengegebe kusibali esikhundleni sesokhethi elengayo. Uma ukufunda kuma ngemva kwesikhukhula sokubhala, iwindi liyisoliso; uma ukubhala kwehluleka ngokushesha, ubude.

Bese uqalisa kabusha idivayisi futhi uphinde kanye, ngoba i-VpnService esebenza kuphela kuze kube ushintsho lokuqala lwenethiwekhi inkinga yokuhlela, hhayi yokulawulwa kokugeleza.

Izihloko ezihlobene