Хотелске мреже и конференцијски заштитни зидови често приказују посебно поље за дозволу, и неко у њега упише 47 очекујући да ће PPTP радити. Правило се ствара, тунел и даље не успева, а следећи покушај користи други број. Грешка је у самом пакету: IPv4 има поље протокола које именује шта следи након IP заглавља, док TCP и UDP имају поља порта која постоје само кад сте унутар једног од тих заглавља. То нису два записа исте дозволе.

IPv4 заглавље именује следећи протокол

Поље протокола је један бајт у IPv4 заглављу и садржи број који описује корисни терет: 6 за TCP, 17 за UDP, 47 за GRE, 50 за ESP. Све што филтрира пакете чита ту вредност пре него што погледа дубље, јер дубље заглавље има смисла тек кад је тип познат. Промените порт касније у разговору, а ово поље се није померило.

Правило написано против протокола 47 стога описује IP слој. Ниједан порт уопште не учествује у одлуци.

Портови постоје унутар TCP и UDP, нигде другде

Портови су шеснаестобитни идентификатори унутар TCP и UDP заглавља, а њихов посао је да раздвоје разговоре који деле једну адресу. GRE заглавље носи вредност типа протокола, често EtherType, плус опционе кључеве за мултиплексирање. Зато израз порт 47 не именује ништа са чиме би се GRE пакет могао подударити.

Сучеља заштитних зидова разликују се по томе колико тога откривају. Неки прихватају број протокола, неки нуде именовану листу, а ретки прихватају само TCP или UDP с портовима.

PPTP користи оба слоја истовремено

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

PathOuter protocolPort
Control channelTCP, protocol 61723
Data channelGRE, protocol 47None

Читајте два реда одвојено кад пишете правило и проверите сваки према синтакси произвођача. Један ред захтева порт, други захтева број протокола, и ниједан појединачни унос не покрива оба.

Зашто страница за прослеђивање портова не може изразити GRE

Образац за прослеђивање који прихвата само TCP и UDP не може описати GRE, како год се образац звао. Превођење адреса додаје другу потешкоћу, јер GRE нема портове и преводилац мора уместо тога да прати идентификатор позива. Неки кућни рутери долазе с помоћником који то решава; многи не, и ниједан додатни TCP унос дозволе неће створити такво понашање.

Тамо где је савремени тунел стварни захтев, изаберите решење које намерно користи TCP или UDP уместо да се надате да ће преводилац тачно погодити.

Инкапсулација одлучује шта филтер види

Инкапсулација мења спољни пакет, а правило се подудара баш са спољним пакетом. Изворни ESP је протокол 50, док пролаз кроз NAT умотава ESP у UDP 4500 да би преживео превођење адреса. Филтер који дозвољава UDP 4500 никада не види протокол 50, а филтер написан за протокол 50 никада се не подудара с умотаним обликом.

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

Напишите правило тако да неко може да га провери

Изразите свако правило као фамилију адреса, спољни протокол, транспортне портове ако их има, смер и оба краја. Рецензент може да упореди ту реченицу са снимком пакета и донесе пресуду. Упутство да се отвори 47 нико не може да провери, и зато оно годинама опстаје у приручницима.

Додајте тест који то доказује: повежите се док снимате на спољном интерфејсу и потврдите спољни протокол и порт који се заиста појављују у трагу.

Повезани чланци