Երկու անկապ խափանումներ առաջացնում են նույն բողոքը։ Առաջինում մի սպասարկող չի հասնում մյուսին նույնիսկ թունելի հասցեով, որովհետև հասցեները մեկ ենթացանցում չեն կամ սերվերը չի փոխանցում հավասարազորների միջև երթևեկը։ Երկրորդում ping-ը աշխատում է, իսկ հավելվածի սարքերի ցանկը մնում է դատարկ, որովհետև հայտնաբերումը հիմնված է broadcast-ի վրա, որը 3-րդ շերտի թունելը չի կարող կրել։ Մեկ ping-ը բաժանում է նրանց, և յուրաքանչյուրի շտկումը բոլորովին նման չէ մյուսի շտկմանը։

Մեկ ping-ը խնդիրը բաժանում է երկուսի

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

ip addr show tun0

Առաջին հերթին կարդացեք սպասարկողի ինտերֆեյսը, որովհետև ցանցային դիմակն է անվանում տոպոլոգիան։ /24 կամ այլ ենթացանցային դիմակ նշանակում է ընդհանուր ավազան՝ սպասարկողի հասցեով /30 նշանակում է հին կետ-կետ դասավորությունը, որտեղ յուրաքանչյուր սպասարկող ունի ուղիղ մեկ հարևան՝ սերվերը։

net30 ընդդեմ ենթացանցի՝ կարդացված սպասարկողի կողմից

What you observenet30subnet
Client netmask/30 with a peer addressThe pool's own mask
Peers a client can address directlyOne, the serverEvery client in the pool
AddressingOne /30 block per client, with the server as the only peerOne pool mask shared by all clients
Effect of client-to-clientRequired for any peer trafficRequired for peer traffic, still no broadcast

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

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

client-to-client-ը առանձին դարպաս է

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

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

TUN ընդդեմ TAP-ի, և ինչ կարող է կրել յուրաքանչյուրը

PropertyTUNTAP
LayerLayer 3, IP packetsLayer 2, Ethernet frames
Broadcast and multicastNot carriedCarried
Bridging to the LANNot applicableRequired for a shared segment
Client platform supportEverywhereMissing 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-ի միջև ուղուց դուրս, երբ կարևոր է նույն ենթացանցի ներսում հասանելիությունը։

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