OpenVPN-ի սպասարկողները չեն տեսնում միմյանց՝ ենթացանց, թե՞ net30
Սպասարկողները հասնում են սերվերին, բայց ոչ միմյանց։ Առանձնացրեք խափանումը մեկ ping-ով, ապա ընտրեք ենթացանցի տոպոլոգիա, client-to-client կամ կամրջված TAP հատված։
Երկու անկապ խափանումներ առաջացնում են նույն բողոքը։ Առաջինում մի սպասարկող չի հասնում մյուսին նույնիսկ թունելի հասցեով, որովհետև հասցեները մեկ ենթացանցում չեն կամ սերվերը չի փոխանցում հավասարազորների միջև երթևեկը։ Երկրորդում ping-ը աշխատում է, իսկ հավելվածի սարքերի ցանկը մնում է դատարկ, որովհետև հայտնաբերումը հիմնված է broadcast-ի վրա, որը 3-րդ շերտի թունելը չի կարող կրել։ Մեկ ping-ը բաժանում է նրանց, և յուրաքանչյուրի շտկումը բոլորովին նման չէ մյուսի շտկմանը։
Մեկ ping-ը խնդիրը բաժանում է երկուսի
Մի սպասարկողից ping արեք մյուսի թունելի հասցեին, ոչ նրա անվանը և ոչ նրա LAN հասցեին։ Եթե դա ձախողվի, խնդիրը փոխանցելն է կամ հասցեավորումը, և հայտնաբերումը անտեղի է, քանի դեռ դա չի շտկվել։ Եթե հաջողվի, փոխանցումն արդեն աշխատում է, և մնացած բացը broadcast-ն է կամ անունների լուծումը։
ip addr show tun0
Առաջին հերթին կարդացեք սպասարկողի ինտերֆեյսը, որովհետև ցանցային դիմակն է անվանում տոպոլոգիան։ /24 կամ այլ ենթացանցային դիմակ նշանակում է ընդհանուր ավազան՝ սպասարկողի հասցեով /30 նշանակում է հին կետ-կետ դասավորությունը, որտեղ յուրաքանչյուր սպասարկող ունի ուղիղ մեկ հարևան՝ սերվերը։
net30 ընդդեմ ենթացանցի՝ կարդացված սպասարկողի կողմից
| What you observe | net30 | subnet |
|---|---|---|
| Client netmask | /30 with a peer address | The pool's own mask |
| Peers a client can address directly | One, the server | Every client in the pool |
| Addressing | One /30 block per client, with the server as the only peer | One pool mask shared by all clients |
| Effect of client-to-client | Required for any peer traffic | Required for peer traffic, still no broadcast |
net30-ի դեպքում սերվերը տալիս է փոքր բլոկ յուրաքանչյուր սպասարկողի, այնպես որ մյուս սպասարկողի թունելի հասցեին ուղի գոյություն չունի, եթե սերվերը չփոխանցի այն։ Ենթացանցի դեպքում ամբողջ ավազանը մեկ ցանց է, յուրաքանչյուր սպասարկող կարող է դիմել ցանկացածին, և սերվերը փոխանցում է նրանց միջև։ Դրա համար է, որ սերվերի մի կարգավորում կարող է առողջ թվալ, մինչդեռ հավասարազորների ping-ը ձախողվում է՝ ոչինչ կոտրված չէ, սպասարկողները պարզապես մեկ ցանցում չեն։ Սպասարկողը տեսնում է աշխատող կապ և չպատասխանող հավասարազորի հասցե, ինչը հնչում է որպես firewall, բայց հասցեավորման դասավորություն է։
Ուղղորդիչի փոխումը սերվերի կողմի խմբագրում և վերագործարկում է, և վերաբերում է հաջորդ կապին, ոչ արդեն բացված սեսիաներին։ Նորից միացրեք սպասարկողներին՝ փոփոխությունը գնահատելուց առաջ։ Եթե սարքը վեբ ինտերֆեյսից նորից գեներացնում է կարգավորումը, գրանցեք ուղղորդիչը, ֆայլը և ամսաթիվը, և խմբագրումը կատարեք ինտերֆեյսի միջոցով, երբ այն կա, որովհետև վերակառուցումը կջնջի ձեռքով արված փոփոխությունը հաջորդ պահպանման ժամանակ։
client-to-client-ը առանձին դարպաս է
Նույնիսկ մեկ ենթացանցի ներսում սերվերը գցում է այն փաթեթները, որոնք գալիս են մի սպասարկողից և ուղղված են մյուսին, եթե client-to-client-ը սահմանված չէ։ Այդ բանալի բառը սերվերը դարձնում է հավասարազորների երթևեկի փոխանցիչ՝ փոխարենը լոկ ընդունող վերջնակետ լինելու։ Սա այն երկրորդ պայմանն է, որը մարդիկ բաց են թողնում տոպոլոգիան շտկելուց հետո։
Սա չի տարածվում broadcast-ի վրա։ Կարգավորումը փոխանցում է unicast սպասարկողների միջև՝ այն թունելը չի դարձնում ընդհանուր հատված, և դրա ոչ մի քանակություն multicast հայտնաբերման հարցում չի հասցնի յուրաքանչյուր հավասարազորի։
TUN ընդդեմ TAP-ի, և ինչ կարող է կրել յուրաքանչյուրը
| Property | TUN | TAP |
|---|---|---|
| Layer | Layer 3, IP packets | Layer 2, Ethernet frames |
| Broadcast and multicast | Not carried | Carried |
| Bridging to the LAN | Not applicable | Required for a shared segment |
| Client platform support | Everywhere | Missing on Android and iOS, limited on macOS |
tap սարքը LAN-ի մեջ կամրջելը հեռավոր սպասարկողներին դնում է գրասենյակի broadcast տիրույթում, ինչը լիովին լուծում է հայտնաբերումը։ Գինը այն պլատֆորմներն են, որոնք չեն իրականացնում TAP, սերվերի վրա պարտադիր կամուրջը, և խափանման տիրույթ, որտեղ գրասենյակի մալուխի broadcast փոթորիկը հասնում է յուրաքանչյուր հեռավոր նոթբուքի։
Անունների լուծում պահանջող երկու կամ երեք աշխատանքային կայանի համար hosts գրառումը կամ unicast հասցեն շատ ավելի էժան է, քան կամուրջը։ Դիմեք TAP-ին, երբ պրոտոկոլը, որը չեք կարող փոխարինել, կախված է 2-րդ շերտի հայտնաբերումից, և ոչ ավելի վաղ։
Նույն ենթացանցի սպասարկողներն առանց կամրջի
LAN տիրույթից հասցե տալը սպասարկողին մալուխի վրա չի դնում։ Սերվերը երթուղավորում է թունելի և Ethernet-ի միջև, այնպես որ այդ հասցեի ARP-ը կանգ է առնում սերվերի ինտերֆեյսում, և LAN-ի մնացած մասը երբեք չի իմանում, թե որտեղ է այն ապրում։
ip neigh add proxy 10.50.1.250 dev eth0
Proxy ARP-ը փակում է այդ բացը՝ սերվերին թույլ տալով պատասխանել սպասարկողի փոխարեն։ Տիրույթի համար parpd-ն կառավարում է գրառումները, մինչ սպասարկողները գալիս ու գնում են, իսկ sysctl net.ipv4.conf.eth0.proxy_arp=1-ը պատասխանում է այն ամենի համար, ինչ երթուղվում է այլ տեղ, ինչը բավական լայն է, որպեսզի զբաղված հատվածում սեփական անակնկալներ ստեղծի։
Ինչ ուղի էլ ընտրեք, հանեք NAT-ը թունելի և մալուխի միջև։ MASQUERADE կանոնը հենց թաքցնում է այն հասցեավորման հարցը, որին փորձում եք պատասխանել։ Այն նաև հաջորդ մարդուն թողնում է տոպոլոգիա, որի մասին նա չի կարող մտածել սպասարկողի կողմից։
Որևէ բան փոխելուց առաջ սերվերի վրա tcpdump -ni tun0-ով մեկ փորձ բռնեք և հաստատեք՝ արդյոք հավասարազորի փաթեթը ընդհանրապես հասնում է։ Հասնել և դեն նետվելը մատնանշում է client-to-client՝ երբեք չհասնելը մատնանշում է տոպոլոգիա կամ երթուղավորում։ OpenVPN 2.6 ձեռնարկը փաստագրում է երկու բանալի բառերն ու լռելյայն տոպոլոգիան, ինչն արժե համեմատել ձեր տարբերակի հետ՝ ֆորումի գրառումից տող պատճենելուց առաջ։
- tun ինտերֆեյսը ցույց է տալիս ավազանի դիմակ, ոչ թե /30 հավասարազոր զույգ։
- Ուղիղ ping-ը մյուս թունելի հասցեին հաջողվում է նախքան հայտնաբերումը ստուգելը։
- Սերվերի կարգավորումը ներառում է
client-to-clientամեն անգամ, երբ հավասարազորները պետք է փոխանակեն փաթեթներ։ - Անվանեք այն հայտնաբերման պրոտոկոլը, որը ստուգում եք, փոխարենը ասելու, թե հավելվածը ձախողվում է։
- Օգտագործեք TAP միայն այն դեպքում, երբ խմբի յուրաքանչյուր սպասարկողի պլատֆորմ աջակցում է դրան։
- NAT-ը պահեք թունելի և LAN-ի միջև ուղուց դուրս, երբ կարևոր է նույն ենթացանցի ներսում հասանելիությունը։