Pustite enemu odjemalcu OpenVPN, da po SSH doseže drugega, ne da bi odprli sklad
Pustite client-to-client izklopljen, pustite jedru, da posreduje en tok, in pustite preostanek sklada zaprt. Dve pravili na strežniku in eno na cilju.
En odjemalec mora doseči storitev SSH drugega odjemalca, preostanek sklada pa mora ostati tako izoliran kot zdaj. Vabljivo stikalo je client-to-client, ki vklopi dostop med enakovrednimi odjemalci za vse hkrati in odločitev prepusti OpenVPN namesto jedru. Ožji odgovor ohrani to stikalo izklopljeno in prepusti usmerjanju in požarnemu zidu strežnika, da nosita natanko en tok.
Mehanizem šteje več kot besedilo pravila, ker dva pristopa postavita paket na različna mesta. Vedenje, katerega ste izbrali, pojasni tako pravilo, ki se zdi, da nič ne počne, kot enakovrednega odjemalca, ki se poveže brez njega.
Kam client-to-client premakne paket
Ko je client-to-client vklopljen, strežnik posreduje paket enakovrednega odjemalca notranje, namesto da bi ga poslal nazaj skozi tunelsko napravo, zato paket nikoli ne prispe na posredovalno pot jedra. To je priročno in pomeni tudi, da vaš požarni zid nikoli ne vidi toka, ki bi ga moral nadzorovati. Pustite možnost izklopljeno in strežnik usmeri paket nazaj skozi isti vmesnik, kar ga postavi pred netfilter. Isti vmesnik noter, isti ven, in veriga FORWARD dobi glas.
Zamenjava je jasna: pridobite politično točko in prevzamete usmerjanje in posredovanje, ki ju je bližnjica opravljala za vas. To delo je za en tok majhno in raste z vsako izjemo, ki jo dodate. Preštejte izjeme zdaj, ker v naboru pravil resnično živi politika med enakovrednimi odjemalci.
Pot, ki jo paket enakovrednega odjemalca resnično prepotuje
Predpostavite storitev Linux Community OpenVPN 2.6, obdelavo TUN v uporabniškem prostoru namesto DCO, topologijo podomrežja, tun0 in sklad 10.44.0.0/24 z odjemalcem A na 10.44.0.21 in odjemalcem B na 10.44.0.37. Pri topologiji podomrežja naslov in maska, ki ju je prejel A, že pokrivata sklad, zato A pošlje paket tunelski napravi brez dodatne potisnjene poti. Preverite dejansko pot na A, namesto da bi katero predpostavljali.
Na strežniku paket prispe naslovljen na B, kar ni krajevni naslov, zato se posreduje. Posredovanje IPv4 mora biti vklopljeno, da se to sploh zgodi, in iskanje poti mora poslati paket nazaj skozi tun0. Požarni zid torej vidi posredovani tok z istim vmesnikom na obeh straneh, in to je podrobnost, ki jo večina naborov pravil spregleda. Tu ni potreben prevod vira, in prav to, da naslov A ostane nedotaknjen, omogoča B, da uporabi svoje pravilo na podlagi vira.
Dve pravili na strežniku, v tem vrstnem redu
Tri pravila nosijo celotno dovoljenje: posredovanje, izjema za par in privzeto zavrženje za tunelski par. Pravilo sprejema imenuje par in storitev, zato dovoljenje preživi sklad, ki raste. Postavite ga pred kakršno koli splošno zavrnitev prometa tunel-v-tunel, ker zmaga prvo ujemanje:
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 DROPTi ukazi so ponazoritveni in spadajo v mehanizem, ki ga vaš gostitelj uporablja za shranjevanje pravil; vstavljanje med delovanjem izgine ob naslednjem zagonu. Pravilo stanja je tisto, ki pusti odgovore B in rokovanje TCP vrniti se brez drugega, zrcalnega sprejema.
Nato preverite števce, ne seznama pravil, ker je pravilo, ki se nikoli ne ujame, videti enako kot tisto, ki deluje. Če števci ostanejo na nič, paket ne gre po poti, ki jo mislite.
Kaj mora B še dovoliti
B poganja storitev SSH, zato B odloča, ali kaj posluša na tunelskem naslovu in ali njegov lastni požarni zid gostitelja sprejme vir. Omrežno dovoljenje na strežniku ni dovoljenje za noben račun na B, preverjanje ključa gostitelja in preverjanje pristnosti uporabnika pa še vedno veljata kot od koder koli drugod.
Najprej preizkusite pozitivni primer: novo povezavo SSH z A na tunelski naslov B, sprejeto s pričakovanim ključem gostitelja. Nato preizkusite drugega enakovrednega odjemalca ali druga vrata in potrdite, da je zavrnjen, ker dovoljenja, ki tiho dovoli vse, ni mogoče ločiti od tistega, ki deluje, dokler ni pomembno. Obe polovici tega preizkusa sta potrebni, drugo pa ljudje izpustijo.
Zapišite dodeljene naslove, dejanske poti na obeh odjemalcih in natančna pravila na strežniku in na B. Uspešen ping na prehod ali odprta vrata na strežniku ne dokaže nič od tega, saj je lahko oboje res, medtem ko je posredovanje med enakovrednimi odjemalci še vedno blokirano. Zapišite te številke, dokler je tunel pokonci, ker je naslov, ki ga odjemalec prejme po ponovni povezavi, lahko drug.