Երթուղայնացման կանոնը կարդում է փաթեթի նշանը, ոչ conntrack-ը
Քաղաքականության վրա հիմնված երթուղայնացումը կարդում է փաթեթի նշանը. conntrack-ը պահում է այլ արժեք՝ ավելի երկար կյանքով: Նրանց միջև պատճենումը քայլ է, որը ինչ-որ մեկը պետք է գրի:
Չորս ստուգում բաժանում է աշխատող նշանի կանոնը աշխատող երթուղուց. թե որ նշանն է կարդում կանոնը, արդյոք փաթեթը դեռ կրում է այն որոնման պահին, արդյոք կապի նշանը վերականգնվել է հետագա փաթեթների վրա, և արդյոք արդյոք համապատասխան կանոնի դիմակը և առաջնահերթությունը թույլ են տալիս այն գործարկել: Աճող հաշվիչը միայն ապացուցում է, որ ինչ-որ կանոն ինչ-որ բանի հետ համընկել է: Այն ոչինչ չի ասում այն մասին, թե ինչ էր կրում փաթեթը, երբ միջուկը ընտրում էր իր ուղին:
Երկու նշաններն ապրում են տարբեր տեղերում և ավարտվում են տարբեր ժամանակացույցերով:
Երկու նշան, երկու կյանք
Փաթեթի նշանը պատկանում է մեկ skb-ի, ճամփորդում է նրա հետ կեռիկների միջով և սպառվում է քաղաքականությամբ երթուղայնացման fwmark ընտրիչի կողմից: Կապի նշանը պատկանում է conntrack գրառմանը, պահպանվում է այդ հոսքի փաթեթների ընթացքում և անտեսանելի է երթուղայնացման կանոնի համար, մինչև ինչ-որ բան այն հետ չպատճենի: Փաթեթի նշանը կապի մեջ պահելը պահոց է. այն վերականգնելը առանձին գործողություն է: Ոչ մեկը ինքնաբերաբար չի կատարվում:
Այդ պատճառով կանոնների հավաքածուն կարող է հետևողական թվալ, մինչ երթուղայնացման որոշումը տեսնում է զրո. արժեքը պահվել էր, և ոչինչ այն չէր վերականգնել:
Նրանց միջև պատճենումը քայլ է, որը դուք եք գրում
Երկու կարևոր պնդումներն աշխատում են հակառակ ուղղություններով. մեկը պահում է փաթեթի նշանը կապի մեջ, մյուսը բեռնում է կապի նշանը փաթեթի վրա: Որն է ձեզ պետք, կախված է նրանից, թե երբ է դասակարգումը տեղի ունենում հոսքի նկատմամբ: Նախագծմանը կարող է պետք լինել միայն փաթեթի նշանը, և conntrack-ով նշում ավելացնելը, քանի որ ինչ-որ լուծում օգտագործում էր երկուսն էլ, այն ձևն է, որով պարզ քաղաքականությունը ձեռք է բերում երկրորդ խափանման ռեժիմ:
ct mark set meta mark meta mark set ct mark
Գրեք ուղղությունը կանոնի կողքին, որովհետև այն առաջին հայացքից շարահյուսությունից ակնհայտ չէ: Առաջին տողը պահում է, երկրորդը վերականգնում է, և ոչ մեկը չի ենթադրում մյուսը:
Դասակարգեք այն որոնումից առաջ, որը սպառում է այն
Տեղականորեն ստեղծված տրաֆիկը և LAN-ից փոխանցված տրաֆիկը անցնում են տարբեր կեռիկներով և երթուղայնացման որոշումներին հասնում են տարբեր պահերի: Ելքային կանոնը, որն աշխատում է երթուղիչի սեփական կապերի համար, չի ապացուցում, որ փոխանցված հաճախորդի փաթեթը նշվել է իր որոնումից առաջ: Տեղադրեք դասակարգումը այնտեղ, որտեղ այն սպառող որոնումը դեռ տեղի չի ունեցել, և ստուգեք՝ արդյոք նույն շղթայում հետագա կանոնները վերագրում են արժեքը: Շղթայի ներսում հերթականությունը կազմաձևման մասն է, ոչ թե իրականացման մանրամասնություն:
Կապի վիճակի պահպանումը նույնպես պահանջում է հստակ ծրագիր: Եթե դասակարգվում է հոսքի միայն առաջին փաթեթը, ապա հետագա փաթեթներին անհրաժեշտ է պահված նշանի վերականգնում, այլապես նրանք կգնան առանց նշանի ուղիով: Սա է տարբերությունը կապ նկարագրող նշանի և փաթեթ նկարագրող նշանի միջև:
Հարցրեք երթուղուն նշված հարց
ip route get 10.77.0.10 mark 0x2
Ուսումնասիրեք կանոնները և աղյուսակը, ապա հարցրեք երթուղուն նշանը ներառյալ, ինչպես նաև աղբյուրը կամ մուտքային ինտերֆեյսը, երբ դրանք ազդում են քաղաքականության վրա: Սովորական չնշված որոնումը պատասխանում է այլ հարցի և հաճույքով կհայտնի այն ուղին, որը դուք չէիք ուզում: Ստուգեք կանոնի դիմակը և առաջնահերթությունը, ինչպես նաև դրա արժեքը, և համոզվեք, որ ընտրված աղյուսակը պարունակում է օգտագործելի երթուղի:
Աճող հաշվիչը ապացույց է, որ ինչ-որ կանոն համընկել է ինչ-որ փաթեթի հետ: Այն ապացույց չէ, որ վերջնական փաթեթը կրում էր նպատակային նշանը ճիշտ որոշման կետում:
Կարդացեք նշանը, ուղղությունը, ժամանակը և դիմակը: Չորս ստուգում, և երթուղին դադարում է առեղծված լինելուց: