Запыт, які завісае пасля рукапаціску TCP, не з'яўляецца праблемай маршрутызацыі. Памылкі маршруту вядуць да збою рукапаціску, таму сеанс, які ўстанавіўся і затым змоўк, паказвае ўнутр шляху: інспекцыя, MTU або спосаб, якім прыходзяць UDP-пакеты тунеля. Рашэнне перад вамі: выправіць гэты шлях або перавесці тунель на TCP. Тры ўмовы вырашаюць гэта, і ні адна з іх не пра базу даных.

Класіфікуйце завісанне, перш чым вінаваціць тунель

Чатыры вынікі выглядаюць аднолькава для карыстальніка і азначаюць зусім рознае для інжынера.

What the client seesWhat it rules out
Connection refusedNothing is listening on the address and port the client reached
Timeout before the handshakeA filter, a missing route, or the wrong address
Handshake completes, query hangsThe session exists, so look at inspection, MTU and packet order
Stalls that recover on retryOften reordering, or a state table entry expiring

Толькі два апошнія радкі апраўдваюць час на тунель. Адмоўленае злучэнне праз VPN — гэта звычайна база даных, якая слухае толькі на loopback, што з'яўляецца праблемай слухача, а тайм-аўт перад рукапаціскам — гэта фільтр або маршрут. Ні адно не паляпшаецца ад змены інкапсуляцыі.

Спачатку запішыце класіфікацыю ў тыкет. Гэта самы танны крок, і ён прыбірае большую частку прасторы пошуку.

Тры ўмовы, якія вызначаюць UDP супраць TCP

Інкапсуляваны трафік IPsec ідзе праз UDP, а UDP дае шляху свабоду пераўпарадкоўваць і губляць пакеты, нікому не паведамляючы. Калі пераўпарадкаванне выпіхвае пакеты за межы акна абароны ад паўтору ў тунелі, яны адкідваюцца моўчкі, і ўнутраны сеанс TCP проста чакае. Менавіта так працуе механізм, калі рукапаціск паспяховы, а запыт ніколі не вяртаецца.

Выправіць шлях або вярнуцца да TCP залежыць ад трох рэчаў. Па-першае, ці ёсць на шляху рэальныя страты пакетаў, ці толькі пераўпарадкаванне? Па-другое, ці можаце вы змяніць месца інспекцыі або выключыць гэты тунель з кампанента, які пераўпарадкоўвае? Па-трэцяе, ці адчувальная нагрузка да карціны завісанняў, напрыклад шматлікія мультыплексаваныя сеансы на адным канале?

Калі першы адказ — страты, а другі — не,TCP на 443 — гэта прагматычны запасны варыянт. Калі другі адказ — так, выпраўце шлях і пакіньце UDP.

Чытайце запіс файрвола, а не памылку праграмы

Праграма паведамляе пра тайм-аўт, што нічога не кажа пра прычыну. Уласны журнал файрвола — гэта месца, дзе з'яўляецца адкідванне або блакаванне, таму фільтруйце па адрасах базы даных і праграмы і шукайце адкіданні разам з прыняццямі.Модулі прадухілення пагроз могуць адкідваць пакеты, не ствараючы памылкі на ўзроўні праграмы, і гэта якраз форма запыту, які завісае. Цішыня ў журнале таксама з'яўляецца дадзенымі: яна паказвае на тое, што не піша ў журнал, напрыклад пераўпарадкаванне.

Праверце таксама кластар. Няправільна наладжаны кластар можа трымаць сеанс у табліцы станаў на адным члене, пакуль пакеты ідуць шляхам іншага члена, таму адказы прыходзяць туды, дзе стану няма. Такія завісанні выглядаюць выпадковымі і не карэлююць з нагрузкай.

Параўнайце абодва канцы, перш чым нешта змяняць, і параўноўвайце парадак прыходу, а не колькасць пакетаў:

tcpdump -ni any udp port 4500 -w /tmp/encap.pcap
tcpdump -ni any tcp port 5432 -w /tmp/inner.pcap

Колькі насамрэч каштуе TCP на 443

Перанос тунеля на TCP прыбірае сімптом пераўпарадкавання, бо пасрэднік цяпер бачыць упарадкаваны паток. Ён таксама стварае TCP-па-над-TCP. Знешняе злучэнне паўторна перадае тое, што ўнутранае ўжо перадало паўторна, і адна страта можа спыніць усе мультыплексаваныя сеансы адначасова. На чыстым шляху гэта незаўважна. На шляху са стратамі лячэнне горш за сімптом.

Абмен прымальны, калі альтэрнатыва — поўная адсутнасць злучэння, і яго трэба аформіць як выключэнне з уласнікам, а не прымаць як норму.

Запішыце транспарт, порт, прыкладны запыт і вымераны вынік, а таксама дату. Без гэтага запісу наступны інжынер паўторыць эксперымент, і выключэнне ціха стане архітэктурай.

Трымайце рашэнне пераглядальным

Дыягностыка шляху хутка старэе. Пасрэднік замяняюць, канфігурацыя модуля мяняецца, канал абнаўляюць, і прычына для TCP на 443 знікае, а канфігурацыя застаецца. Пастаўце дату перагляду на выключэнне і назвіце ўмову, якая дазволіць вярнуцца да UDP.

Праверце абодва транспарты малым запытам і вялікім наборам вынікаў. Пераўпарадкаванне праяўляецца як завісанні, залежныя ад памеру, а збой слухача спыняе абодва памеры аднолькава.

Падобныя артыкулы