Дубляваныя пакеты IKE: знайдзіце прапушчаны пераход
Паўтораны запыт IKE — гэта падзея таймера, а не дыягназ. Пабудуйце адзін ланцужок доказаў ад ініцыятара да адказу, з правільнымі ідэнтыфікатарамі версіі.
Журнал паказвае той жа запыт IKE двойчы, хтосьці паказвае на мабільны аплінк, і заяўка закрываецца здагадкай. Гэтая здагадка і ёсць міф: паўтораны пакет — назіранне пра адзін абмен, а не дыягназ канала. Паўторная перадача — нармальныя паводзіны са сваімі правіламі, і яны з'яўляюцца на здаровых шляхах, калі адказ павольны. Прасачыце адказ, перш чым вінаваціць інтэрфейс.
Міф: паўтораны запыт даказвае страту на адным канале
Дзве розныя рэчы ствараюць дубль, і ні адна з іх не называе віноўніка. Запытчык можа паўтарыць запыт, бо не атрымаў адказу, або пункт захопу можа паказаць той жа пакет двойчы з-за таго, дзе ён падключаны да стэка. Кран, які бачыць уваход і выхад на адным хасце, з задавальненнем запіша адзін пакет як два, і аператар, чытаючы гэты журнал, не мае спосабу адрозніць іх без ідэнтыфікатараў абмену. Разглядайце дубль як падзею таймера, пакуль не зможаце сказаць, які з двух у вас у руках.
Два аплінкі робяць блытаніну горш, а не лепш. Адзін радок журнала называе адзін інтэрфейс, а адказ мог выйсці праз другі, таму інтэрфейс у паведамленні апісвае, дзе пакет быў убачаны, а не форму размовы. Вось чаму першае пытанне — які абмен вы разглядаеце, а не які канал няспраўны.
Што насамрэч кажа паўторная перадача
У IKEv2 паўторная перадача працуе так: запытчык паўтарае запыт, калі адказ не прыйшоў, а рэспандэнт можа паўторна адправіць свой закешаваны адказ замест таго, каб вылічыць новы. Ідэнтыфікатары паведамленняў належаць гэтаму абмену, і менавіта гэта робіць паўтораны запыт з тым жа ідэнтыфікатарам пазнавальным як праца пратакола, а не новая спроба. Пачатковая спроба часта патрабуе большага, чым адрас крыніцы або SPI ініцыятара, для суаднясення, таму ўласны запіс абмену платформы лепш за спіс пакетаў. IKEv1 трымаецца іншых правілаў з іншымі ідэнтыфікатарамі, і папярэджанне пастаўшчыка пра дубль першага пакета не азначае аднаго і таго ж у розных версіях.
Такім чынам, адбітак часу паўторнай перадачы кажа, што таймер скончыўся. Ён не кажа, які скок быў павольным, і ўжо дакладна не кажа, што вінаваты аператар сувязі. Гэта асобныя сцвярджэнні, і толькі другое карыснае ў заяўцы.
Практычная выснова — запісаць абмен, перш чым рабіць выснову. Занатуйце мясцовы адрас прыёму, шлях адказу, абраны палітыкай, картэж партнёра і ідэнтыфікатары абмену ў адным месцы, бо кожны з іх адказвае на іншае пытанне, калі запіс чытаюць пазней.
Чатыры пункты назірання як адзін ланцуг
Уяўляйце абмен як чатыры звёны ланцуга, а не як чатыры асобныя месцы для пошуку. Звяно трымае доказ або застаецца невядомым, і ланцуг інфарматыўны толькі настолькі, наколькі інфарматыўнае яго найслабейшае запісанае звяно. Табліца ніжэй — гэта інвентар: што кожная пазіцыя можа ўстанавіць і што пакідае некранутым.
| Пазіцыя | Доказ, які яна можа даць | Што застаецца адкрытым |
|---|---|---|
| Ініцыятар адпраўляе | Запыт пакінуў гэты хост | Ці дасягнуў ён партнёра |
| Рэспандэнт атрымлівае | Запыт прыбыў | Ці быў створаны адказ |
| Рэспандэнт адпраўляе | Адказ пакінуў шлюз | Ці ішоў ён па меркаваным шляху |
| Ініцыятар атрымлівае | Абмен завяршыўся | Ці прыняла палітыка вынік |
Запаўняйце ланцуг толькі там, дзе ў вас ёсць доступ, а астатняе пазначайце невядомым, а не выводзьце. Хук, які запісвае пакеты на адной машыне, нічога не кажа пра тое, што атрымала далёкая машына, а радок журнала пра ўбачаны запыт не з'яўляецца доказам таго, што адказ калі-небудзь выйшаў. Сумленныя прабелы карыснейшыя за запіс, які выглядае поўным, але пабудаваны на здагадках.
Знайдзіце першы прапушчаны пераход
Ідзіце па ланцугу ад ініцыятара вонкі і спыніцеся на першым звяне без доказаў. Калі шлюз ніколі не запісвае запыт, неспраўнасць на шляху перад ім. Калі шлюз запісвае той жа запыт зноў і зноў, а кліент ніколі не запісвае адказ, падазроным становіцца зваротны кірунак: адрас крыніцы, трансляцыя і фільтраванне на кожнай мяжы, якую вы кантралюеце. Калі адказ прыходзіць, а кліент усё яшчэ не рухаецца далей, пытанне пакінула транспарт і стала палітыкай або станам.
Трымайце партнёра і пратакол нязменнымі, пакуль параўноўваеце, і памятайце, што затрымка, страта, палітыка і стан ствараюць розныя графікі. Мабільная сетка не з'яўляецца прычынай аўтаматычна, а фіксаваная лінія не абавязкова дастаткова надзейная для кожнай патрэбы. Захапіце абодва кірункі, пакуль абмен жывы:
tcpdump -ni any -vv 'udp port 500 or udp port 4500'
Калі доступ спыняецца перад далёкім канцом, запіс усё яшчэ дапамагае, калі ў ім сказана, дзе ён спыняецца. Захоп толькі на ініцыятары можа паказаць запыт, які выходзіць, і адсутнасць адказу, што звужвае неспраўнасць да ўсяго пасля гэтага хука, не выдаючы сябе за веданне таго, які скок яго скінуў. Пазначце далёкія звёны невядомымі і дазвольце наступнаму чалавеку з доступам запоўніць іх. Такі запіс застаецца сумленным і пры гэтым кароткім.
Параўноўвайце, перш чым нешта змяняць. Паўтарэнне таго ж запыту да таго ж партнёра з тым жа пратаколам пакідае зменныя злічальнымі, а скід, перазапуск ключоў або змена палітыкі паміж захопамі знішчае параўнанне. Калі змена непазбежная, рабіце захоп адразу пасля яе, каб да і пасля ўсё яшчэ апісвалі адзін і той жа абмен.
Што кажа карысная справаздача
Справаздача, вартая дзеяння, злучае адзін запыт з яго адказам і называе першы крок, за якім няма доказаў. Гэты сказ вытрымлівае чытанне праз тыдзень інжынерам, якога там не было, і дае наступнаму месца для пачатку, а не падазраванага.
Ніколі не паслабляйце праверкі ідэнтычнасці і не пашырайце дазволены набор пратаколаў толькі дзеля праверкі тэорыі паўторнай перадачы. Захоўвайце зыходныя пакеты і запісы падзей да любога скіду, бо скід знішчае менавіта той матэрыял, які вы збіраліся сабраць, і сцірае хранаметраж, які паказваў, дзе абмен затрымаўся.
Міф у тым, што адзін дубль даказвае віну аператара сувязі. Рэальнасць у тым, што адзін дубль даказвае, што таймер скончыўся, а адказ жыве на шляху адказу.