Սարքերը, որոնք երթուղավորում են LAN-ի համար և միաժամանակ միանում VPN-ին, հայտնվում են նույն վեճի մեջ իրենց հետ՝ թունելը ցանկանում է տիրել լռելյայն երթուղուն, իսկ LAN-ին այն հետ է պետք։ Երբ OpenVPN-ը միանում է, այն կարող է տեղադրել լռելյայն երթուղի թունելով կամ զույգ կիսալռելյայն երթուղիներ, ինչը ճիշտ է նոթբուքի համար և սխալ՝ դարպասի համար, որի հարևանները պատասխաններ են սպասում նրա LAN հասցեից։ Պատասխանը VPN-ը բաց թողնելը չէ։ Պատասխանը երկու որոշումներին տարբեր աղյուսակներ տալն է։

Մեկ լռելյայն երթուղի, երկու սեփականատեր

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

OpenVPN-ն ունի անջատիչ հենց սրա համար։ route-noexec թույլ չի տալիս հաճախորդին ընդհանրապես դիպչել հիմնական աղյուսակին, և այն արժեքները, որոնք նա կօգտագործեր, արտահանվում են route-up սկրիպտին որպես route_vpn_gateway, dev և ինտերֆեյսի հասցեներ։ Այնուհետև դուք եք որոշում, թե որ աղյուսակը որ երթուղին կստանա՝ կոդում, որը կարող եք ավելի ուշ կարդալ։

Քաղաքականության աղյուսակն ընդդեմ հիմնականի վերագրման

ApproachWhat it buysWhat it costs
Separate table plus source ruleLAN traffic and host traffic keep independent defaultsEvery lookup now depends on rule order
Editing the main table onlyFewer moving parts on a single-purpose hostOne mistake takes the gateway offline entirely
Two half-default routesWorks for a full-tunnel clientAmbiguous on a host that must answer on its LAN address

Առանձին աղյուսակը միակ տարբերակն է, որ մասշտաբվում է մեկ ենթացանցից այն կողմ։ Անվանիր այն մեկ անգամ, ապա հղում արա անունով, որպեսզի ոչ ոքի թիվ հիշել պետք չգա։

echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpn

Այստեղ հասցեները տեղապահեր են։ Փոխարինիր LAN նախածանցը, թունելի դարպասը և սարքի անունը քո սեփական տեղակայումից նախքան որևէ բան գործարկելը։

Կանոնը պետք է համընկնի նաև հոսթի հետ

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

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

ip route get 203.0.113.9 from 192.168.50.1

Եթե դա թունելի սարքն է ցույց տալիս այն նպատակակետի համար, որը պետք է մնա տեղական, ապա կանոնների բազմությունը սխալ է՝ անկախ նրանից, թե ինչ է պարունակում աղյուսակը։

NAT, թե երթուղի հեռավոր կողմում

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

iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADE

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

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

Դարձրու բաժանումը դիմացկուն վերամիացման նկատմամբ

Ձեռքով ավելացված կանոններն ու երթուղիները անհետանում են, երբ ինտերֆեյսը նորից ստեղծվում է, և հնացած աղյուսակային գրառումը կարող է ապրել ավելի երկար, քան այն արդարացրած սեսիան։ Տեղադրիր աղյուսակի կանոնը, թունելի երթուղին և քողարկման գրառումը հաճախորդի route-up սկրիպտի մեջ և մաքրիր աղյուսակը սկրիպտի սկզբում, որպեսզի հին դարպասը չկարողանա ապրել նոր սեսիայում։

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

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