Выяўленне NAT адказвае на адно пытанне: ці змяніліся адрасы або порты па дарозе? Яно не адказвае, ці дазваляе міжсеткавы экран IP-пратакол 50. Пляцовачныя шлюзы без любой трансляцыі могуць па-ранейшаму стаяць за палітыкай, якая скідвае native ESP, і гэта патрабаванне трэба наладзіць, а не выявіць. Механізм — ESP-in-UDP, і гэта рашэнне, а не запасны варыянт, які з'яўляецца сам сабой.

Выяўленне — гэта арыфметыка над адрасамі, а не праверка міжсеткавага экрана

IKEv2 пераносіць карысныя нагрузкі выяўлення NAT з хэшамі адрасоў і партоў крыніцы і прызначэння. Кожны бок параўноўвае атрыманае з тым, што бачыць лакальна, і неадпаведнасць паведамляе яму, што нешта транслявала пакет. Нішто ў гэтым абмене не правярае, ці перадае маршрутызатар пасярэдзіне пратакол 50.

Варта проста сказаць пра практычныя наступствы. Тунель, які працаваў з native ESP, сам не выявіць новы абмежавальны міжсеткавы экран, і яго наступная спроба праваліцца на этапе даных, пакуль IKE працягвае паспяваць. Вы ўбачыце ўсталяваныя асацыяцыі бяспекі IKE і адсутнасць абароненага трафіку, што выглядае як памылка маршрутызацыі, пакуль вы не зробіце захоп на дроце.

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

Як encap змяняе абмен

У сучасным разгортванні strongSwan, якое кіруецца праз swanctl.conf, устаноўка encap = yes на злучэнні ўплывае на абмен выяўлення NAT так, што абодва бакі выкарыстоўваюць UDP-інкапсуляцыю для ESP. Абароненыя пакеты затым ідуць унутры UDP, звычайна на порце 4500, і абодва канцы павінны дамовіцца пра такую схему.

connections {
    site {
        encap = yes
        # existing approved peer, authentication and child settings
    }
}

Гэты фрагмент належыць унутр рэальнага вызначэння злучэння і не з'яўляецца поўным профілем пляцоўкі. Пакіньце адрасы партнёраў, аўтэнтыфікацыю і селектары трафіку child, якія вы ўжо выкарыстоўваеце; адзіны дададзены ключ змяняе тое, як заварочваюцца абароненыя даныя, а не тое, што яны абараняюць.

Кіраўніцтва strongSwan па NAT-traversal апісвае гэтыя паводзіны, уключаючы ўзаемадзеянне з плыннем порта, калі выкарыстоўваецца MOBIKE.

Выкарыстоўвайце наладку, якая належыць вашаму бэкенду

У strongSwan два бэкенды канфігурацыі, і ключ адрозніваецца паміж імі. swanctl.conf злучэнне прымае encap, а састарэлае ipsec.conf злучэнне прымае forceencaps. Перанос ключавога слова аднаго бэкенда ў іншы стварае канфігурацыю, якая загружаецца без скаргаў і нічога не змяняе, што горш за памылку.

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

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

Правярайце загорнутыя даныя, а не толькі порт

Рабіце захоп на шлюзе, пакуль ідзе абаронены трафік, затым параўнайце гэта з уласным выглядам strongSwan:

$ sudo tcpdump -ni eth0 'udp port 4500' -c 20
$ sudo swanctl --list-sas --ike site
$ sudo ip xfrm state list

Native ESP выглядае як IP-пратакол 50 і зусім не падобны на UDP. Загорнуты ESP выглядае як UDP-датаграмы на 4500, нагрузка якіх не IKE. Трафік IKE на тым жа порце не з'яўляецца доказам інкапсуляцыі, бо MOBIKE можа перанесці IKE туды, пакуль шлях даных застаецца native, таму чытайце нагрузку, а не нумар порта.

Майте на ўвазе і MTU шляху. Абгортка дадае накладныя выдаткі, і шлях, які перавозіў native ESP, можа запатрабаваць карэкціроўкі, калі пакеты падрастаюць. Неабходная апрацоўка ICMP павінна ўжо быць часткай дызайну; інкапсуляцыя не выдаляе гэтую залежнасць.

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

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