Lëre një klient OpenVPN të bëjë SSH te një tjetër pa hapur grupin
Mbaje client-to-client të fikur, lëri kernelin të përcjellë një rrjedhë të vetme dhe mbaje pjesën tjetër të grupit të mbyllur. Dy rregulla në server plus një në destinacion.
Një klient duhet të arrijë shërbimin SSH të një klienti tjetër, dhe pjesa tjetër e grupit duhet të mbetet po aq e izoluar sa sot. Ndërprerësi joshës është client-to-client, i cili aktivizon aksesin mes palëve për të gjithë përnjëherë dhe vendimin ia jep OpenVPN në vend të kernelit. Një përgjigje më e ngushtë e mban atë ndërprerës të fikur dhe lë rrugëtimin dhe firewall-in e vetë serverit të mbajnë saktësisht një rrjedhë.
Mekanizmi ka më shumë rëndësi se teksti i rregullit, sepse dy qasjet e vendosin paketën në vende të ndryshme. Të dish cilën zgjodhe shpjegon si rregullin që duket se nuk bën asgjë, ashtu edhe palën që lidhet pa të.
Ku client-to-client e lëviz paketën
Me client-to-client të aktivizuar, serveri e përcjell paketën e palës nga brenda në vend që ta dërgojë përsëri jashtë përmes pajisjes së tunelit, kështu që paketa nuk arrin kurrë në rrugën e përcjelljes së kernelit. Kjo është e përshtatshme dhe gjithashtu do të thotë që firewall-i yt nuk e sheh kurrë rrjedhën që duhet të mbikëqyrë. Lëre opsionin të fikur dhe serveri e drejton paketën përsëri jashtë nëpërmjet të njëjtit ndërfaqe, gjë që e vendos përpara netfilter. I njëjti ndërfaqe hyn, i njëjti del, dhe zinxhiri FORWARD merr votën.
Shkëmbimi është i qartë: fiton një pikë politike dhe merr përsipër punën e rrugëtimit dhe të përcjelljes që e bënte shkurtesa për ty. Ajo punë është e vogël për një rrjedhë të vetme dhe rritet me çdo përjashtim që shton. Numëroji përjashtimet tani, sepse grupi i rregullave është vendi ku jeton vërtet politika mes palëve.
Rruga që ndjek vërtet një paketë e palës
Supozoni një shërbim Linux Community OpenVPN 2.6, përpunim TUN në hapësirën e përdoruesit në vend të DCO, topologji nënrrjeti, tun0 dhe një grup 10.44.0.0/24 me klientin A në 10.44.0.21 dhe klientin B në 10.44.0.37. Me topologji nënrrjeti, adresa dhe maska që mori A e mbulojnë tashmë grupin, kështu që A e dërgon paketën te pajisja e tunelit pa pasur nevojë për një rrugë shtesë të shtyrë. Kontrollo rrugën efektive në A në vend që të supozosh një.
Në server paketa mbërrin e adresuar për B, që nuk është adresë lokale, kështu që përcillet. Përcjellja IPv4 duhet të jetë e aktivizuar që kjo të ndodhë, dhe kërkimi i rrugës duhet ta dërgojë paketën përsëri jashtë përmes tun0. Prandaj firewall-i sheh një rrjedhë të përcjellë me të njëjtin ndërfaqe në të dy anët, dhe ky është detaji që shumica e grupeve të rregullave e humbin. Këtu nuk nevojitet përkthim burimi, dhe mbajtja e adresës së A të paprekur është ajo që i lejon B të zbatojë rregullin e vet të bazuar në burim.
Dy rregulla në server, në këtë rend
Tre rregulla mbajnë të gjithë lejen: përcjellja, përjashtimi i çiftit dhe një hedhje e paracaktuar për çiftin e tunelit. Rregulli i pranimit emërton çiftin dhe shërbimin, kështu që leja i mbijeton një grupi që rritet. Vëre përpara çdo mohimi të përgjithshëm të trafikut tunel-në-tunel, sepse fiton përputhja e parë:
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o tun0 -s 10.44.0.21 -d 10.44.0.37 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -j DROPAto komanda janë ilustruese dhe i përkasin mekanizmit që pritësi yt përdor për të ruajtur rregullat; një futje në kohën e ekzekutimit zhduket në nisjen tjetër. Është rregulli me gjendje ai që i lejon përgjigjet e B dhe shtrëngimin e duarve TCP të kthehen pa një pranim të dytë pasqyrë.
Kontrollo numëruesit më pas, jo listën e rregullave, sepse një rregull që nuk përputhet kurrë duket identik me një që funksionon. Nëse numëruesit mbeten në zero, paketa nuk po ndjek rrugën që mendon.
Çfarë duhet të lejojë ende B
B ekzekuton shërbimin SSH, prandaj B vendos nëse diçka dëgjon në adresën e tunelit dhe nëse firewall-i i vetë pritësit e pranon burimin. Një leje rrjeti në server nuk është leje për asnjë llogari në B, dhe verifikimi i çelësit të pritësit dhe vërtetimi i përdoruesit vazhdojnë të zbatohen si nga çdo vend tjetër.
Provo së pari rastin pozitiv: një lidhje e re SSH nga A te adresa e tunelit e B, e pranuar me çelësin e pritësit që pritet. Pastaj provo një palë tjetër ose një portë tjetër dhe konfirmo se refuzohet, sepse një leje që lejon në heshtje gjithçka nuk dallohet nga një që funksionon derisa të ketë rëndësi. Të dyja gjysmat e atij testi janë të nevojshme, dhe e dyta është ajo që njerëzit e kapërcejnë.
Shkruaj adresat e caktuara, rrugët efektive në të dy klientët dhe rregullat e sakta në server dhe në B. Një ping i suksesshëm drejt portës ose një portë e hapur në server nuk provojnë asgjë nga këto, pasi të dyja mund të jenë të vërteta ndërsa përcjellja mes palëve është ende e bllokuar. Shkruaji ato numra sa kohë tuneli është lart, sepse adresa që merr një klient pas rilidhjes mund të jetë një tjetër.