Ар бир VPN кардар пулу үчүн бир багыттагы диапазонду блоктоо
Бир nftables эрежеси уруксат берилген VPN пулу үчүн багыттагы префиксти дарбазанын өз трафигине тийбей эле четке кага алат. Hook менен ордун шайкештеңиз.
Бир эреже уруксат берилген VPN пулун багыттагы диапазондон алыс кармай алат, дарбазанын башка ишине тоскоол болбой. Эреженин өзү кыска; анын иштешин чечүүчү бөлүктөр — ал жашаган hook жана тизмектеги орду. Ушул экөөндө жаңылсаңыз, туура көрүнгөн, бирок туруксуз иштеген firewall аласыз. Эреже пакетти көргөндө пакет эмне кылып жатканынан баштаңыз.
Эреже чынында эмнени шайкеш келтирет
Эреже бир убакта үч нерсени шайкеш келтирет: кирүү интерфейсин, булак префиксин жана багыттагы префиксти. Drop колдонулушу үчүн үчөө тең чын болушу керек, жана бул аны тар кармайт. Аны үч өзүнчө саясат катары окугандан бир туюнтма катары окуган жеңил.
Интерфейсти шайкештеө — өткөрүлүп жаткан кардар трафигин дарбазанын өз байланыштарынан ажыратат. Ансыз, булак пулун гана атаган эреже дарбаза өзү ошол даректен жараткан пакеттерге да таасир этмек, эгер мындай нерсе болсо. Булак префикси саясатты уруксат берилген кардарлар менен, ал эми багыттагы префикс аны бир диапазон менен чектейт. Эрежени тизме катары эмес, кесилиш катары окуңуз.
Бир нерсени өзгөртүүдөн мурун үч маанини жазып алыңыз: туннелдин интерфейсинин аты, сервер тарата турган пул жана четке каккыңыз келген префикс. Алардын кайсынысында болбосун жазуу катасы таза талданган, бирок эч нерсени коргобогон эреже жаратат. Ошол үч маанини эреженин жанындагы өзгөрүү жазуусунда сактаңыз.
Hook эреженин кимге колдонуларын чечет
netfilter тизмеги hookко бекитилет, жана hook тизмектин кайсы пакеттерди көрөрүн чечет. forward hook дарбаза аркылуу маршрутталган трафикти көрөт, ал эми бул кардардан багытка кеткен трафик. Тизмектеги калганынын баары башка аудиторияга багытталган.
input hook дарбазанын өзүнө адрестелген трафикти көрөт, ошондуктан ал жерге коюлган эреже транзитти эмес, анын өз кызматтарына кирүүнү башкарат. output hook дарбаза өзү жараткан трафикти көрөт, бул кардар пулунун саясатына керектүүнүн тескериси. Тизмектердин аттары — эрежелер жыйындысын жазган адам тандаган эркин белгилер, ошондуктан hookту аттан божомолдобоңуз. Тизмектин кайда бекитилгенин текшериңиз, анан анын эмнени шайкеш келтире аларын божомолдоңуз.
| Hook | Traffic it sees | Right for this policy |
|---|---|---|
| input | Addressed to the gateway | No, that is the host's own services |
| forward | Routed through the gateway | Yes, for client-to-destination traffic |
| output | Generated by the gateway | No, that is the opposite direction |
Бекитүүнү окуу — бир сап текшерүү, ал эреженин пакетти эч качан көрбөгөн тизмекке түшүүсүнө жол бербейт.
Эрежени кенен acceptтан мурун жайгаштырыңыз
Эрежелер тартиби менен бааланат жана биринчи өкүм жеңет. Тизмектин ичинде эртерек турган кенен accept шайкеш келген пакеттер үчүн баалоону бүтүрөт, ошондуктан кийин кошулган drop алар үчүн эч качан иштетилбейт. Ушул тартип эрежеси — туура көрүнгөн эреженин таасирсиз калышынын толук себеби.
Эрежени аягына кошуунун ордуна acceptтан мурун кыркып салыңыз. Эгер тизмекте туннелдин интерфейси үчүн жалпы accept мурунтан болсо, жаңы эреже анын алдында турушу керек, болбосо ал жөн гана жасалга. Натыйжадагы тартипти текшериңиз, өзгөрткөн файлыңызды эмес, анткени бир нече файлдан куралган эрежелер жыйындысы алардын эч бирине туура келбеши мүмкүн. Анан пулдан алынган сыноо пакети менен ырастаңыз.
sudo nft list chain inet filter forward
sudo nft insert rule inet filter forward iifname "tun0" ip saddr 10.90.0.0/24 ip daddr 198.51.100.0/24 drop
sudo nft -c -f /etc/nftables.conf
Үчүнчү буйрук файлды колдонбостон талдайт, бул синтаксистик каталарды үзгүлтүккө айланганга чейин кармайт. Кайтаруу планы менен колдонуңуз, анткени forward тизмегиндеги туура эмес эреже сиз иштеп жаткан туннелди кесип салышы мүмкүн.
Учурдагы агымдар жаңы эрежеңизге көңүл бурбайт
Эреже пайда болгонго чейин түзүлгөн conntrack жазуусу мурунку acceptка шайкеш келе берет. Ошондуктан жаңы drop кээде жаңы байланыштарга иштеген сыяктуу көрүнөт, ал эми текшерилип жаткан байланышка эч нерсе кылбайт.
Тизмектин башындагы абал шайкештигин окуңуз. Эгер ал established жана related трафикти сиздин эрежеден мурун кабыл алса, ар бир уланып жаткан агым жабылганга чейин ага берет. Адатта бул өзгөчө кырдаал эрежеси үчүн каалаган жүрүм-турум, жана дароо үзүүнү күткөндө башты айлантат. Жайылтуудан мурун кандай таасир каалайрыңызды чечиңиз. Ачык байланышты кайра колдонгон сыноо сизге туура эмес окуяны айтат.
sudo conntrack -L -s 10.90.0.14 -d 198.51.100.20
sudo nft list ruleset | grep -n -A3 'ct state'
Биринчи буйрук агымдын бар-жогун, экинчиси эрте абал эрежесинин аны кабыл алуусун улантып жатканын көрсөтөт. Экөө тең окууга гана арналган жана окуя учурунда иштетүү коопсуз.
Бул эреже эмне эмес
Эреже домендердин кара тизмеси, IPv6 саясаты же жеке колдонмо эсебине чектөө эмес.
Алардын ар бири өз механизмин талап кылат. Доменди блоктоо аттарды чечүүгө тийиш, пакет фильтри муну кылбайт. IPv6 трафиги өз шайкештигин талап кылат, анткени ip туюнтмасы ip6 пакеттери жөнүндө эч нерсе айтпайт. Колдонмо деңгээлиндеги чектөө префикс шайкештигине эмес, кызматка же аутентификацияланган проксиге таандык. Ушул талаптарды өзүнчө кармоо бир тар эрежеден төрт иш талап кылууга жол бербейт.
Бул эреже берген келишим так: уруксат берилген пулдан бир багыттагы префикске трафик четке кагылат, ал эми тиешеси жок дарбаза трафиги өз саясатын сактайт. Ушул сүйлөмдү эреженин жанына жазыңыз, кийинки адам анын эмне үчүн экенин билет.