E Client wiählt sech um OpenVPN-Server op enger Compute Engine-VM an, d'Statusfenster seet verbonnen, an e Ping op en Host an der VPC kënnt trotzdem néierens un. Den Instinkt ass, nach eng push-Zeil dobäizesetzen, an dat behieft et ni. Compute Engine entscheet, wou Pakete higinn, op Basis vun der eegener Routentabell an de Adressen, déi eng VM-Schnittstell tatsächlech huet, also ass en Tunnel-Pool, deen d'VM net besëtzt, e Pool, un deen keen zoustellt.

Follegt dem Paket, dat feelgeet, amplaz vun der Konfiguratiounsdatei, dann erschéngen déi fehlend Deeler an der Rei.

Beim stierwende Paket ufänken

D'SYN verléisst de Client, lant am Tunnel an erreecht d'VM als en agekapselt Paket fir en Zil an der VPC. OpenVPN kapselt et aus a probéiert et iwwer eth0 weiderzeleeden, wou de Fabric virun allem aneren eng Fro stellt: besëtzt dës Instanz d'Ziladress. En Tunnel-Pool, deen aus dem Subnetz vun engem aneren erausgeschnidden gouf, feelt bei där Fro, an de Paket gëtt verworf, ier eng Route oder Firewall-Reeg consultéiert gëtt.

D'Richtung vum Client an d'VPC huet also zwee getrennt Ufuerderungen, a keng vun deene ass eng push-Direktiv. D'VM brauch en Alias-Beräich, deen den Tunnel-Pool deckt, an dat ass et, wat se zur legitimer Besëtzerin vun dësen Adressen mécht. D'VPC brauch eng Route, déi d'VM als Next Hop fir all geschützt Préfix nennt. Feelt eng vun deenen zwee, stierwt de Paket op enger anerer Plaz, wärend de Client déiselwecht Stëllt gesäit.

Liest de Feeler an där Rei, well vun der Client-Säit aus gesinn déi zwou Konditiounen identesch aus. En Tunnel, dee verbonnen mellt, wärend näischt äntwert, ass d'Signatur vun engem Topologieproblem an net vun enger schlechter Verschlësselung.

Besëtzt d'Instanz den Tunnel-Pool

Gitt der VM en sekundäre Beräich bannent hirem eegene Subnetz a loosst dann OpenVPN Adressen genau aus deem Beräich ausdeelen. Op enger Instanz, där hir Primäradress 10.156.0.10/20 ass, hält en /28-Alias de Pool vun den Adressen getrennt, déi aner Instanzen schonn hunn:

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

D'server-Direktiv muss dann deeselwechte Block beschreiwen. Hir éischt Adress gëtt de Tunnel-Gateway, an déi reschtlech Adressen gi un d'Clienten ausgedeelt. Zwee Zuelen beschreiwen hei ee Block, en Netz an eng Netmask, an dat ass d'Pool-Syntax, déi OpenVPN nach ëmmer erwaart.

server 10.156.1.0 255.255.255.240

Bestätegt, datt d'Adress wierklech op d'Schnittstell komm ass an net nëmmen an der OpenVPN-Konfiguratioun steet. De Fabric leet weider, wat d'NIC mellt, net wat den Daemon gleeft. Een eenzegen Uerder entscheet et:

ip -4 addr show dev eth0

Eng sekundär Adress, déi ni eth0 erreecht, oder e Pool, deen en anert Subnetz iwwerlappt, weist sech méi spéit als sporadesche Verloscht an net als Startfeeler. Den Daemon startet, Clienten verbannen, a just verschidden Ziler behuelen sech falsch. Hält den Alias-Beräich kleng, sou datt de Pool an enger Routentabell liicht z'erkennen ass. Schneit en ni aus engem Subnetz eraus, dat eng aner Instanz schonn benotzt.

Dem Réckverkéier en Next Hop ginn

Eng Äntwert vun engem Host aus der VPC ass un eng Clientadress am Tunnel-Pool adresséiert, déi zu kengem Subnetz gehéiert, dat d'VPC kennt. Ouni eng Route fir dee Pool bleift d'Äntwert beim éischten Hop ouni Treffer stoen, an d'Ufro kann um aneren Enn ganz gutt erfollegräich gewiescht sinn.

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

Déiselwecht Route ass fir all Préfix néideg, deen hannert engem Client läit amplaz an der VPC. Déi Préfixen brauchen och en iroute-Andrag an der ccd-Datei vun deem Client. Dee Andrag ass Buchhaltung op der Server-Säit: en erzielt dem Server, wéi ee Client de Préfix besëtzt, an en installéiert näischt um Client selwer.

Behält d'push-Lëscht fir d'Client-Säit vum Gespréich, well se nëmmen Routen op der Maschinn dobäisetzt, déi sech verbënnt. Eng push-Zeil fir en VPC-Subnetz an eng VPC-Route zréck an de Pool sinn zwou Hälften vum selwechte Wee, a jiddwer Halschecht eleng produzéiert en Tunnel, deen Ufroe bréngt, awer keng Äntwerten.

Firewalls, Weiderleedung an d'Hoppen dertëscht

D'VPC-Firewall bewäert de Paket nom Auskapselen, also muss eng Ingress-Reeg den Tunnel-Pool an all Site-Préfix erlaben, deen d'VM op deem Wee erreecht. Eng Default-Deny-Haltung feelt hei stëll: de Paket gëtt nom Auskapselen verworf, an d'OpenVPN-Log weist eng gesond Sessioun.

Op all Linux-Host, deen weiderleet amplaz ze terminéieren, kontrolléiert, ob net.ipv4.ip_forward aktivéiert ass. D'Besëtzregel gëllt och do: eng Këscht, déi fir en Subnetz weiderleet, deen se net huet, verwërft de Paket genee sou wéi d'VM. Liest de Wäert, ier Dir den Tunnel beschëllegt.

Wann genau ee Préfix feelt

De partiellen Ausfall ass dee Fall, deen am einfachsten ze liesen ass, well alles aneres um Wee schonn nogewise gouf. Fänkt mat der Routelëscht un a liest den Zilberäich an den Next Hop vum Andrag, deen de Préfix sollt decken, liest dann d'Instanzbeschreiwung a vergläicht hire Alias-Beräich mam Pool, deen de Server ausdeelt.

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

Eng feelend Route weist sech als keen Next Hop fir de Préfix, wärend en feelenden Alias sech als e Paket weist, deen op der Schnittstell verluere geet; vun der Client-Säit aus gesinn déi zwee sech ähnlech an an deenen zwou Ausgabe si si komplett ënnerschiddlech. Wa béid do sinn, ass de verbleiwwende Verdächtegen den ccd-iroute fir de Client, dee de Préfix behaapt.

Schreift déi véier Wäerter nieft den Tunnel: Alias-Beräich, Server-Pool, gepushte Préfixen, VPC-Routen. En alen Alias brécht all Pooladress, eng al Route brécht eng Richtung, en feelende push verstoppt de Préfix virum Client, an en falschen iroute schéckt de Préfix un de falschen Peer. Déi nächst Persoun, déi en Subnetz dobäisetzt, brauch all véier op enger Plaz, an d'Notiz ass méi bëlleg wéi den Owend.

Ähnlech Artikelen