Жергиликтүү колдонмо, VPN эрежеси: FORWARD чынжырыңыз эмнеге эч качан иштебейт
Машинадагы процесс FORWARD эмес, OUTPUT колдонот. Туура ат мейкиндигиндеги илгичти тандап, анан белги же жөнөкөй маршрут жетиштүүбү, ошону чечиңиз.
VPN трафиги үчүн FORWARD чынжырына эреже кошосуз, сурамды ошол эле Linux машинасынан иштетесиз, ал эми эсептегич нөлдө калат. Эреже, балким, туура. Пакет бул жол менен эч качан жүргөн эмес, анткени машинанын өзүндө пайда болгон сурамды ал андан ары жөнөтпөйт. Пакеттин сокеттен зымга чейинки өмүрүн байкоо эмне үчүн мындай экенин жана эреже чындыгында кайда болушу керектигин түшүндүрөт.
Пакет кайда төрөлгөнүн табыңыз
Netfilter илгичтеринин тартиби үч учурду бөлөт, алардын бирөө гана FORWARD камтыйт:
| Origin | Path | Hook that sees it |
|---|---|---|
| Local process | OUTPUT then POSTROUTING | OUTPUT, POSTROUTING |
| Addressed to a local service | PREROUTING then INPUT | PREROUTING, INPUT |
| Received for another host | PREROUTING, FORWARD, POSTROUTING | FORWARD |
Жергиликтүү колдонмо OUTPUT жолунан башталат, анткени өзөк пакет ушул жерден пайда болорун жана эч качан жөнөтүүгө талапкер эместигин буга чейин аныктаган. Туннель түзүү бул классификацияны өзгөртпөйт; туннель пакет чыга ала турган түзмөк, жергиликтүү чыгышты транзитке айландырган баскыч эмес.
Эки пакет, бир окуя
Туннель көтөрүлгөндөн кийин колдонмонун ички пакети жана шифрленген тышкы пакет ар кандай объектилер. Ички пакет колдонмо тандаган бараанды жана жүктү алып жүрөт. Тышкы пакет шифр текстти шериктин дарегине жана портуна жеткирет, физикалык интерфейстен чынында өткөн да ошол.
Сиздин саясат алардын бирине тиешелүү, ал эми туура эмесин тандоо эреженин эч нерсе кылбай жаткандай көрүнүшүнүн кеңири тараган себеби. Шериктин тышкы дарегине дал келген эреже ар бир туннель пакетин бирдей көрөт, ички колдонмо эмне кылбасын. Ички бараанга дал келген эреже сизге керектүү трафикти көрөт жана ал пакет сиз эрежени орноткон илгичке жеткенде гана иштейт.
Ат мейкиндиктери чекти жылдырат
Контейнер принципти өзгөртпөстөн муну кыйындатат. Колдонмонун сурамы контейнердин тармактык ат мейкиндигинин ичиндеги жергиликтүү чыгыш. Хост бул трафикти виртуалдык Ethernet интерфейсинде кабыл алып, андан ары жөнөтө алат, ошондуктан хосттогу FORWARD эрежеси маанилүү болушу мүмкүн, сурамды жараткан процесс хосттун OUTPUT чынжырына эч качан тийбесе да.
Илгичти тандоодон мурун эрежелер жыйнагы жана туннель чындыгында кайда жашаарын аныктаңыз. Контейнердин ичиндеги туннель, контейнерди ошонун аркылуу маршруттаган хосттогу туннель жана өзүнчө ат мейкиндигиндеги туннель бул үч башка топология жана үч башка эреже орду. Эрежелерди түзмөккө ээ болгон ат мейкиндигинин ичинен окуңуз, жалан гана демейкиден эмес.
Белги такыр керекпи, ошону сураңыз
Максат бир бараан префиксин туннель аркылуу жөнөтүү болсо, ошол префикс үчүн маршрут жетиштүү болушу мүмкүн. Адегенде жарактуу маршруттарды текшериңиз, сервер түрткөн нерселердин баарын кошуп: багытталган демейки маршрут VPN аркылуу сиз ойлогон тар саясаттан алда канча көп трафик жөнөтөт, ал эми канча белги койсоңуз да жыйынтык ниетке дал келбейт.
Классификация чечим маршрут билдире албаган нерсеге көз каранды болгондо керек: булак, колдонуучу же процесс сыяктуу. Кабыл алынган трафик үчүн PREROUTING ичиндеги белги иштейт. Жергиликтүү трафик үчүн белги белги коюлгандан кийин жаңы маршрут издөөнү баштай алган чыгыш баскычында болушу керек. nftables боюнча бул чыгыш илгичиндеги route тибиндеги чынжыр; кадимки чыгыш фильтр чынжыры маанини коюп, маршрутту өзгөртпөй калтырат.
iptables боюнча эквиваленти mangle OUTPUT жайгаштыруусунда жашайт жана ошол эле талап колдонулат: маршруттоо чечими белги пайда болгондон кийин кайра каралышы керек. Андан кийин саясат эрежеси белгини керектеп, жарактуу маршруту бар таблицага көрсөтүшү керек. conntrack белгисин коюу үчүнчү, өзүнчө операция; ал агымга маани сактайт жана ошол маанини маршруттоо окушу үчүн учурдагы пакетке өзү койбойт.
Издөөнү жана эсептегичти чогуу текшериңиз
nft list ruleset
ip route get 198.51.100.25
ip route get 198.51.100.25 mark 0x1
Дарек жана белги мисал катары берилген, эки маршрут суроосу эки башка суроого жооп берет. Экинчиси пакет ошол белгини алып жүрсө өзөк эмне кылат деп сурайт; ал сиздин эрежелер жыйнагыңыз белги дайындайт деп көрсөтпөйт. Аны болжол сыноосу катары кабыл алыңыз, саясаттын иштешинин далили катары эмес.
Андан кийин зыянсыз сурам иштетип, бир убакта эки нерсени байкаңыз: тандаган илгичиңиздеги эсептегичти жана пакет чындыгында алган чыгышты. Эсептегич козголуп, пакет башка жерден чыкса, белги же таблица туура эмес. Экөө тең козголбосо, пакет ал илгичке такыр жетпейт, кийинки суроо ат мейкиндиги же жол.
Акырында сыноону механизм билдире алган нерсе менен чектеңиз. Бир дарек үчүн бир маршрут даректери алмашып турган кызмат үчүн туруктуу саясатка айланбайды. Адегенде пакеттердин камтылышын чечиңиз, андан кийин кайра туташкандан кийин маршруттоо жана белгилөө долбоору ошол камтылышты сактай аларын текшериңиз.