OpenWrt-ի VPN գոտի, փոխանցում և հասցեների քողարկում՝ որն է պետք։
Գոտու մուտքը, փոխանցումը և հասցեների քողարկումը տարբեր հարցերի պատասխան են տալիս։ Որոշեք, թե ձեր VPN երթևեկությանն ինչ է պետք, նախքան WAN գոտին բացելը։
Երեք փոփոխություն խառնվում են իրար, երբ VPN-ը հանդիպում է OpenWrt-ին՝ պորտ բացելը, փոխանցումը թույլատրելը և հասցեների քողարկումը միացնելը։ Դրանք տարբեր հարցերի պատասխան են տալիս, և սովորաբար դրանցից միայն մեկն է իրական պահանջը։ Յուրաքանչյուր կառավարման ընթերցումը ըստ այն երթևեկության դերի, որը նա ղեկավարում է, ենթադրությունը դարձնում է որոշում և նաև ասում է, թե ինչ ախտանիշ սպասել, երբ փոփոխությունը սխալ է։ Սկսեք անվանել այն դերը, որը ձախողվել է, ոչ թե այն վանդակը, որը հիշում եք։
Անվանեք երթևեկության դերը, նախքան կառավարմանը դիպչելը
Գոտու մուտքը որոշում է, թե ինչ կարող է հասնել հենց երթուղիչին։ Գոտու ելքը ընդգրկում է այն երթևեկությունը, որը երթուղիչն ինքն է ստեղծում, գոտու փոխանցումը գոտով անցնող երթևեկության լռելյայնն է, իսկ հասցեների քողարկումը որոշում է՝ արդյոք աղբյուրի հասցեն վերագրվում է դուրս գալիս։ Դրանք չորս տարբեր հարցեր են, և գոտու քաղաքականությունը բոլորին պատասխանում է միանգամից նույն արժեքով, դրա համար էլ ամբողջ գոտու փոփոխությունը կոպիտ գործիք է։ Անվանված կանոնը կարող է պատասխանել դրանցից մեկին՝ չդիպչելով մյուսներին։
Օգտակար քարտեզը ըստ երթևեկության դերի է, որովհետև հենց դա կարող եք դիտել, երբ ինչ-որ բան ձախողվում է։ Ստորև յուրաքանչյուր դեր ունի մեկ կառավարում, որը որոշում է այն, և մեկ ախտանիշ, որը մատնանշում է դրան:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The 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 քաղաքականություն փոխելը, և հետևեք կազմաձևման տիրոջ ստուգման ու հետադարձի ընթացակարգին։ Փոփոխությունը, որը ձեզ կողպում է երթուղիչից դուրս, փորձարկման արդյունք չէ, դա երկրորդ միջադեպ է։ Գրանցեք գոտին և երթևեկության դերը յուրաքանչյուր դիտարկման կողքին, որպեսզի արդյունքների զույգը բացատրի քաղաքականությունը՝ հաջողակ էջի բեռնում նկարագրելու փոխարեն։