Պատկերացրեք տնային գծի վրա դրված մեդիա բոքս, որը ինտերնետին պետք է հասնի միայն թունելով։ Երբ թունելն ընկնում է, հավելվածը պետք է կանգ առնի, այլ ոչ թե հանգիստ շարունակի ֆիզիկական ինտերֆեյսով։ Այդ վարքը ստանալը firewall-ի, այլ ոչ երթուղավորման խնդիր է, և տարբերությունը կարևոր է, որովհետև երթուղին կարելի է փոխարինել դեմոնի վերագործարկմամբ, մինչդեռ զտիչը մնում է այնտեղ, որտեղ դրել եք։ Հետևյալում կտեսնենք, թե ինչպես է փաթեթի ուղին իրականում որոշում, ապա ինչպես սահմանափակել այն բացառությունները, որոնք թունելը վերակապակցված են պահում։

Տեղական ելքը այլ կեռ է, քան փոխանցումը

Ծրագրից դուրս եկող փաթեթը անցնում է ելքի կեռով, իսկ այն փաթեթը, որը մեքենան երթուղավորում է այլ հոսթի համար, անցնում է փոխանցումով։ Քաղաքականությունը, որը հիշատակում է միայն forward-ը, սահմանափակում է երկրորդը և բաց է թողնում առաջինը, այդ պատճառով շատ ելքի կողպեքներ ճիշտ տեսք ունեն և ոչինչ չեն անում։ Ինտերֆեյսի համապատասխանեցումը նույն կանոնի մեջ է՝ oifname "tun0" accept-ը թողնում է այն թրաֆիկը, որն արդեն երթուղավորվել է թունելով։ Երթուղավորումը և զտումը նույնպես մնում են առանձին որոշումներ, ուստի վերին գծի երթուղին կարող է գոյություն ունենալ, մինչ զտիչը մերժում է փաթեթը։ Հենց այդ բաժանման վրա եք հենվում։

Երկու կեռերն էլ պետք են այն դարպասին, որը փոխանցում է այլ սարքերի համար։ Միայն ելքը կողպելը պաշտպանում է ինքը մեքենան և ներքևի յուրաքանչյուր հաճախորդի ազատ թողնում արտահոսելու։

Բացառությունների ցանկը գրեք վերջնակետից դուրս

Սկսեք թունելի վերջնակետից՝ մեկ նպատակային հասցե կամ փոքր հաստատված հավաքածու, տրանսպորտային արձանագրությունը և նպատակային պորտը, օրինակ udp dport 1194 ip daddr 203.0.113.7 accept։ Եթե հաճախորդը լուծում է հոսթի անուն, սկզբնական DNS փոխանակմանը պետք է իր կանոնը՝ սահմանափակված լուծիչով և 53 պորտով, ոչ թե լայն թույլտվություն այդ լուծիչի հասցեին։ Յուրաքանչյուր բացառություն պետք է նշի իր գոյության պատճառը։ VPN պորտին ուղղված ամբողջ UDP թրաֆիկի թույլտվությունն ընդգրկում է շատ ավելին, քան այն մեկ նույնականացված ծառայությունը, որ մտքում ունեիք։

Սկզբնական լուծումը հենց այն տեղն է, որտեղ կողպեքները սովորաբար փտում են։ Ժամանակաչափով թարմացվող հասցեների հավաքածուն պետք է սահմանված վարք, երբ թարմացումը ձախողվում է, և այդ վարքը չի կարող լինել գծի բացումը մինչև հաջողությունը։ Թարմացրեք թունելով, քանի դեռ թունելը կանգնած է, հակառակ դեպքում վերադարձեք վերջին հայտնի առողջ վերջնակետին։

Տեղական կառավարումը նույն վերաբերմունքի կարիքն ունի։ Կառավարման ենթացանցը վստահելի չէ միայն նրա համար, որ հասցեները մասնավոր են, և դրան վստահող կանոնը կողպեքի շուրջ երկրորդ ուղի է հրավիրում։

Ինտերֆեյսի համապատասխանեցումը առողջ թունելի ապացույց չէ

Կանոնները, որոնք ընդունում են այն ամենը, ինչ դուրս է գալիս tun0-ից, ենթադրում են, որ այդ ինտերֆեյսի փաթեթը եկել է թունելից։ Ինտերֆեյսների անունները նորից ստեղծվում են, և անունը կրիպտոգրաֆիկ ինքնություն չէ։ Գործընկերը նույնպես կարող է գնացած լինել, մինչ ինտերֆեյսը մնում է վերև, ինչը կանոնը դարձնում է շատ համոզիչ անգործություն։

Կապերի հետևումը ավելացնում է հարակից թակարդ։ Հաստատված կապերի լայն կանոնը վերարտադրում է այն թույլտվությունը, որ հոսքը ստացել էր ավելի վաղ, ուստի թունելի անկումից առաջ սկսված սեանսը շարունակում է աշխատել դրանից հետո։ Սահմանափակեք վիճակային ընդունումը միայն այն ինտերֆեյսներով և հասցեներով, որ իսկապես նկատի ունեք, այլապես կառուցել եք կողպեք, որ ինքն իրեն բացվում է։ Մուտքի և ելքի կանոնները նույնպես տարբեր հարցերի են պատասխանում, և մեկը խստացնելով մյուսին անտեսելը մեքենան հասանելի է թողնում այն ուղղությամբ, որ չեք դիտարկել։

Ինչ է վերապրում դեմոնի վթարից

Զտիչը, որը տեղադրում է թունելի բարձրանալուց հետո աշխատող սկրիպտը, անհետանում է թունելի հետ միասին՝ հենց այն պահին, երբ պետք էր։ Բեռնեք կողպեքը գործարկման ժամանակ և թույլ տվեք դեմոնին կառավարել միայն իր բացառությունները։

Լռելյայն երթուղին ջնջելը նույնպես փոխարինում չէ։ Երթուղին վիճակ է, որին տիրապետում և որը վերագրում է դեմոնը, և դրա հեռացումը կարող է խլել վերակապակցման համար անհրաժեշտ ուղին։ IPv6-ը պետք է իր պլանը, որովհետև հարևանների հայտնաբերումը և երթուղիչի հայտարարությունները կապի ծառայություններ են, որոնք պետք է շարունակեն աշխատել, մինչ սովորական թրաֆիկը արգելափակված է։ DHCP-ը նույն կատեգորիայում է։ Գրեք այս ամենը որպես նպատակ ունեցող բացառություններ, փոխարենը հետագայում որպես ընդհատումներ հայտնաբերելու։

Վերականգնման ուղին տեղակայումից առաջ

Փորձարկեք կողպեքը այնպես, ինչպես այն կձախողվի՝ գործարկում առանց թունելի, դեմոնի սպանում, վերջնակետի փոփոխում և վերակապակցում։ Յուրաքանչյուր դեպք պետք է կանգնեցնի հավելվածները և վերականգնման ալիքը թողնի աշխատունակ։ Արեք դա կոնսոլից, որովհետև հեռ հրամանի տողը հենց այն սեանսն է, որն ամենահավանական է, որ ձեր իսկ կանոնով կկողպվի։

Ապա ստուգեք, թե սովորական հավելվածը դեռ ինչի կարող է հասնել՝ անվնաս նպատակ և ստուգելի հարցում օգտագործելով։ Ցանկալի արդյունքը գծի վրա մերժումն է և թունելով հաջողությունը, ոչ թե երկիմաստ ընդհատում, որը կարող է նշանակել երկուսն էլ։ Կանոնների հավաքածուն պահեք նույն սեփականատիրոջ ներքո, ինչ firewall-ի մնացած մասը, փոխարենը ամբողջ աղյուսակը shell սկրիպտից փոխարինելու։ Քաղաքականությունը, որտեղ յուրաքանչյուր թույլտվություն կարող է արդարացնել իրեն, ավելի արժեքավոր է, քան երկար կանոնների հավաքածուն, որը ոչ ոք չի կարող բացատրել։

Առնչվող հոդվածներ