Неге OpenVPN клиентін блоктайтын ереже FORWARD-қа ешқашан түспейді
Клиенттен клиентке трафик OpenVPN процесінің ішінде қалуы және хосттың FORWARD тізбегінен ешқашан өтпеуі мүмкін, сондықтан нөлдік санауыш еш нәрсені дәлелдемейді.
Бір OpenVPN серверіндегі екі клиент өз пулы үшін DROP ережесін қосқаннан кейін де бір-біріне жете алады. Ереже FORWARD тізбегінде тұр, трафик анық ағып жатыр, ал сол ереженің санауышы нөлде қалады. Табиғи қорытынды — брандмауэр бұзылған. Көбінесе пакет тізбекке мүлде кірмеген.
OpenVPN сервері арқылы өтетін пакет үшін екі жол бар және оларды брандмауэр емес, конфигурация анықтайды. Қай жолдың қолданылып жатқанын білу хост ережесінің дұрыс орнында тұрғанын көрсетеді.
Пакеттің өте алатын екі жолы
Ішкі жіберу опциясы өшірілгенде, A клиентінен келетін пакет туннель интерфейсіне B клиентіне берілген мекенжайдың ішіндегі межелі орынмен келеді. Сервердің маршруттау кестесі оны сол туннель интерфейсі арқылы кері жібереді, өйткені B мекенжайына маршрут серверге тиесілі. Бұл хост арқылы кіріп-шығатын ағын, және оны IPv4 жіберу жолы бағалайды.
Ішкі жіберу опциясы қосылғанда, сервер процесі пакетті қосылған клиентпен сәйкестендіреді және оны тікелей сол клиентке кері жазады. Пакет демонның ішінде өңделеді және туннель құрылғысына ешқашан қайта кірмейді, сондықтан хосттың жіберу жолы толығымен аттап кетіледі. OpenVPN 2.6 нұсқаулығы бұл опцияны ішкі клиенттен клиентке жіберу деп сипаттайды, және хост брандмауэрының ережесі оны көре алмауының себебі дәл осы.
Деректер арнасын ядро модуліне аударатын орнатуларда үшінші нұсқа бар. Жіберу шешімі мен шифрлау пайдаланушы кеңістігінен шығады, ал netfilter ағынды көретіні аудару жолының қалай құрылғанына байланысты. Ескі ережелер жиыны аударылған серверде пайдаланушы кеңістігіндегідей әрекет етеді деп ешқашан болжамаңыз. Режимді пакет нұсқасынан емес, жұмыс істеп тұрған конфигурациядан растаңыз.
Санауыш ешқашан қозғалмағанда
Нөлдік санауыш пакеттің сол нүктеде бұл ережеге сәйкес келмегенін білдіреді, және себептері бірнеше. Біріншісі — жоғарыдағы айналып өту: трафик тізбекке жетпеген. Екіншісі — интерфейс, бағыт, көз немесе межелі орын сәйкессіздігі, бұл пул қайта нөмірленгенде және ереже әлі ескі префиксті атағанда жиі кездеседі.
Үшіншісі — орны. Тізбектегі бұрынғы ереже сіздің DROP бағаланбай тұрып ағынды қабылдауы мүмкін, ал кейінгі ереже нәтижені шын мәнінде шешетін ереже болуы мүмкін. Тізбекті санауыштар көрінетін күйде ретімен оқыңыз, содан кейін сынақты қайталағанда қай ереженің саны өсетінін тексеріңіз.
Нақты мекенжайларын сервердің өз күйінен растаған екі клиент арасында бір бақыланатын алмасуды орындаңыз, есте қалған жалдаудан емес. Тиісті санауыш әлі қозғалмаса, сәйкестікті қайта жазбас бұрын жолдан күдіктеніңіз. Ол қозғалса да байланыс әлі сәтті болса, drop кейінірек басылып жатыр және мәселе ретте. Бұл жауап жөндеудің ереже өзгерісі ме әлде топология өзгерісі ме екенін шешеді, сондықтан бірдеңені өңдеуден бұрын оны алыңыз.
Сүзе алатын шекара таңдау
Егер саясат хост брандмауэрында тұруы керек болса, трафикті брандмауэр көре алатын жерге қойыңыз. Ішкі жіберуді өшіру — теңдес трафигінің туннель интерфейсі мен жіберу жолынан өтуінің қолдау көрсетілетін тәсілі, бірақ оның құны әр теңдес пакетінің хост стекінен өтуі.
Содан кейін ағынды дәл сәйкестендіріңіз. Трафик екі бағытта да туннель интерфейсіне келеді және туннель интерфейсінен шығады, сондықтан тек физикалық интерфейсті ескеретін ережелер сәйкес келмейді. Мекенжайға негізделген ережелерге ағымдағы пул қажет, және олар қайту бағытын да, алға бағытын да ескеруі керек.
Көптеген орнатуларға клиент немесе топ деңгейінде сүзу жақсырақ қызмет етеді, онда тұлға белгілі және саясат қайта қосылуда өзгеретін мекенжайды емес, пайдаланушыны ұстанады. Бұл хост тізбегінен өзгеше механизм, және екеуін айқын себепсіз араластырмау керек.
Ескі топологияның ережелер жиынын көшіру кезінде өзгеріссіз алып өтпеңіз. Мекенжай пулдары, интерфейс атаулары және жіберу режимдері ереженің сәйкес келуіне әсер етеді, ал бұрын жұмыс істеген көшірілген ереже — ең адасушы дәлел түрі. Рұқсат бергіңіз келетін ағыннан бастап, оған сәйкес ережені жазыңыз.
Ережеге сенудің орнына оқшаулауды тексеру
Тыйым салынған жағдайды және рұқсат етілген жағдайды бір іске қосуда тексеріңіз. Бір клиенттен екіншісіне жаңа байланыс бастап, оның сәтсіз болатынын растаңыз, содан кейін рұқсат етілуі тиіс байланыстың әлі жұмыс істейтінін растаңыз. Тек біріншісі тексерілсе, бәрін бөгейтін брандмауэр табыс сияқты көрінеді.
Сервер конфигурациясын қайта жүктегеннен кейін және клиент қайта қосылғаннан кейін қайталаңыз, өйткені ішкі жіберу мен пулдарды бөлу — орындалу уақытының күйі. Санауыштарды екі бағытта тексеріңіз, өйткені бір бағытқа сәйкес келіп, жауапқа сәйкес келмейтін ереже жылдам сынақта байқауға қиын ішінара оқшаулау туғызады.
Оқшаулау — ағынды шын мәнінде тасымалдайтын шекарада байқалған нәтиже. Хосттың бір жеріндегі DROP ережесі дәлел емес; сәтсіз байланыс және оны тудырған ереженің қозғалған санауышы дәлел.