De bron-/bestemmingscontrole is één poort, niet het hele VPN-pad
Een doorsturende instantie heeft AWS-toestemming nodig, plus Linux-routes en firewallregels. Controleer de bron-/bestemmingsvalidatie op de instantie die doorstuurt.
De VPN eindigt op een EC2-instantie, je kunt het tunneladres van die instantie bereiken, en verkeer dat er via die instantie naar een andere private host moest, verdwijnt. Dat zijn twee verschillende tests, en ze door elkaar halen kost uren. De eerste vraagt of je de instantie kunt bereiken; de tweede vraagt of zij verkeer doorstuurt voor een bestemming die niet de hare is, wat Linux-doorsturing, een firewallbeleid, een route aan de andere kant en een machtiging op AWS-niveau vereist die niets met het gastbesturingssysteem te maken heeft. Niets in de console vestigt de aandacht op dat verschil. Het symptoom lijkt op een routeringsfout, en dat is het meestal niet.
Scheid de twee tests voordat je iets verandert
De gateway bereiken bewijst de tunnel, de route naar het adres en de beveiligingsgroep die de uitwisseling toestaat. Doorsturing voor een andere host bewijst daar niets van: ze gebruikt een ander bronadres, een andere bestemming en een instantie in een rol waarvoor ze niet per se is gebouwd. Schrijf de twee tests apart op en noteer welke faalt, want de correctie voor elk ligt in een andere console. Een gateway-instantie die alleen is gebouwd om tunnels te beëindigen heeft geen reden om voor iets anders door te sturen, en de standaardwaarden weerspiegelen dat. Daarom heeft de tweede test zijn eigen opzet nodig, niet een kleine aanpassing van de eerste.
Een ping die naar de gateway werkt en een ping die naar de host erachter faalt, is geen wisselvallig probleem. Het is het verwachte gedrag van een instantie die niet is verteld dat ze mag doorsturen.
Schrijf het pad op voordat je een instelling aanraakt
Noteer het cliëntprefix, de doorsturende instantie of netwerkinterface, het doelsubnet en de retourroute. Een vermelding in de VPC-routetabel die naar een instantie wijst, configureert het besturingssysteem van de instantie niet voor doorsturing, en een gastkernel met doorsturing aan maakt geen VPC-route. Beide uiteinden van die relatie moeten bestaan, en ze worden op verschillende plekken door mensen met verschillende toegang bewerkt.
Onderzoek daarna de instelling voor de bron-/bestemmingscontrole op de daadwerkelijke doorstuurcomponent, niet op elke instantie in de VPC. AWS documenteert waarom een instantie die verkeer voor anderen doorstuurt die controle uitgeschakeld moet hebben, en ook waarom de instelling een beslissing per instantie is en geen standaard voor de hele VPC.
Vier grenzen, en de controle is er maar één van
Behandel het pad als vier vragen en beantwoord ze in volgorde. Het eerste antwoord dat faalt is waar het werk zit, en geen van de andere zal dat compenseren.
| Boundary | Question it answers |
|---|---|
| VPC route tables | Do the destinations and replies select the intended gateway? |
| Forwarding instance | Do the AWS check and the guest OS both permit forwarding? |
| Access policy | Do security groups, ACLs and host rules allow the exchange? |
| Destination | Can the service accept that source and return a reply? |
De volgorde is belangrijk omdat controleren goedkoop is: routes zijn op één pagina zichtbaar, de controle is één attribuut, en de mening van de bestemming is meestal het laatste waar iemand naar vraagt.
Vertaling verandert welke bron de bestemming ziet
Een gerouteerd ontwerp behoudt het bronadres van de cliënt, dus de bestemming heeft een retourroute naar het cliëntprefix nodig. Een vertaald ontwerp presenteert in plaats daarvan het adres van de gateway, wat die eis wegneemt en vervangt door een statustabel op de gateway. Beslis volgens de architectuur die je bedoelt, in plaats van vertaling toe te voegen omdat een ongerelateerd voorbeeld het gebruikte en het leek te werken.
Als je vertaalt, beperk de regel dan tot het cliëntprefix en de bedoelde bestemming. Als je behoudt, bevestig dan dat de andere kant de route echt kent in plaats van aan te nemen dat ze er een leert.
Test vanaf de oorspronkelijke cliënt en behoud daarna de wijziging
Een verzoek dat op de gateway wordt gegenereerd kan slagen terwijl een doorgestuurd verzoek faalt, omdat het een andere bron en een ander doorstuurgeval is. Herhaal na een gerichte correctie de exacte cliënt-naar-bron-test die faalde, vanaf dezelfde cliënt, en bevestig dat het antwoord terugkomt en niet alleen dat het verzoek aankwam.
Zet de instelling ten slotte in de beheerde configuratie van de gateway zodat een vervangende instantie haar ontvangt. Een geslaagde test die van een handmatige uitzondering afhangt is een test die bij de volgende herbouw verloopt, en de persoon die hem ontdekte zal er niet zijn om zich te herinneren waarom.