Zuia wateja wa VPN kufikiana kwenye handaki
Kufikia huduma ni njia, kufikia mteja mwingine ni sera. Pata sehemu ya upelekaji inayoamua trafiki kati ya wenza, kisha thibitisha katazo kutoka kwa mteja.
Wateja wawili wanaweza wote kufungua mwenyeji wa kuruka na bado hawana shughuli ya kufungua mmoja mwingine. Kufikia huduma ni uamuzi wa upelekaji, ilhali kufikia mwenza ni uamuzi wa sera, na rundo nyingi za VPN huzihifadhi katika vitu tofauti. Hakuna unachoweka kwa ajili ya kile cha kwanza kinachotekeleza cha pili. Kwa hiyo kazi si kuongeza kanuni, bali kupata kitu kinachoamua trafiki kati ya wenza kwenye seva hii, kuandika katazo hapo na kuthibitisha kutoka kwa mteja.
Njia kuelekea huduma ya pamoja si idhini kati ya wenza
Kutangaza subnet ya wateja humwambia mwenza jinsi ya kuweka pakiti kwenye waya kuelekea anwani ya mteja mwingine. Iwapo pakiti hiyo itawasilishwa huamuliwa baadaye, na kile kinachoisukuma. Kwenye lango la Linux ni mnyororo wa FORWARD; ndani ya daemon ya nafasi ya mtumiaji ni jedwali la vikao la handaki yenyewe. Njia hujibu ufikivu na huacha idhini bila kuguswa.
Ndiyo sababu ukaguzi wa utenganishaji unaosoma njia pekee hauthibitishi chochote. /24 inaweza kusukumwa kwa kila mteja ilhali kila pakiti kati ya wenza hutupwa kwenye ndoano ya upelekaji. Hali hatari ni kinyume: hakuna kanuni iliyo wazi, chaguo-msingi linaloruhusu, na utenganishaji unaokuwepo kwa sababu tu hakuna aliyelijaribu.
Andika sharti katika mstari mmoja kabla ya kufungua terminal. Fikia kizuizi cha huduma na mwenyeji wa kuruka, usifikie kitu kingine chochote ndani ya kizuizi cha wateja.
Gundua ni nani anayepeleka pakiti ya mwenza kwa hakika
Tabia mbili za seva zinaonekana sawa kutoka upande wa mteja na zinahitaji kanuni tofauti. Ama kerneli hupeleka pakiti tena nje ya kiolesura cha handaki, au daemon huiga kati ya vikao na kerneli haioni kamwe.
WireGuard ni wa kundi la kwanza: haina swichi kati ya wenza, kwa hiyo pakiti kutoka 10.8.0.4 hadi 10.8.0.5 hufika kwenye wg0, hugonga ndoano ya upelekaji na huelekezwa tena nje ya wg0 wakati AllowedIPs inashughulikia anwani zote mbili. OpenVPN ni kundi la pili mara tu client-to-client inapowekwa katika usanidi wa seva, kwa sababu agizo hilo huhamisha pakiti kati ya vikao katika nafasi ya mtumiaji. Kagua usanidi uliopakiwa kwa agizo hilo kabla ya kuandika chochote. Kanuni ya kerneli isiyoona trafiki kamwe haiwezi kutofautishwa na kanuni inayofanya kazi, na hivyo usambazaji huisha bila utenganishaji wowote.
Soma usanidi unaofanya kazi badala ya faili unayodhani imepakiwa, kwa sababu vifurushi vya usambazaji huleta mijumuiko yao wenyewe. Ikiwa daemon ndiye anayepeleka, katazo liko katika vidhibiti vyake vya kila mteja, na firewall ya mwenyeji huchuja trafiki inayoelekezwa kwa mwenyeji pekee. Ikiwa kerneli ndiyo inayopeleka, ndoano ya upelekaji ndiyo mahali pekee penye maana.
Usambazaji ulioelekezwa na uliotafsiriwa unahitaji ukaguzi mmoja zaidi: chanzo anachokiona mteja wa mbali kinaweza kuwa si kile unachotarajia. Wakati huo kanuni inayolingana na subnet ya wateja hailingani na kitu. Andika anwani inayobaki baada ya tafsiri kabla ya kuandika ulinganifu, na pendelea kulinganisha jozi ya violesura kuliko kukisia anwani za NAT.
Ipa kila anwani utambulisho unaoweza kufutwa peke yake
Utenganishaji huanguka mara tu vifaa viwili vinaposhiriki kitambulisho kimoja. Kanuni inayotegemea utambulisho huo haiwezi kuwatenganisha, na kufuta kompyuta ya mkononi iliyopotea hufuta kundi zima. Vyeti kwa kila kifaa au funguo kwa kila mwenza huweka ufutaji ndani ya nchi na sera isomeke, kwa sababu kila anwani inalingana na mtu au mashine mmoja hasa. Pale ambapo muundo hauwezi, sema hivyo kwenye kitabu cha uendeshaji badala ya kuelezea kanuni kama finyu.
Ugawaji wa anwani lazima ukubaliane na sera. Hifadhi kizuizi kwa huduma, kizuizi kwa wateja, na gawanya anwani za wateja kutoka kwenye bwawa unalodhibiti badala ya safu ya anayefika kwanza. Ikiwa seva inatafsiri au inaunda daraja, weka jedwali la ramani kando ya usanidi, kwa sababu jedwali hilo ndilo analohitaji msomaji anayefuata ili kupata kanuni tena.
Weka katazo pale pakiti inapovuka handaki
Kwenye lango linalopeleka trafiki ya WireGuard, kanuni mbili hushughulikia hali hiyo: ruhusu kizuizi cha huduma, kisha tupa salio la kizuizi cha wateja. Jozi ya violesura ni muhimu kama anwani, kwa sababu kulinganisha marudio pekee hukamata pia trafiki inayotoka kwenye LAN. Zipakie kwa mpangilio huo ili idhini itathminiwe kwanza.
Kwa nftables jozi hiyo huingia kwenye jedwali lililopo la inet filter, idhini kwanza na kutupa baadaye. Ulinganifu wote huo hufunga jozi ya violesura pamoja na anwani.
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.2.0/24 accept
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.0.0/24 drop
Baada ya kupakia soma mnyororo kinyume badala ya kuamini hali ya kutoka, na thibitisha kwamba kanuni zote mbili ziko katika mpangilio uliokusudia. Ongeza kanuni za ip6 zinazolingana kwa bwawa la IPv6, vinginevyo jozi ya v4 ni pambo tu kwenye handaki la tabaka mbili. Ikiwa seva tayari ina sera ya upelekaji inayoruhusu, ongeza kutupa badala ya kubadilisha mnyororo wote.
Wakati client-to-client imewashwa kwenye OpenVPN, kanuni hizi za upelekaji hazilingani kamwe na trafiki kati ya wenza na katazo lazima liishi katika vidhibiti vya daemon yenyewe. Weka kanuni za kerneli kwa trafiki inayoelekezwa kwa mwenyeji, lakini usizikadirie kama kidhibiti cha utenganishaji.
Thibitisha katazo kutoka kwa mteja, si kutoka kwa seva
Kujaribu kutoka kwenye lango hakuthibitishi chochote, kwa sababu trafiki inayozalishwa ndani huchukua njia ya kutoka na haivuki kamwe ndoano ya upelekaji. Tumia wateja wawili halisi: mmoja anayepaswa kufikia huduma na mmoja anayepaswa kukataliwa. Endesha kwanza kisa cha idhini, ili handaki iliyovunjika isidhaniwe kuwa sera inayofanya kazi.
Kutoka kwa mteja aliyeruhusiwa, thibitisha kwamba huduma inajibu kwenye bandari yake. Kutoka kwa mteja huyohuyo, jaribu anwani ya mwenza na utarajie kutupwa kwa kimya badala ya kukataliwa:
ping -c 3 -W 2 10.8.0.5
nc -z -w 2 10.8.0.5 22
nft list chain inet filter forward
iptables -vnL FORWARD
ping -6 -c 3 -W 2 fd00:8::5
Pakiti iliyotupwa na mwenza aliye nje ya mtandao zote zinaonekana kama muda kuisha, kwa hiyo kagua vihesabu kabla ya kuhitimisha chochote. Thibitisha kwamba kihesabu cha kanuni ya kutupa kinaongezeka wakati mwenza anaonekana wazi kuwa hai. Rudia kwa IPv6, ambapo kanuni ya ip6 isiyopo huacha katazo la v4 likionekana lenye ufanisi. Andika matokeo yaliyokubaliwa na kukataliwa kwenye kitabu cha uendeshaji pamoja na tarehe, kwa sababu uhamishaji ujao utapata kanuni tena.