Kontrola zdroje/cíle je jedny vrátka, ne celá cesta VPN
Instance pro předávání potřebuje oprávnění AWS i linuxové trasy a pravidla firewallu. Zkontrolujte validaci zdroje/cíle na instanci, která předává.
VPN končí na instanci EC2, na adresu tunelu této instance se dostanete, a provoz, který měl projít přes ni k jinému soukromému hostiteli, mizí. Jsou to dva různé testy a jejich míchání ztrácí hodiny. První se ptá, zda se na instanci dostanete; druhý chce, aby předávala provoz pro cíl, který není její, což vyžaduje předávání v Linuxu, politiku firewallu, trasu na druhé straně a oprávnění na úrovni AWS, které nemá nic společného s hostujícím operačním systémem. Nic v konzoli na tento rozdíl neupozorňuje. Příznak vypadá jako závada směrování a obvykle jí není.
Oddělte oba testy, než cokoli změníte
Dosažení brány dokazuje tunel, trasu k její adrese a bezpečnostní skupinu, která výměnu umožňuje. Předávání pro jiného hostitele nedokazuje nic z toho: používá jinou zdrojovou adresu, jiný cíl a instanci v roli, pro kterou nemusela být stavěná. Zapište oba testy odděleně a poznamenejte, který selhává, protože oprava každého žije v jiné konzoli. Instance brány stavěná jen k ukončování tunelů nemá důvod cokoli dalšího předávat a její výchozí hodnoty to odrážejí. Proto druhý test potřebuje vlastní nastavení, a ne drobnou úpravu prvního.
Ping, který funguje na bránu, a ping, který selhává na hostitele za ní, není občasný problém. Je to očekávané chování instance, které nebylo řečeno, že smí předávat.
Zapište si cestu, než se dotknete nastavení
Zaznamenejte prefix klienta, instanci nebo síťové rozhraní pro předávání, cílovou podsíť a zpětnou trasu. Záznam v tabulce tras VPC ukazující na instanci nenastavuje operační systém instance k předávání a hostující jádro se zapnutým předáváním nevytváří trasu VPC. Musí existovat oba konce tohoto vztahu a upravují se na různých místech lidmi s různým přístupem.
Potom zkontrolujte nastavení kontroly zdroje/cíle na skutečné komponentě předávání, ne na každé instanci ve VPC. AWS dokumentuje, proč instance, která předává provoz za jiné, musí mít tuto kontrolu vypnutou, i proč je nastavení rozhodnutím pro každou instanci, a ne výchozí hodnotou pro celou VPC.
Čtyři hranice a kontrola je jen jedna z nich
Berte cestu jako čtyři otázky a odpovídejte na ně v pořadí. První selhávající odpověď je místo, kde je práce, a žádná z ostatních to nenahradí.
| 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? |
Pořadí je důležité, protože kontrola je levná: trasy jsou vidět na jedné stránce, kontrola je jediný atribut a názor cíle je obvykle to poslední, na co se někdo ptá.
Překlad mění, který zdroj cíl vidí
Směrovaný návrh zachovává zdrojovou adresu klienta, takže cíl potřebuje zpětnou trasu k prefixu klienta. Přeložený návrh místo toho představuje adresu brány, což tento požadavek odstraňuje a nahrazuje ho tabulkou stavů na bráně. Rozhodněte se podle architektury, kterou zamýšlíte, místo abyste přidávali překlad proto, že ho použil nesouvisející příklad a zdál se funkční.
Pokud překládáte, omezte pravidlo na prefix klienta a zamýšlený cíl. Pokud zachováváte, potvrďte, že druhá strana trasu skutečně zná, místo abyste předpokládali, že se ji naučí.
Testujte z původního klienta a pak změnu ponechte
Požadavek vytvořený na bráně může uspět, zatímco předávaný požadavek selhává, protože jde o jiný zdroj a jiný případ předávání. Po cílené opravě zopakujte přesný test klient až zdroj, který selhal, ze stejného klienta, a potvrďte, že odpověď se vrací, a ne jen že požadavek dorazil.
Nakonec vložte nastavení do spravované konfigurace brány, aby je náhradní instance dostala. Úspěšný test, který závisí na ruční výjimce, je test, který vyprší při příští přestavbě, a člověk, který ho objevil, tam nebude, aby si vzpomněl proč.