Формуларите за заштитен ѕид бараат TCP порт, а очигледниот внес е 50. Тој внес не дозволува ништо, бидејќи ESP е IP протокол број 50, а броевите на протоколите не се порти. Двата именски простори делат само мали цели броеви и ништо друго, и грешката останува невидлива сѐ додека IKE не заврши и заштитениот сообраќај никогаш не пристигне.

Два именски простори што делат мали броеви

IP заглавието носи поле за протокол што го именува следното: 6 за TCP, 17 за UDP, 1 за ICMP, 50 за ESP, 51 за AH. TCP или UDP заглавието носи броеви на порти, што избираат процес на целниот домаќин. Протоколот 50 и TCP портата 50 се неповрзани вредности, но дијалогот може да ги направи да изгледаат заменливи.

Затоа правилото за препраќање на порти не може да го изрази изворниот ESP. Нема ESP целна порта што би се препратила, а уредот што разбира само правила за порти воопшто нема речник за тој пакет. Точното правило наместо тоа го именува IP протоколот. Секој дијалог за порти е погрешен алат за тој пакет.

Збунетоста има и втора половина. Кога пакетот е шифриран, сѐ во него е непрозирно, вклучително и TCP заглавието на првобитната врска. Заштитен ѕид што проверува порти во тој пакет гледа во надворешното заглавие, кое во изворниот случај нема порти за проверка.

Изворен ESP, потоа инкапсулираната алтернатива

Изворниот ESP се пренесува директно како IP протокол, што е подеднакво ефикасно и незгодно. Ефикасно е затоа што нема дополнително заглавие, а незгодно затоа што ниту еден уред што преведува адреси и порти не може да го следи. NAT traversal постои за да го реши тоа, така што го завиткува ESP пакетот во UDP за преведувачот да има порти за препишување.

Form on the wireHow it is identifiedWhat the firewall must permit
IKE negotiationUDP with a destination portUDP 500, and 4500 once traversal is detected
Native ESPIP protocol 50 in the outer headerThe protocol itself, with no port to name
ESP inside UDPUDP 4500 carrying an ESP payloadThe UDP port pair, which translation devices can track

Двете форми се алтернативни распоредувања на истиот податочен канал, а не слоеви на еден. Дозволувањето изворен ESP не ја дозволува инкапсулираната форма, а дозволувањето UDP 4500 не дозволува изворен сообраќај, па множеството правила мора да одговара на распоредувањето, а не случајно да ги покрива двете.

И откривањето е важно овде. Крајните точки одлучуваат меѓу формите за време на преговорите, а преминот обично се случува кога меѓу нив ќе се открие NAT. Затоа патеката што се менува откако тунелот е воспоставен може да го премести сообраќајот во именски простор што вашите правила никогаш не го покривале.

Прочитајте која форма врската навистина ја користи

Прашајте ја крајната точка наместо да погодувате од заштитниот ѕид. Во Linux записот за состојба известува дали асоцијацијата користи UDP инкапсулација и кои порти се вклучени. Снимањето пакети одговара на истото прашање од жицата, и двете се побрзи од читање множество правила и надеж.

ip xfrm state | grep -A3 encap
tcpdump -ni any 'ip proto 50 or udp port 4500'

Првата команда покажува тип на инкапсулација кога се користи NAT traversal и ништо кога не се користи. Втората покажува која од двете форми навистина преминува низ интерфејсот, и тоа ги завршува расправиите за конфигурација што изгледа точна на хартија.

Спротивниот доказ припаѓа на истиот чекор. Правило што известува нула совпаѓања ви кажува дека пакетот никогаш не стигнал до него, и тоа сѐ уште е прашање на рутирање или селектор, а не на заштитен ѕид.

Потоа потврдете го контролниот канал одделно. IKE има свои порти и свои дневници, а завршени преговори без податоци се токму поделбата за која е оваа статија.

Напишете го правилото во точниот именски простор

Правилото за протокол и правилото за порта се различни инструкции, па алатката мора да го изрази тоа што го мислите. Во nftables совпаѓањето на протоколот е експлицитно, а инкапсулираната алтернатива добива свое UDP правило. Држете ги двете правила едно до друго за парот да биде видлив при преглед.

nft add rule inet filter input ip protocol esp accept
nft add rule inet filter input udp dport { 500, 4500 } accept

Не попуштајте на искушението да проширите било кое од правилата за да надоместите погрешна дијагноза. Дозволување сѐ за ESP протоколот на секој интерфејс, или UDP дозвола од каде било до каде било, го поправа симптомот и ја отстранува контролата што се обидовте да ја поставите. Тесниот поддржан тек речиси секогаш е доволен штом формата е позната.

Конечно, држете ги слоевите правилно кога тунелот работи, а апликацијата не. Пакетите што пристигнуваат на портата сѐ уште бараат препраќање, повратна рута и политика што ги прифаќа, а ништо од тоа не е изразено со ESP правило. Портата што недостасува објаснува конкретен дефект, а не секој дефект на IPsec. Држете ја поправката на правилото и проверката на рутирањето како два одделни заклучоци.

Запишете ја формата што ја набљудувавте, правилото за протокол што го додадовте и бројачот што го видовте потоа. Три реда, и следниот човек може да разликува грешка во именски простор од грешка во рутирање за една минута наместо за цело попладне.

Поврзани статии