Երեք փոփոխություն խառնվում են իրար, երբ VPN-ը հանդիպում է OpenWrt-ին՝ պորտ բացելը, փոխանցումը թույլատրելը և հասցեների քողարկումը միացնելը։ Դրանք տարբեր հարցերի պատասխան են տալիս, և սովորաբար դրանցից միայն մեկն է իրական պահանջը։ Յուրաքանչյուր կառավարման ընթերցումը ըստ այն երթևեկության դերի, որը նա ղեկավարում է, ենթադրությունը դարձնում է որոշում և նաև ասում է, թե ինչ ախտանիշ սպասել, երբ փոփոխությունը սխալ է։ Սկսեք անվանել այն դերը, որը ձախողվել է, ոչ թե այն վանդակը, որը հիշում եք։

Անվանեք երթևեկության դերը, նախքան կառավարմանը դիպչելը

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

Օգտակար քարտեզը ըստ երթևեկության դերի է, որովհետև հենց դա կարող եք դիտել, երբ ինչ-որ բան ձախողվում է։ Ստորև յուրաքանչյուր դեր ունի մեկ կառավարում, որը որոշում է այն, և մեկ ախտանիշ, որը մատնանշում է դրան:

Traffic roleControl that decides itWhere it lives in the configSymptom when it is wrong
A client reaching a listener on the routerInput policy of the zone that carries the connection, or a rule for the portoption input in the zone stanza, or a named ruleThe handshake never completes and the tunnel log says nothing
A tunnel client reaching the router itselfInput policy of the tunnel zoneoption input in the VPN zoneA ping to the gateway fails
A tunnel client reaching another LAN hostForwarding from the tunnel zone to the LAN zoneconfig forwarding plus the zone assignmentThe gateway answers and the file share times out
The router's own traffic leaving the WANOutput policy, and translation if the far side needs itoption output and option masqThe tunnel never establishes, or replies vanish

Երթուղիչի վրա լսողը պահանջում է մեկ նեղ մուտքի կանոն

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

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

config zone
    option name 'wan'
    option input 'REJECT'
    option forward 'REJECT'
    option output 'ACCEPT'
    option masq '1'

config rule
    option name 'allow-openvpn'
    option src 'wan'
    option proto 'udp'
    option dest_port '1194'
    option target 'ACCEPT'

Ստուգեք վերաբեռնելուց առաջ, քանի որ firewall ֆայլի շարահյուսական սխալը կարող է երթուղիչը թողնել առանց աշխատող կանոնների հավաքածուի։ fw4 օգտագործող թողարկման մեջ ստուգումը առանձին հրաման է, և այն բարձրաձայն ձախողվում է՝ փոխարենը լուռ ընդունելու կոտրված բլոկը։ Վերաբեռնեք միայն ստուգումն անցնելուց հետո և պահեք նախորդ ֆայլը այնտեղ, որտեղից կարող եք վերադարձնել այն։

fw4 check
service firewall reload

Հաճախորդի հարցումն անցնում է փոխանցումով, ոչ մուտքով

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

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

Հասցեների քողարկումը երթուղավորման որոշում է, ոչ թույլտվություն

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

Երթուղավորված այլընտրանքը թարգմանության փոխարեն պահանջում է վերադարձի ուղի հեռավոր կողմում։ Ոչ մի տարբերակ չի տալիս firewall-ի թույլտվությունը կամ հավելվածի հաշիվը, դրա համար էլ քողարկումն անջատելը գրեթե երբեք չի ուղղում թունելի հաճախորդին, որը ոչ մի տեղ չի հասնում։ Առանձին վերաբերվեք նաև IPv4-ի և IPv6-ի քաղաքականությանը, քանի որ մեկ թարգմանության կարգավորումը չի նկարագրում երկու ընտանիքներին էլ։

Ապացուցեք որոշումը թույլատրված և մերժված հարցումով

Ուղարկեք մեկ հարցում, որը պետք է թույլատրվի, և մեկը, որը պետք է մերժվի, ապա բացահայտեք այն կառավարումը, որը կայացրել է յուրաքանչյուր որոշումը։ Էջը, որը պատահաբար բեռնվում է, ապացույց չէ. ապացույցն այն կանոնն է, որը համընկել է, այն շղթայում, որտեղ համընկել է։ Մերժումը նույնքան կարևոր է, որքան հաջողությունը, որովհետև այն ցույց է տալիս, որ քաղաքականությունը ինչ-որ բան է անում, այլ ոչ թե ամեն ինչ թույլատրված է։

Երկու հրաման տալիս են այդ ապացույցը ընթացիկ թողարկման վրա։ Համապատասխան կանոնի հաշվիչը շարժվում է, երբ հարցումն ընդունվում է, և մատյանը ցույց է տալիս անկումը, եթե միացրել եք գրանցումը կանոնի համար:

nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'

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

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