Запыт да базы даных завісае праз IPsec: пераўпарадкаванне UDP ці TCP?
Запыт, які завісае пасля чыстага рукапаціску, паказвае ўнутр шляху тунеля. Тры ўмовы вызначаюць, ці выпраўляць шлях, ці вяртацца да TCP на 443.
Запыт, які завісае пасля рукапаціску TCP, не з'яўляецца праблемай маршрутызацыі. Памылкі маршруту вядуць да збою рукапаціску, таму сеанс, які ўстанавіўся і затым змоўк, паказвае ўнутр шляху: інспекцыя, MTU або спосаб, якім прыходзяць UDP-пакеты тунеля. Рашэнне перад вамі: выправіць гэты шлях або перавесці тунель на TCP. Тры ўмовы вырашаюць гэта, і ні адна з іх не пра базу даных.
Класіфікуйце завісанне, перш чым вінаваціць тунель
Чатыры вынікі выглядаюць аднолькава для карыстальніка і азначаюць зусім рознае для інжынера.
| What the client sees | What it rules out |
|---|---|
| Connection refused | Nothing is listening on the address and port the client reached |
| Timeout before the handshake | A filter, a missing route, or the wrong address |
| Handshake completes, query hangs | The session exists, so look at inspection, MTU and packet order |
| Stalls that recover on retry | Often 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.
Праверце абодва транспарты малым запытам і вялікім наборам вынікаў. Пераўпарадкаванне праяўляецца як завісанні, залежныя ад памеру, а збой слухача спыняе абодва памеры аднолькава.