Jedan klijent mora doći do SSH usluge drugog klijenta, a ostatak skupa treba ostati izoliran kao i danas. Mamljiv prekidač je client-to-client, koji uključuje pristup među klijentima svima odjednom i odluku predaje OpenVPN umjesto kernelu. Uže rješenje ostavlja taj prekidač isključenim i pušta da poslužiteljevo usmjeravanje i vatrozid nose točno jedan tok.

Mehanizam je važniji od teksta pravila jer dva pristupa smještaju paket na različita mjesta. Kad znate koji ste odabrali, to objašnjava i pravilo koje kao da ništa ne radi i klijenta koji se povezuje bez njega.

Kamo client-to-client premješta paket

Kad je client-to-client uključen, poslužitelj prenosi paket klijenta interno umjesto da ga pošalje natrag kroz tunelski uređaj, pa paket nikad ne stigne na kernelov put prosljeđivanja. To je zgodno i ujedno znači da vaš vatrozid nikad ne vidi tok koji bi trebao čuvati. Ostavite opciju isključenu i poslužitelj usmjerava paket natrag kroz isto sučelje, što ga stavlja pred netfilter. Isto sučelje ulazi, isto sučelje izlazi, a lanac FORWARD dobiva glas.

Razmjena je jasna: dobivate točku politike i preuzimate usmjeravanje i prosljeđivanje koje je prečac radio za vas. Taj je posao malen za jedan tok i raste sa svakom iznimkom koju dodate. Prebrojite iznimke sada jer su pravila mjesto gdje politika prema klijentima doista živi.

Put kojim paket klijenta doista prolazi

Pretpostavite Linux Community OpenVPN 2.6 uslugu, obradu TUN u korisničkom prostoru umjesto DCO, subnet topologiju, tun0 i skup od 10.44.0.0/24 s klijentom A na 10.44.0.21 i klijentom B na 10.44.0.37. Kod subnet topologije adresa i maska koju je A dobio već pokrivaju skup, pa A šalje paket tunelskom uređaju bez dodatne gurane rute. Provjerite stvarnu rutu na A umjesto da je pretpostavljate.

Na poslužitelju paket stiže adresiran na B, što nije lokalna adresa, pa se prosljeđuje. IPv4 prosljeđivanje mora biti uključeno da bi se to uopće dogodilo, a pretraga rute mora poslati paket natrag kroz tun0. Vatrozid zato vidi proslijeđeni tok s istim sučeljem na objema stranama, a to je detalj koji većina skupova pravila propusti. Ovdje nije potrebno prevođenje izvora, a očuvanje A-ove adrese omogućuje B-u da primijeni svoje pravilo zasnovano na izvoru.

Dva pravila na poslužitelju, ovim redom

Tri pravila nose cijelu dozvolu: prosljeđivanje, iznimka za par i zadano odbacivanje za tunelski par. Pravilo prihvata imenuje par i uslugu, pa dozvola preživljava skup koji raste. Postavite ga prije bilo kakvog sveobuhvatnog odbijanja tunel-na-tunel prometa jer prvo podudaranje pobjeđuje:

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 DROP

Te su naredbe ilustrativne i pripadaju mehanizmu kojim vaš host čuva pravila; unos u radu nestaje pri sljedećem podizanju. Pravilo stanja pušta B-ove odgovore i TCP rukovanje natrag bez drugog, preslikanog prihvata.

Provjerite brojače poslije, a ne popis pravila, jer pravilo koje se nikad ne podudara izgleda isto kao ono koje radi. Ako brojači ostanu na nuli, paket ne ide putem koji mislite.

Što B još mora dopustiti

B pokreće SSH uslugu, pa B odlučuje sluša li išta na tunelskoj adresi i prihvaća li njegov vlastiti vatrozid izvor. Mrežna dozvola na poslužitelju nije dozvola za bilo koji račun na B-u, a provjera ključa hosta i autentikacija korisnika i dalje vrijede kao i s bilo kojeg drugog mjesta.

Prvo testirajte pozitivan slučaj: novu SSH vezu od A do B-ove tunelske adrese, prihvaćenu s očekivanim ključem hosta. Zatim testirajte drugog klijenta ili drugi port i potvrdite da je odbijen jer se dozvola koja tiho dopušta sve ne razlikuje od one koja radi dok ne postane važno. Obje polovice tog testa su nužne, a drugu ljudi preskaču.

Zapišite dodijeljene adrese, stvarne rute na obama klijentima i točna pravila na poslužitelju i na B-u. Uspješan ping na pristupnik ili otvoren port na poslužitelju ne dokazuje ništa od ovoga jer oboje može biti točno dok je prosljeđivanje među klijentima još blokirano. Zapišite te brojeve dok je tunel podignut jer adresa koju klijent dobije nakon ponovnog povezivanja može biti druga.

Povezani članci