Log ukazuje stejný požadavek IKE dvakrát, někdo ukazuje na mobilní uplink a tiket se uzavře s domněnkou. Ta domněnka je mýtus: opakovaný paket je pozorování o jedné výměně, ne diagnóza linku. Opětovné odeslání je normální chování s vlastními pravidly a objevuje se na zdravých cestách, kdykoli je odpověď pomalá. Sledujte odpověď, než obviníte rozhraní.

Mýtus: opakovaný požadavek dokazuje ztrátu na jednom linku

Dvě různé věci vytvářejí duplikát a ani jedna nejmenuje viníka. Žadatel může požadavek zopakovat, protože nedostal odpověď, nebo odposlouchávací bod může ukázat stejný paket dvakrát podle toho, kde je připojen ke zásobníku. Sonda, která vidí vstup i výstup na stejném hostiteli, ochotně zapíše jeden paket jako dva, a operátor čtoucí tento log nemá bez identifikátorů výměny jak rozdíl poznat. Berte duplikát jako událost časovače, dokud nemůžete říct, kterou z těch dvou věcí držíte.

Dva uplinky zmatení spíš zhorší než zlepší. Jeden řádek logu jmenuje jedno rozhraní, zatímco odpověď mohla odejít druhým, takže rozhraní ve zprávě popisuje, kde byl paket viděn, a ne tvar konverzace. Proto je první otázkou, na kterou výměnu se díváte, a ne který link je vadný.

Co vám opakované odeslání skutečně říká

V IKEv2 funguje opakované odeslání takto: žadatel zopakuje požadavek, když nedorazila odpověď, a respondent může znovu odeslat svou uloženou odpověď, místo aby počítal novou. Identifikátory zpráv patří této výměně, a právě proto je opakovaný požadavek se stejným identifikátorem rozpoznatelný jako práce protokolu, nikoli jako nový pokus. Počáteční pokus často potřebuje k propojení víc než zdrojovou adresu nebo SPI iniciátora, takže vlastní záznam výměny platformy je lepší než výpis paketů. IKEv1 se řídí jinými pravidly s jinými identifikátory a upozornění dodavatele na duplikát prvního paketu neznamená ve všech verzích totéž.

Časové razítko opakovaného odeslání vám tedy říká, že vypršel časovač. Neříká, který skok byl pomalý, a rozhodně neříká, že je na vině operátor. To jsou oddělená tvrzení a v tiketu je užitečné jen to druhé.

Praktickým důsledkem je zaznamenat výměnu dřív, než uděláte závěr. Poznamenejte místní přijímací adresu, cestu odpovědi, kterou zvolila politika, dvojici protějšku a identifikátory výměny na jedno místo, protože každý z nich odpovídá na jinou otázku, když se záznam později čte.

Čtyři pozorovací body jako jeden řetěz

Berte výměnu jako čtyři články řetězu, ne jako čtyři oddělená místa, kam se dívat. Článek drží důkaz, nebo zůstává neznámý, a řetěz je jen tak informativní, jaký je jeho nejslabší zaznamenaný článek. Tabulka níže je inventář: co může každá pozice prokázat a co nechává nedotčené.

PoziceDůkaz, který může poskytnoutCo nechává otevřené
Iniciátor odesíláPožadavek opustil tohoto hostiteleZda dorazil k protějšku
Respondent přijímáPožadavek dorazilZda vznikla odpověď
Respondent odesíláOdpověď opustila bránuZda šla zamýšlenou cestou
Iniciátor přijímáVýměna byla dokončenaZda politika výsledek přijala

Vyplňujte řetěz jen tam, kde máte přístup, a zbytek označte jako neznámý, místo abyste ho odvozovali. Háček, který zaznamenává pakety na jednom stroji, neříká nic o tom, co přijal vzdálený stroj, a řádek logu, že byl požadavek viděn, není důkazem, že někdy odešla odpověď. Poctivé mezery jsou užitečnější než záznam, který vypadá úplně a je postavený na domněnkách.

Najděte první chybějící přechod

Projděte řetěz od iniciátora ven a zastavte se u prvního článku bez důkazu. Pokud brána požadavek nikdy nezaznamená, závada je na cestě před ní. Když brána zaznamenává stejný požadavek znovu a znovu, zatímco klient nikdy nezaznamená odpověď, podezřelý je zpětný směr: zdrojová adresa, překlad a filtrování na každé hranici, kterou ovládáte. Pokud odpověď dorazí a klient přesto nepokračuje, otázka opustila transport a stala se politikou nebo stavem.

Při porovnávání držte protějšek a protokol pevné a pamatujte, že zpoždění, ztráta, politika a stav vytvářejí pokaždé jinou časovou osu. Mobilní síť není automaticky příčinou a pevná linka není automaticky dost spolehlivá pro každý požadavek. Zachyťte oba směry, dokud výměna běží:

tcpdump -ni any -vv 'udp port 500 or udp port 4500'

Když přístup skončí před vzdáleným koncem, záznam stále pomáhá, pokud říká, kde končí. Zachycení jen na iniciátoru může ukázat odcházející požadavek a žádnou přicházející odpověď, což zúží závadu na vše po tomto háčku, aniž by předstíralo, že ví, který skok ji zahodil. Označte vzdálené články jako neznámé a nechte je vyplnit dalšího člověka s přístupem. Takto zapsaný záznam zůstává poctivý a přitom krátký.

Porovnávejte, než cokoli změníte. Opakování stejného požadavku vůči stejnému protějšku se stejným protokolem udržuje proměnné spočitatelné, zatímco reset, obnovení klíče nebo úprava politiky mezi zachyceními srovnání ničí. Pokud je změna nevyhnutelná, zachyťte hned po ní, aby před a po stále popisovalo tutéž výměnu.

Co říká užitečná zpráva

Zpráva, která stojí za akci, spojuje jeden požadavek s jeho odpovědí a pojmenuje první krok, za kterým nestojí důkaz. Ta věta přežije čtení o týden později inženýrem, který tam nebyl, a dává dalšímu člověku místo, kde začít, ne podezřelého.

Nikdy neoslabujte kontroly identity ani nerozšiřujte povolenou sadu protokolů jen kvůli ověření teorie opakovaného odeslání. Před jakýmkoli resetem uložte původní pakety a záznamy událostí, protože reset ničí přesně ten materiál, který jste se chystali shromáždit, a maže časování, které ukazovalo, kde se výměna zasekla.

Mýtus je, že jeden duplikát dokazuje vinu operátora. Realita je, že jeden duplikát dokazuje, že vypršel časovač, a odpověď žije na cestě odpovědi.

Související články