Bezero batek OpenVPN zerbitzarira deitzen du Compute Engine VM batean, egoera leihoak konektatuta dio, eta VPC barruko ostalari baterako ping-a oraindik ez da inora iristen. Senak beste push lerro bat gehitzea esaten du, eta horrek ez du inoiz konponduko. Compute Engine-k bere ibilbide taularen eta VM interfaze batek benetan dituen helbideen arabera erabakitzen du norantz joango diren paketeak, beraz VM-ak ez duen tunel pool bat inork entregatzen ez duen pool bat da.

Huts egiten ari den paketearen atzetik joan konfigurazio fitxategiaren ordez, eta falta diren piezak ordenan agertuko dira.

Hiltzen den paketetik hasi

SYNak bezeroa uzten du, tunelean sartzen da eta VM-ra iristen da VPC barruko helmuga baterako pakete kapsulatuta. OpenVPN-k deskapsulatu eta eth0 bidez bidaltzen saiatzen da, eta bertan fabricak beste guztiaren aurretik galdera bat egiten du: instantzia honek helmugako helbidea duen. Beste baten azpisaretik moztutako tunel pool batek galdera horretan huts egiten du, eta paketea baztertzen da edozein ibilbide edo suebaki arau kontsultatu aurretik.

Beraz, bezerotik VPCrako norabideak bi baldintza bereizi ditu, eta bat ere ez da push direktiba bat. VM-ak tunel poola estaltzen duen alias tarte bat behar du, eta horrek egiten du helbide horien jabe legitimoa. VPC-ak ibilbide bat behar du VM-a next hop gisa izendatzen duena prefixu babestu bakoitzeko. Bat falta bada paketea beste leku batean hiltzen da, bezeroak isiltasun bera ikusten duen bitartean.

Irakurri hutsa ordena horretan, bezeroaren aldetik bi baldintzak berdinak diruditelako. Konektatuta dioen tunelean ezerk erantzuten ez duenean, topologia arazo baten seinalea da, ez cipher txar batena.

Instantziak tunel poola du

Eman VM-ari bigarren mailako tarte bat bere azpisarearen barruan, eta gero egin OpenVPN-k tarte horretatik bertatik helbideak banatu. Lehen helbidea 10.156.0.10/20 duen instantzia batean, /28 alias batek poola beste instantziek dagoeneko dituzten helbideetatik bereizten du:

gcloud compute instances network-interfaces update openvpn-vm \
  --zone=europe-west1-b \
  --aliases=eth0:10.156.1.0/28

server direktibak bloke bera deskribatu behar du orduan. Bere lehen helbidea tunelaren gateway bihurtzen da, eta gainerako helbideak bezeroei banatzen zaizkie. Hemen bi zenbakik bloke bat deskribatzen dute, sare bat eta netmask bat, eta OpenVPN-k oraindik espero duen pool sintaxia da.

server 10.156.1.0 255.255.255.240

Egiaztatu helbidea benetan interfazera iritsi dela eta ez soilik OpenVPN konfigurazioan. Fabricak NICak jakinarazten duena bidaltzen du, ez daemonak sinesten duena. Komando bakar batek erabakitzen du:

ip -4 addr show dev eth0

eth0-ra inoiz iristen ez den bigarren mailako helbide bat, edo beste azpisare batekin gainjartzen den pool bat, geroago tarteka galtze gisa agertzen da, ez abio-errore gisa. Daemona abiarazten da, bezeroak konektatzen dira, eta helmuga batzuek bakarrik funtzionatzen dute gaizki. Eutsi alias tartea txiki ibilbide taulan poola erraz ezagutzeko. Inoiz ez moztu beste instantzia batek jada erabiltzen duen azpisare batetik.

Eman next hop itzulera trafikoari

VPCko ostalari baten erantzuna tunel pooleko bezero helbide batera zuzentzen da, eta helbide hori ez da VPCak ezagutzen duen azpisare batekoa. Pool horretarako ibilbiderik gabe, erantzuna bat ez datorren lehen hop-ean gelditzen da, eta eskaera ondo gerta zitekeen urruneko muturrean arrakastatsua izan.

gcloud compute routes create openvpn-return \
  --network=prod-vpc \
  --destination-range=192.168.127.0/24 \
  --next-hop-instance=openvpn-vm \
  --next-hop-instance-zone=europe-west1-b \
  --priority=800

Ibilbide bera behar da bezero baten atzean dagoen edozein prefixurentzat, VPC barruan egon beharrean. Prefixu horiek iroute sarrera bat ere behar dute bezero horren ccd fitxategian. Sarrera hori zerbitzariaren aldeko kontabilitatea da: prefixua zein bezerok duen esaten dio zerbitzariari, eta ez du ezer instalatzen bezeroan bertan.

Gorde push zerrenda elkarrizketaren bezero aldearentzat, konektatzen den makinari ibilbideak gehitzen baitizkio soilik. VPC azpisare baterako push lerro bat eta poola itzultzen duen VPC ibilbide bat bide beraren bi erdiak dira, eta erdi bakarra behar adina da eskaerak eramaten dituen baina erantzunik eramaten ez duen tunel bat sortzeko.

Suebakiak, aurreratzea eta tartean dauden hopak

VPCko suebakiak deskapsulatutako paketea ebaluatzen du, beraz ingress arau batek tunel poola eta bide horretatik VM-ra iristen den edozein gune prefixu onartu behar ditu. Default-deny jarrera batek isil-isilik huts egiten du hemen: paketea deskapsulatu ondoren baztertzen da, eta OpenVPN erregistroak saio osasuntsua erakusten du.

Aurreratzen duen eta amaitzen ez duen edozein Linux ostalaritan, egiaztatu net.ipv4.ip_forward gaituta dagoela. Jabetza araua han ere aplikatzen da: duen ez duen azpisare baterako aurreratzen duen makinak VMak bezala baztertzen du paketea. Irakurri balioa tunela erruduntzatu aurretik.

Prefixu bakar batek huts egiten duenean

Huts partziala irakurtzeko kasurik errazena da, bideko beste guztia jada frogatuta dagoelako. Hasi ibilbide zerrendatik eta irakurri prefixua estali beharko lukeen sarreraren helmuga tartea eta next hop-a, gero irakurri instantziaren deskribapena eta alderatu bere alias tartea zerbitzariak banatzen duen poolarekin.

gcloud compute routes list --filter=destination-range~10.164.0.0
 gcloud compute instances describe openvpn-vm --format=get(networkInterfaces[0].aliasIpRanges)

Falta den ibilbide bat next hoparik ez gisa agertzen da prefixurako, eta falta den alias bat interfazean baztertutako pakete gisa agertzen da; bezeroaren aldetik biak antzekoak dirudite eta bi irteera horietan erabat desberdinak dira. Biak badaude, geratzen den susmagarria prefixua aldarrikatzen duen bezeroaren ccd iroutea da.

Idatzi lau balioak tunelearen ondoan: alias tartea, zerbitzariaren poola, pushatutako prefixuak, VPC ibilbideak. Alias zaharkitu batek pooleko helbide guztiak hausten ditu, ibilbide zaharkitu batek norabide bat hausten du, falta den push batek prefixua ezkutatzen dio bezeroari, eta iroute oker batek prefixua peer okerrora bidaltzen du. Azpisare bat gehitzen duen hurrengo pertsonak laurak leku bakarrean behar ditu, eta oharra gaua baino merkeagoa da.

Erlazionatutako artikuluak