Waarom een Azure-VM met VPN-apparaat het retourpad verliest
Een VPN-apparaat in een Azure-VM heeft een UDR, de doorstuurvlag van de NIC en het gastbeleid nodig die met elkaar overeenkomen. Volg één filiaalverzoek door alle drie.
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.
| Decision | Configured in | How it fails |
|---|---|---|
| Where the workload subnet sends branch traffic | Azure route table entry | Traffic leaves the subnet and never reaches the appliance |
| Whether a NIC may accept traffic not addressed to it | Azure NIC IP forwarding | Packets arrive and disappear at the interface |
| Whether the guest forwards decrypted traffic | Guest OS or vendor appliance policy | Tunnel is up, workload is unreachable |
| Whether the workload accepts the source | NSG and service policy | Requests 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.