Een Azure-VM met een VPN-apparaat staat in twee onafhankelijke beslissingssystemen. Azure bepaalt waar een pakket een subnet verlaat, met behulp van routetabellen en de doorstuurinstelling van de NIC. Het besturingssysteem van het apparaat zelf bepaalt of het het ontsleutelde pakket doorstuurt. Een tunnel die perfect opkomt, kan alsnog falen op het tweede systeem, en daar stoppen de meeste van deze implementaties.

Drie eigenaren van één pad

Neem een filiaalnetwerk van 192.168.50.0/24 en een workload-subnet van 10.0.10.0/24, met het apparaat op 10.0.0.4 in zijn eigen subnet. Eén verzoek raakt drie afzonderlijke configuraties.

DecisionConfigured inHow it fails
Where the workload subnet sends branch trafficAzure route table entryTraffic leaves the subnet and never reaches the appliance
Whether a NIC may accept traffic not addressed to itAzure NIC IP forwardingPackets arrive and disappear at the interface
Whether the guest forwards decrypted trafficGuest OS or vendor appliance policyTunnel is up, workload is unreachable
Whether the workload accepts the sourceNSG and service policyRequests delivered, replies refused

Elke rij is in de meeste organisaties eigendom van een ander team, en daarom komt deze storing meestal binnen als drie tickets in plaats van één.

De route die naar het apparaat wijst

Koppel een routetabel aan het workload-subnet en geef het filiaalprefix een volgende hop van het type Virtual appliance met 10.0.0.4 als adres. Gebruik het bereikbare privéadres van het apparaat, nooit zijn openbare VPN-instappunt. De volgende hop moet een adres zijn dat het workload-subnet al kan bereiken. Laat de rest van de routering van de workload met rust, tenzij u bewust hebt besloten de standaardroute te vervangen.

Houd het apparaat in zijn eigen subnet en zorg dat de route die filiaalverkeer naar het apparaat stuurt niet ook het eigen uitgaande pad van het apparaat vangt. Zo'n lus ziet eruit als een gezonde tunnel zonder antwoorden, en dat is een ellendig iets om om 2 uur 's nachts te debuggen.

De NIC-vlag die iedereen vergeet

Azure heeft een IP-doorstuurinstelling per NIC, en die staat standaard uit. Die bestaat omdat een doorsturende NIC pakketten ontvangt die aan iets anders zijn geadresseerd, en die stil laten vallen is de veilige standaard voor alle anderen.

az network nic update --resource-group rg-net --name appliance-nic --ip-forwarding true zet hem aan voor één interface. De richtlijnen van Microsoft over doorsturen op de NIC eisen de instelling op elke aangesloten NIC die verkeer doorstuurt, dus een apparaat met één NIC moet hem daar nog steeds op die NIC instellen.

De vlag is geen route en geen firewallregel. Hem aanzetten geeft toestemming en niets meer.

Wat de gast met het ontsleutelde pakket doet

Zodra de tunnel eindigt, neemt de eigen stack van het apparaat de volgende beslissing. Op een Linux-gast is IPv4-doorsturen een instelling tijdens runtime, en sysctl -w net.ipv4.ip_forward=1 blijft geldig tot de volgende keer opstarten. Sla hem in plaats daarvan op in een bestand onder /etc/sysctl.d/ blijvend. Een apparaat van een leverancier heeft zijn eigen equivalent, en Linux-instructies die in een leveranciersplatform worden geplakt, doen meestal helemaal niets.

Het firewallbeleid van de gast is weer apart, en dat geldt ook voor de netwerkbeveiligingsgroep van de workload. UDP 500 en 4500 naar het openbare adres van de VM toestaan beschermt de tunnel; het zegt niets over de vraag of een ontsleuteld filiaalverzoek een workload-poort kan bereiken.

Volg één verzoek en het antwoord

Kies één toegestane stroom en volg die van begin tot eind. Het filiaal heeft een route nodig voor 10.0.10.0/24 via de siteverbinding, het apparaat heeft een afleverpad naar het workload-subnet nodig, en het workload-subnet heeft een retourroute naar het filiaal nodig.

Bepaal vroeg of het ontwerp het bronadres van het filiaal behoudt of vertaalt. NAT verandert wat de workload ziet, dus de toegangsregels moeten het model beschrijven dat u werkelijk hebt gekozen en niet een geraden gatewayadres.

Een geslaagde handdruk bewijst één schakel van die keten. Het pad is compleet wanneer het antwoord via hetzelfde apparaat terugkomt en het eigen beleid van de workload dat toestaat.

Gerelateerde artikelen