Ku xidh laba macmiil OpenVPN hal Linux marti leh fwmark
Labada macmiilba waxay rabaan waddada caadiga ah. Ku dheji serverka gudaha waddada martigeliyaha, ka hor istaag macmiilka labaad inuu dib u qoro shaxda, ka dibna ku hoggaami qulqulka fwmark.
Ku darista macmiil labaad OpenVPN hal Linux marti waxay ku guuldareysataa mid ka mid ah laba meelood. Ama macmiilka gudaha ma gaaro serverkiisa sababtoo ah tunnelka dibadda ayaa qabsaday gaadiidkaas, ama macmiilka labaad wuxuu dib u qoraa shaxda waddooyinka oo tunnelka koowaad wuu shaqeyn waayaa. Labada dhibaatooba waxay ku jiraan waddada, ma aha sirteeda, labadana waxaa la xalliyaa ka hor inta tunnelka cusub uusan qaadin wax taraafik ah oo barnaamij ah. Cinwaannada halkan waa tusaale: tun0 waa tunnelka dibadda, 203.0.113.9 waa serverka gudaha, TCP 9999-na waa qulqulka ay tahay inuu isticmaalo waddada gudaha.
Laba nooc oo guuldarro, hal shax waddooyin
Macmiilka gudaha wuxuu u furaa serverkiisa socket UDP, socketkaasna wuxuu raacaa shaxda waddooyinka hadda sida mid kasta oo kale. Haddii tunnelka dibadda uu hore u haysto tan caadiga ah, baakadaha is-dhaafsiga waxay galaan tunnelka dibadda. Taasi waxay shaqeysaa oo kaliya marka serverka dibadda uu gaaro serverka gudaha oo dhinaca kale uu ogolaado inuu qaado qulqulka; haddii kale is-dhaafsigu wuu istaagaa macmiilkuna mar kale ayuu isku dayaa.
Guuldarrada labaad waxay ka timaaddaa pushka serverka. Pushka caadiga ah waa redirect-gateway def1, kaas oo rakibaya 0.0.0.0/1 iyo 128.0.0.0/1 halkii uu beddeli lahaa waddada caadiga ah. Sidaas darteed laba macmiil oo mid kastaa rakibo lammaanihiisa /1 way isku dhacaan, lammaanaha ugu cusubna wuxuu guuleystaa ku dhowaad meel kasta. Marka tunnelku dhinto ka dib marka labaad uu xirmo, shaxda ka raadi labadaas horgale, maxaa yeelay waddada caadiga ah lafteeda lama beddelin.
Calaamadee qulqulka oo sii shax
U jihee taraafikka la doortay adigoo ku calaamadeynaya shaxda mangle oo ku waafajinaya calaamadda qaanuunka siyaasadda. Qaanuunku wuxuu tilmaamayaa shax gaar ah oo waddada caadiga ah ay tahay qalabka gudaha, sidaas darteed kaliya baakadaha calaamadeysan ayaa qaata waddada gudaha.
iptables -t mangle -A PREROUTING -p tcp -m multiport --dport 9999 -j MARK --set-mark 0x9999
ip rule add fwmark 0x9999 table 200 pref 1000
ip route add default dev tun1 table 200Inta badan guuldarrooyinka qaanuunkan waxay ka yimaadaan laba khalad. Qiimaha calaamadda uu dejiyo firewallka iyo qiimaha uu qaanuunku waafajinayo waa inay isku mid noqdaan, maxaa yeelay kala duwanaansho ma bixiso khalad iyo saameyn midna. PREROUTING-na wuxuu arkaa oo kaliya baakadaha ka yimaada dibadda, sidaas darteed isku xirka ka bilaabma martigan wuxuu u baahan yahay qaanuun OUTPUT oo isla waafajintaas leh ka hor inta aan la calaamadeyn.
Kala qaado lahaanshaha waddooyinka macmiilka labaad
Laba xulasho ayaa ka hor istaaga macmiilka labaad inuu wax ka beddelo shaxda, waxayna ka shaqeeyaan meelo kala duwan. route-nopull wuu iska indhatiraa xulashooyinka waddada la pushay, sidaas darteed waxba lama rakibo. route-noexec wuxuu aqbalaa xulashooyinka la pushay deegaanka macmiilka laakiin beddelka shaxda wuxuu u dhaafaa hook, taasna waa waxa aad rabto marka aad u baahan tahay inaad aragto waxa serverku soo bandhigay.
Hook wuxuu ku shaqeeyaa qiimayaasha la pushay deegaankiisa, waa inuu ku daraa oo kaliya gelitaannada aad ansixisay. Ka dhig mid idempotent ah: marrin shaxda uu leeyahay ka hor inta aad dib u dhiso, hana u malayn in orodkii hore uu ka tagay xaalad nadiif ah. Dib u xiriddu waxay mar kale u yeertaa hook, hookna wax ku dara isagoo aan nadiifin wuxuu ururiyaa waddooyin labanlaab ah.
Dooro hal milkiile oo qor. Profayl dejiya labada xulasho, ama hook la tartamaya script gacan ku qoran, wuxuu soo saaraa shax aan cidna dambe sharrixi karin.
Ku dheji labada cinwaan ee serverka
Serverka gudaha wuxuu u baahan yahay waddo martigeliyaha oo maraysa qalabka dibadda ka hor inta macmiilka gudaha uusan xirmo. Gelitaankaas ayaa gaadiidka gudaha ku hayaa tunnelka dibadda halkii uu uga tegi lahaa inuu raaco tan caadiga ah.
ip route add 203.0.113.9/32 dev tun0
ip route get 203.0.113.9Sidoo kale ku dar waddo martigeliyaha u dhiganta serverka dibadda shaxda weyn, haddii kale dib u xiriddu waxay u jiheyn kartaa gaadiidka macmiilka dibadda laftiisa tunnelkiisa. Nidaamku ma aha ikhtiyaari: gelitaannadan ku dar ka dib marka interface-ka la xiriira uu jiro, taas oo macnaheedu yahay hook ama script socda ka dib xirka. Waddo u tilmaamaysa qalab damisan waa la tirtiraa ama waa la iska indhatiraa, sidaas darteed gelitaan lagu qoray bilowga ma badbaado nidaamkii aad u maleysay.
Hubi raadinta halkii aad akhrin lahayd shaxda oo dhan. Natiijada raadinta waddadu waxay sheegtaa qalabka iyo cinwaanka isha ee kernel isticmaali doono, taasna waa waxa macmiilku helo marka uu furo socketkiisa.
Tijaabi silsiladda oo ka dhig guuldarrada mid muuqata
Ku qabo interface-ka dibadda inta macmiilka gudaha xirmayo. Is-dhaafsiga gudaha waa inuu u muuqdaa sida xamuul sir ah gudaha tunnelka dibadda; haddii uu u muuqdo sida UDP caadi ah oo u socda 203.0.113.9, waddada martigeliyaha maqan tahay silsiladdana weligeed lama dhisin.
Silsilad si aamusnaan ah ugu noqota uplink jireed waa natiijada ugu xun, maxaa yeelay xaaladda interface-ku waxba ma sheegto taraafikka gudahana wuxuu ka baxaa cinwaan isha khaldan. Haddii macmiilka labaad si toos ah ugu dib xirmi karo marka tunnelka dibaddu dhaco, dariiqaas dami ama ku xir interface-ka dibadda si guuldarradu u muuqato.
Ku dhammee laba qulqul iyo hal dump qaanuun: isku xir calaamadeysan iyo mid aan calaamadeysneyn waa inay qaataan waddooyin kala duwan, ip rule show-na waa inuu liisgareeyaa mudnaanta aad u jeedday. Haddii labada qulqul ay qaataan isla waddo, calaamadda lama dabaqayo meesha aad u maleynayso.