Linux sare-namespaceak VPN baterako: zer ez duten isolatzen
Namespace batek interfazeak, ibilbideak eta socketak mugitzen ditu, ez fitxategiak edo kontuak. Hona hemen VPN batek bere netns-en zer estaltzen duen eta trafikoak nora ihes egiten duen oraindik.
Abiarazi VPNa bere namespacearen barruan, exekutatu aplikazio bat han, eta trafikoak ostalariaren ibilbidetik irteten jarraitzen du. Ezer ez dago apurtuta: namespaceak beran sartzen diren prozesuak baino ez ditu gobernatzen, eta isuria inoiz sartu ez zen prozesu batetik etorri zen. Interfazeak, helbideak, ibilbideak, suebaki-arauak eta socketak dira namespaceak dituenak. Fitxategiak, kontuak eta jada martxan dauden zerbitzuak ez dira, eta hortik datoz ezusteko gehienak.
Zer duen namespaceak, eta non jaiotzen den socketa
Eraman interfaze bat namespace batera eta ostalariak galdu egingo du; eraiki tunel bat barruan eta ostalariak ezingo du ikusi. Hori da namespace-era mugatutako VPN baten mekanismoa: gailua eta hara eramaten duten ibilbideak hautatutako prozesuek soilik iris daitezkeen testuinguru batean bizi dira. Ostalariak bere ibilbide lehenetsia mantentzen du, beraz kanpoko guztia ukitugabe geratzen da.
WireGuardentzat sorkuntza-testuinguruak oraingo kokapenak adina balio du: UDP socketa interfazea sortu zen namespacean lotzen da, gailua beste leku batera mugitu ondoren ere. Pakete zifratuek zein bideratze-taulari jarraitzen dioten jaiotza-leku horren araberakoa da. Socketa parekidera ibilbiderik ez duen testuinguru batean geratzen denean, interfazeak bilatzen du eta esku-uztak ez du inoiz irteten. Egiaztatu bere jaiotza-lekua, gero oraingo kokapena.
Zer ez duen namespaceak isolatzen
Ezerk ez du hemen fitxategi-sistemak, kontuak edo sekretuak bereizten, eta muga horietako bat ere ez da agertzen namespace bat sortu duzulako. Resolverraren konfigurazioa fitxategi bat da, beraz barruko prozesu batek ostalariaren resolverra seinalatzen duen ezarpena irakur dezake oraindik eta bere kontsulta bidal dezake horrek dakarren ibilbidetik. Eskaria jada martxan dagoen bitartekari edo sistema-zerbitzu bati ematen dion aplikazioak erabat beste testuinguru bateko prozesu bat dakar. Biak dira mugak inoiz erantzuteko asmorik izan ez zuen eskaerak.
Konponbidea /etc/netns/<name>/resolv.conf-n namespace bakoitzeko fitxategi bat da, edo prestaturiko fitxategi baten bind mount bat, barrutik irisgarria den resolver batera zuzenduta. Ostalarian /etc/resolv.conf editatzeak ez du ezer aldatzen namespaceak ikusten duenik.
Prozesuen kokapena da kontrola
Lortzen duzun isolamendua barruan abiarazten dituzun prozesuen isolamendua da zehazki. Namespacearen exec laguntzailearen bidez abiarazitako shell bat, eta hark sortzen duen guztia, barruan geratzen da; ostalariaren saiotik abiarazitako mahaigaineko aplikazio bat, ez. Sortu testuingurua, mugitu gailua, eta gero frogatu bi aldeak:
ip netns add vpn1
ip link set wg0 netns vpn1
ip netns exec vpn1 wg show
wg show
Irakurri lehen wg show namespacearen barrutik eta bigarrena ostalaritik, eta espero itzazu bietatik bakarra dela parekidea zerrendatuko duena. Biak egiten badute, gailua ez zen inoiz mugitu; bakar batek ere ez badu egiten, beste leku batera joan da. Abiarazlea zerbitzu-kudeatzaile bat denean, unitate-fitxategia da editatu beharrekoa, ez mahaigaineko lasterbidea. Namespace-ezarpenik gabeko unitate batek daemona ostalariaren testuinguruan abiarazten du eta diseinua isilean baliogabetzen du.
Probatu aplikazioaren testuingurutik
Exekutatu egiaztapena aplikazioak erabiltzen dituen bitar eta erabiltzaile berberekin, namespacearen barruan. Sartu DNS eta bi helbide-familia, inoiz pentsatu ez duzun IPv6 ibilbide bat irteera ohikoa baita. Zeure shelltik egindako proba batek zure shell isolatuta dagoela baino ez du frogatzen.
Ondoren exekutatu egiaztapen bera ostalarian eta egiaztatu erantzunak desberdinak direla: tunelaren helbidea eta aurreikusitako irteera barruan, ostalariaren ibilbidea eta bulegoko irteera kanpoan, eta resolverra izenez. Izena eman namespaceei hedapenaren arabera, ez protokoloaren arabera, garbiketa-script batek bi nahas ez ditzan.
Birbidaltzea, hutsegite-politika eta garbiketa
Pasabide batentzat, aktibatu birbidaltzea jakinaren gainean eta erabaki zer gertatu behar den tunela erortzen denean. Namespace batek ez ditu blokeatzen barruan instalatzen dituzun ibilbideak, beraz ostalarirako erreserba-ibilbide bat erabiliko da bat sortzen baduzu. Politika-erabakia da, eta idatzi egin behar litzateke etenaldi batek proba dezan.
Idatz itzazu namespaceen izenak, interfazeak eta konfigurazioa norena den, garbiketak hedapenak sortutakoa baino ez dezan kendu. Atzera-egitean ostalariaren sareak berrezartzeak garbiketa etenaldi bihurtzen du. Orrialdea network_namespaces(7) laburra da eta merezi du irakurtzea bide hori diseinatu aurretik.