ESP је IP протокол 50, а не TCP порт 50: шта дозволити
Бројеви протокола и бројеви портова су различити именски простори. Правило за TCP порт 50 не дозвољава ништа, а NAT traversal премешта ESP у UDP 4500.
Формулари заштитног зида траже 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 wire | How it is identified | What the firewall must permit |
|---|---|---|
| IKE negotiation | UDP with a destination port | UDP 500, and 4500 once traversal is detected |
| Native ESP | IP protocol 50 in the outer header | The protocol itself, with no port to name |
| ESP inside UDP | UDP 4500 carrying an ESP payload | The 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-а. Држите исправку правила и проверу рутирања као два одвојена закључка.
Запишите облик који сте приметили, правило протокола које сте додали и бројач који сте после видели. Три реда, и следећа особа може да разликује грешку именског простора од грешке рутирања за минут уместо за поподне.