OpenWrt-ի քաղաքականության երթուղավորում՝ շղթան, որը բռնում է տեղական DNS-ը
Հաճախորդների հարցումները և երթուղիչի սեփական հարցումները մտնում են տարբեր կեռիկներով։ prerouting-ի վրա ուղղված քաղաքականությունը տանում է յուրաքանչյուր LAN հարցում և երթուղիչին թողնում ISP-ի uplink-ի վրա։
LAN-ի հաճախորդները լուծում են թունելի միջով, իսկ երթուղիչի սեփական որոնումները լուռ չեն անում դա։ Փաթեթների թարմացումները, ժամանակի համաժամացումը և դինամիկ DNS-ը բոլորը դուրս են գալիս սովորական uplink-ով, մինչդեռ յուրաքանչյուր փոխանցված հարցում վերցնում է VPN-ը, և ինտերֆեյսում ոչինչ չի հուշում, որ գոյություն ունեն երկու տարբեր ուղիներ։ Բացատրությունը քաղաքականության մեջ սխալ չէ, այլ հարց է, թե որ կեռիկն է տեսնում փաթեթը։ Երկու հոսք, մեկ լուծիչի հասցե, և նրանցից միայն մեկն է անցնում երթուղիչով։ Նրանց բաժանելը ողջ ուղղումն է։
Երկու հոսք, մեկ լուծիչի հասցե
Առաջին հոսքն այն է, ինչ մարդիկ պատկերացնում են։ Հաճախորդը հարցնում է երթուղիչի լուծիչին, լուծիչը փոխանցում է վերև, և այդ փոխանցված փաթեթը դուրս գալիս անցնում է երթուղիչով։ Այդ փաթեթը տեսանելի է այն ամենին, ինչը դիտում է փոխանցված երթևեկությունը։
Երկրորդ հոսքը երբեք ոչ մի տեղից չի գալիս։ Երթուղիչն ստեղծում է այն, ուստի մուտքային փաթեթ չկա և համապատասխանեցնելու փոխանցման քայլ չկա։
Երկուսն էլ կարող են թիրախավորել նույն լուծիչի հասցեն, և հենց դա է պատճառը, որ տարբերությունը հեշտ է բաց թողնել։ Նույն նպատակակետը, այլ ծագում, այլ շղթա։ Հենց որ տեսնես ծագումը, ախտորոշման մնացած մասը հետևում է։
Փոխանցված և տեղում ստեղծված փաթեթները մտնում են տարբեր կերպ
Փոխանցված երթևեկությունը գնահատվում է, երբ այն գալիս է այլ ինտերֆեյսից։ Քաղաքականության երթուղավորման փաթեթները դա ցուցադրում են որպես prerouting շղթա, և այնտեղ տեղադրված կանոնը տեսնում է երթուղիչով անցնող յուրաքանչյուր փաթեթ։ Ահա թե ինչու հաճախորդների որոնումները վարվում են ճիշտ այնպես, ինչպես նկարագրում է քաղաքականությունը, և ահա թե ինչու երթուղիչը անտեսում է այն։ Կանոնը սխալ չէ, այն պարզապես կցված է մի կեռիկի, որին երթուղիչը երբեք չի հասնում։ Տեղափոխիր այն, և նույն համընկնումը սկսում է աշխատել։
Տեղում ստեղծված երթևեկությունը ստեղծվում է երթուղիչի վրա գործընթացով և փոխարենը մտնում է ելքի ուղի։ Այն երթուղավորվում է երթուղիչի սեփական որոշմամբ և հանդիպում է քաղաքականությանը միայն այն դեպքում, եթե քաղաքականությունը ծածկում է այդ շղթան։ Համապատասխանեցնելու մուտքային ինտերֆեյս չկա և դիտելու փոխանցման որոշում չկա։
Դա այն հատկությունն է, թե որտեղ են ծնվում փաթեթները, այլ ոչ թե որևէ կոնկրետ փաթեթի։ Մեկ շղթայի համար գրված կանոնը պարզապես կարծիք չունի մյուսի մասին։ Ոչ մի կանոնի կարգավորում դա չի փոխում։
Ընտրիր ելքի շղթան, ապա նեղացրու համընկնումը
Ուղղումը նույն մտադրությունը ելքի շղթային նույնպես կցելն է, կամ կանոնը այնտեղ տեղափոխելը, երբ հենց երթուղիչի սեփական հարցումներն են քեզ հետաքրքրում։ Քաղաքականության երթուղավորման փաթեթի վրա կառուցված OpenWrt տեղադրման մեջ դա նշանակում է կանոնի շղթայի կարգավորումում prerouting-ի փոխարեն ընտրել output։ Պահիր երկու կանոնները, եթե երկու պոպուլյացիաներին էլ ծածկույթ է պետք։
Ապա նեղացրու, թե ինչին է համապատասխանում կանոնը։ Լուծիչի իրականում օգտագործած պորտի վրա նպատակակետ լուծիչի հասցեները շատ ավելի փոքր որոշում են, քան երթուղիչի ստեղծած ամեն ինչ թունել ուղարկելը։
Պահիր երկու կանոնները բացահայտ, փոխարենը փորձելու գրել մեկը, որը ծածկում է երկու շղթաներն էլ։ Առանձին կանոններն ավելի հեշտ են կարդացվում, և թույլ են տալիս անջատել երթուղիչի ուղին՝ չխանգարելով հաճախորդների երթևեկությանը, երբ վրիպազերծում ես։ Դրանք նաև հաշվիչները դարձնում են իմաստալից մեկ առ մեկ։
Պահիր թունելի սեփական տրանսպորտը կանոնից դուրս
Թունելի արտաքին կապը նույնպես ստեղծում է երթուղիչը։ Կանոնը, որը տեղում ստեղծված ողջ երթևեկությունն ուղարկում է թունել, թունելը կուղղորդի իր իսկ միջով, և այն բոլորովին չի բարձրանա։
Երկրորդ զոհը կառավարման հասանելիությունն է։ Երթուղիչից ծագած ադմինիստրատիվ սեսիաները կամ դրանց պատասխանները կարող են չափից ավելի լայն տեղական կանոնով քաշվել թունել և դառնալ անհասանելի LAN-ից։
Բացառիր թունելի վերջնակետը համընկնումից և պահիր կանոնը սահմանափակված լուծիչի հասցեներով։ Դա բավարար է DNS պահանջի համար և բավական փոքր է, որ մտածես դրա մասին։
Փորձարկիր երկու պոպուլյացիաներին էլ, ոչ մեկին
Դիտիր, թե ինչպես է երթուղիչն անում իր հարցումը, և նշիր, թե որ ինտերֆեյսը տարավ այն։ Կրկնիր որոնումը LAN հոսթից և նշիր, թե որ ուղին վերցրեց այն։ Քաղաքականության կանոնների հաշվիչները երկու պատասխաններն էլ տեսանելի են դարձնում առանց գուշակելու։
Արդյունքներին վերաբերվիր որպես երկու առանձին հայտնագործության։ Թունելով լուծող հաճախորդը ոչինչ չի ասում երթուղիչի մասին, և ճիշտ լուծող երթուղիչը ոչինչ չի ասում մեկ այլ լսողի վրա գտնվող հաճախորդի մասին։ Գրիր դրանք որպես առանձին տողեր փոփոխությունների գրառման մեջ։
Ստուգիր նաև պորտը՝ նպատակակետ 53 պորտին համապատասխանող կանոնը բաց է թողնում լուծիչը, որին հասնում են 853-ի DNS over TLS-ով կամ HTTPS վերջնակետով։ Համապատասխանեցրու այն տրանսպորտին, որն իսկապես օգտագործում է կարգավորված upstream-ը, և արտահոսքը փակվում է ճիշտ պատճառով։