IKE през TCP 4500: проверете двете страни преди правилото за порта
TCP инкапсулацията се договаря от двете страни, а не се дава от правило на защитната стена. Изпълнете проверката на слушателя, прихващането и четирите етапа на приемане по ред.
Тикетите за поддръжка често идват с вече одобрена промяна на защитната стена и тунел, който все още отказва да се вдигне. Това е очакваният резултат, когато само едната страна има функцията: TCP инкапсулацията по RFC 9329 трябва да бъде реализирана и настроена на двете страни, а договарянето става вътре в връзката, преди да тръгне какъвто и да е защитен трафик. Отварянето на порт обявява слушател, който може да не съществува, а слушател без съответстваща конфигурация от другата страна приема връзка и след това млъква. Последователността по-долу поставя евтините проверки първи.
Знайте какво всъщност добавя опцията
Вграденият IPsec пренася криптирани полезни товари като IP протокол 50, без номер на порт, който да се разрешава. NAT traversal обвива тези пакети в UDP към порт 4500, затова толкова много правила на защитната стена споменават този порт. RFC 9329 добавя представяне като поток: пакетите на IKE и IPsec пътуват и двете вътре в една TCP връзка, обикновено към порт 4500.
Потокът не е уеб услуга. TCP връзка към 4500 не казва нищо за HTTP, TLS или приятелство с прокси, а HTTP прокси по пътя обикновено ще счупи рамкирането, вместо да го пренесе.
Предварителна проверка, преди да пипате защитната стена
Стандартът поставя TCP като резервен вариант за мрежи, които изхвърлят пътя по UDP, а не като негова замяна. Вземете два факта от всеки доставчик: точното име на функцията и версията, която прилага RFC 9329, а не собствен вариант. Етикети като IPsec over TCP са били използвани за несвързани решения, затова поискайте препратката към документа и конфигурационния ключ, който я включва. Без двата отговора не предполагайте нищо за съвместимостта по кабела.
Докажете го в лаборатория, където двата края са ваши. Шлюз, който отговаря на TCP 4500, но никога не завършва IKE, е отпечатъкът на слушател без съответстваща инкапсулация от другата страна, и е много по-евтино да го откриете там, отколкото по време на прозорец за промяна.
На ответника: има ли слушател
Започнете със сокета. ss -ltnp | grep 4500 показва дали съществува TCP слушател и кой процес го притежава. Липсата на ред приключва разследването при конфигурацията на шлюза, а не при мрежата.
Ако сокетът е там, наблюдавайте ръкостискането, вместо да гадаете от страната на клиента: tcpdump -ni any 'tcp port 4500'. Завършено тристранно ръкостискане, последвано от тишина, означава, че потокът е приет и IKE обменът вътре в него се е провалил, докато SYN без отговор сочи към филтриране или към грешен адрес.
Сравнете с пътя по UDP в същия прозорец за прихващане, за да не се объркат двете: tcpdump -ni any 'udp port 4500 or proto 50'. Трафик по протокол 50 или UDP порт 4500, докато вярвате, че се използва TCP, означава, че страните така и не са се договорили за резервния вариант. Прихванете и на шлюза, ако можете, защото прихващане от страната на клиента не може да покаже какво е изпратил далечният край.
Приемайте на четири отделни етапа
Разглеждайте вдигането като четири резултата. Всеки може да се провали по различна причина и едно-единствено мина или не мина скрива кой точно, затова спрете на първия етап, който се провали, и започнете отново отгоре.
| Stage | What you check | What it proves |
|---|---|---|
| 1 | TCP connection established to 4500 | A listener exists and the path permits it |
| 2 | IKE_SA authenticated in the gateway log | Both peers agreed on the encapsulation |
| 3 | CHILD_SA installed, visible with ip xfrm state | Keys exist for the protected traffic |
| 4 | A new application exchange succeeds | The data path works, not just the control path |
Четвъртият етап е този, който се пропуска. Съществуваща сесия може да продължи да работи върху кеширано състояние, затова отворете нова връзка към хост зад шлюза, преди да затворите промяната. Ако вторият етап се провали, докато първият минава, разминаването е в предложението или в настройката за инкапсулация, а не в защитната стена.
Връщане назад и цената да го оставите включено
Планирайте отмяната преди промяната: изключете опцията за инкапсулация на двете страни и потвърдете, че тунелът се връща по UDP. Запазете TCP правилото за един цикъл на преглед, в случай че резервният вариант потрябва отново, след което го премахнете. Неизползван слушател на 4500 е повърхност без оперативна стойност.
Следете признака за производителност, щом понесе реална работа. TCP в TCP добавя слоеве за потвърждение, които засичат при единична загуба, а потоците, споделящи една връзка, могат да се блокират взаимно, затова измервайте приложението, което ще използва тунела, вместо ping.
Списък за приемане
Потвърдете името и версията на функцията в двата края, слушателя на ответника, прихващането, показващо завършено ръкостискане, и четирите етапа, записани с времеви маркери. Добавете причината за резервния вариант към записа за промяната, за да знае следващият инженер защо има TCP. Репетирайте връщането назад, преди да ви потрябва.
Ако който и да е етап се провали, поправете само този етап. Промяната на шифрования набор или настройките за идентичност, за да гоните транспортен проблем, обикновено добавя втори, несвързан провал върху първия.