IKEv2 выкарыстоўвае UDP 500 і 4500: які з іх нясе даныя?
Першы абмен і шлях, які нясе даныя, — не адзін і той жа паток. Праверце абодва парты і памятайце, што ўласны ESP — гэта нумар пратакола, а не порт.
Адкрыццё UDP 500 у файрволе дазваляе тунелю дамовіцца, а затым злучэнне перастае прапускаць трафік. Спіс партоў быў няпоўным, а не памылковым. IKEv2 пачынаецца на адным сокеце і ў многіх рэальных разгортваннях працягваецца на іншым, а карысная нагрузка можа зусім не быць портам. Чытанне этапаў па парадку тлумачыць, якое правіла адсутнічае.
Два парты, дзве задачы
IKEv2 пачынаецца з абмену ключамі па UDP 500, дзе бакі аўтэнтыфікуюцца і ўсталёўваюць асацыяцыю бяспекі для тунеля. Шлях даных, які ідзе далей, — асобная справа: гэта можа быць уласны ESP, які з'яўляецца нумарам IP-пратакола, а не портам, або трафік, інкапсуляваны ў UDP на 4500. Размежаванне гэтага пры праверцы файрвола — розніца паміж тунелем, які дамаўляецца, і тунелем, які працуе. Адзін сокет нясе кіраванне, а другі — нагрузку.
Менавіта таму правіла, якое дазваляе толькі 500, дае самы заблытаны сімптом ва ўсім сямействе пратаколаў: перамовы паспяховыя, а далей нічога карыснага не ідзе. Стан паказвае партнёра, журнал паказвае ўсталяваную IKE SA, а праграма ўсё роўна атрымлівае тайм-аўт. Адсутнае дазволенае правіла належыць іншаму патоку, чым той, што толькі што атрымаўся.
Чаму 4500 наогул існуе
Многія прылады NAT не могуць прапускаць пратакол, адрозны ад TCP ці UDP, а некаторыя перапісваюць адрасы так, што ламаюць праверку цэласнасці ESP. Інкапсуляцыя ESP у UDP вырашае абедзве праблемы, каштуючы дадатковага загалоўка і другога порта, які трэба дазволіць. Менавіта гэтая інкапсуляцыя і ёсць прычына існавання другога порта.
Пасля выяўлення NAT сам IKE таксама пераходзіць на 4500, каб увесь трафік ішоў адным шляхам праз транслятар. Чатырохбайтавы маркер, які не з'яўляецца ESP, адрознівае кіравальныя паведамленні ад даных на гэтым сокеце. Пераключэнне — гэта рашэнне пратакола, а не перавага адміністратара.
Дзе змяняецца зыходны порт
Транслятар можа перапісаць зыходны порт кліента, таму картэж, які бачыць сервер, не супадае з картэжам на кліенце. Паглядзіце на абодва бакі кожнага скока NAT, перш чым рабіць выснову, што правіла ігнаруецца. Дыягностыка толькі на кліенце можа даць правіла, якое выглядае слушным і ўсё роўна не працуе.
Рэалізацыі з падтрымкай MOBIKE таксама могуць пераходзіць на 4500 без выяўленага NAT, а некаторыя разгортванні наўмысна прымушаюць гэты шлях. Таму бачыць 4500 — гэта сведчанне рашэння, а не доказ хатняга роўтара.
Правярайце абодва патокі на кожнай мяжы
Прайдзіце тры межы: сетку кліента, любы прамежкавы файрвол і сервер. Кожнай патрэбныя патокі, якія дакументуе разгортванне, а не патокі з артыкула пра іншы выпадак.
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
sudo iptables -S | grep -E '500|4500|esp'
ip xfrm state
Радок ESP у спісе файрвола — гэта супадзенне пратакола, таму правіла порта ніколі яго не пакрывае. Калі аператар выкарыстоўвае нестандартны порт, прытрымлівайцеся дакументаванай канфігурацыі на абодвух баках, бо кліент не можа стварыць слухача на серверы, выбраўшы знаёмы нумар.
Запішыце, дзе спыніліся перамовы і ці была ўсталявана даччыная асацыяцыя бяспекі, бо гэтая пара аддзяляе заблакаваны шлях ад памылкі аўтэнтыфікацыі ці палітыкі. Затым паўтарыце тэст з уключанай праверкай сервера, бо дасяжнасць — гэта не аўтэнтыфікацыя. Гэты апошні крок аддзяляе дазволены порт ад даверанага боку.