Гатэльныя сеткі і канферэнцыйныя міжсеткавыя экраны часта паказваюць асаблівае поле дазволу, і хтосьці ўводзіць у яго 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 ніхто не можа праверыць, і менавіта таму яна гадамі жыве ў кнігах працэдур.

Дадайце тэст, які гэта даказвае: падключыцеся, робячы захоп на знешнім інтэрфейсе, і пацвердзіце знешні пратакол і порт, якія сапраўды з'яўляюцца ў трасе.

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