Есімдер мекенжайларға шешіледі, ал бұл мекенжайлар кейін маршруттауға әсер ететін брандмауэр жинағына түсуі мүмкін, бұл проксисіз есімге негізделген бағыттауды мүмкін етеді. Қулық мынада: төрт құрамдас дұрыс тапсыруы керек: шешуші, жинақ, жаңа ағынды белгілейтін жіктеуші және оны тасымалдайтын жұп. Әр тапсыру әрқалай сәтсіздікке ұшырайды және әрқайсысы өз уақытын ұстайды.

Дизайнды конфигурация емес, тізбек ретінде қарастырыңыз. Әр қадамдағы сұрақ: қай құрамдас шешімге ие және оның кірісі жоқ болса не болады.

DNS жауабы не істей алады, не істей алмайды

dnsmasq жауаптардан мекенжайларды nftables жинағына көшіре алады, бұл қоректендіру, маршруттау шешімі емес. Бұл опция, dnsmasq нұсқаулығында құжатталған, отбасын, кестені және жинақты атайды, ал оның алдыңғы 4# тек A жазбаларын таңдайды, сондықтан v6 межелеріне өз реттеуі қажет. Жинақ әлдеқашан болуы керек, өйткені шешуші брандмауэр иесі жасаған нәрсеге элементтер қосады. Сол қадамда ешнәрсе интерфейсті, кестені немесе жұпты таңдамайды.

Клиент те есім үшін сол шешушіні пайдалануы керек. Өзінің шифрланған DNS-і бар қолданба немесе саясатқа дейінгі кэштегі жауап, жинақта бірде-бір жазба жасамай қосылады.

Жинақ кіріс, маршрут емес

Жинақтағы элемент сәйкестік шарты. Бірдеңе оған қарап, бұл пакеттің жаңа ағынды бастайтынын шешіп, ағынды туннель арқылы жіберетін саясатты қолдануы керек. Linux-те бұл әдетте белгі қоя алатын маршруттауға қабілетті шығыс жолы, белгіленген пакеттерді арнайы кестеге жіберетін ереже және сол кестедегі WireGuard құрылғысына сілтейтін маршрут дегенді білдіреді. Тек мүшелік осылардың ешқайсысын орнатпайды.

nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips

Жұп адамдар ұмытатын екінші қамту тексерісін қолданады. WireGuard пакетті тек рұқсат етілген мекенжайларында меже бар жұп үшін шифрлайды, сондықтан жұптың тізімі бұл префиксті алып тастаса, интерфейске саясат маршруты жеткіліксіз. Тізімді менеджер кездейсоқ жасайтын маршрутқа сеніп қалдырмай, маршруттау иесінің бақылауында ұстаңыз.

Белгілер, кестелер және жұптың қамтуы

Белгілер ортақ атау кеңістігі, сондықтан мән де, маска да оларды пайдаланатын кез келген басқа нәрсемен келісілуі керек. Белгіленген трафикті арнайы кестеге жіберетін ережеге сол кестеде сәйкес маршрут болмағанда анықталған нәтиже қажет, өйткені жауапсыз іздеу келесі ережеге өтіп, пакетті физикалық интерфейстен шығарып жіберуі мүмкін. Арнайы кесте ішіндегі blackhole әдепкі маршруты сол тыныш қашуды көрінетін тастауға айналдырады. Дизайн әлі де істей алмайтыны — жинаққа ешқашан кірмеген меже үшін ақау кезінде жабылу.

Туннельдің өз сыртқы пакеттері жіктеушіден құтылуы керек. WireGuard құралдары дәл осы мақсат үшін сокет белгісін береді, ал оны пайдалану инкапсуляцияның өзі салып жатқан интерфейске қайта маршрутталуын болдырмайды.

Әр ғұмырды бөлек тексеріңіз

Үш қойма үш кесте бойынша ескіреді: шешуші кэші, жинақ элементтері және қадағаланатын қосылым. Оларды осы ретпен тексеріп, әрқайсысы тиісті кезде қозғала ма, байқаңыз. Төмендегі командалар ешнәрсені өзгертпей шешушіні, жинақты, қосылым кестесін және саясат ережелерін оқиды.

dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show

Элемент қосатын жаңа іздеу қоректендірудің жұмыс істейтінін дәлелдейді, ал өз жауабынан ұзақ өмір сүрген ескірген элемент — жазып қоюға тұрарлық ғұмыр сәйкессіздігі. Қосылым кестесінде күтілетін белгімен жаңа қосылымның пайда болуы жіктеушінің істегенін көрсетеді, ал ескі қосылымның өз бастапқы белгісін сақтауы — ақау емес, дұрыс мінез. Ережелер тізімі саясат іздеуінің бар-жоғын жауаптайды, бұл оның сәйкес келгені туралы сұрақтан өзгеше. Төрт шығысты осы ретпен оқыңыз, сәтсіз тапсыру өзін-өзі көрсетеді.

Белгілі бір есім әрқашан бір жолды пайдалануы талап етілсе, DNS-пен қоректенетін жинақ мұны дәлелдей алмайды, өйткені ортақ мекенжайлар басқа есімдерді де алып жүреді. Прокси немесе қолданба деңгейіндегі механизм — сол кепілдіктің құралы.

Қатысты мақалалар