OpenVPN ක්ලයන්ට් එකිනෙකා නොදකින්නේ ඇයි: subnet ද net30 ද?
ක්ලයන්ට් සර්වරයට ළඟා වේ, නමුත් එකිනෙකාට නොවේ. එක ping එකකින් දෝෂය වෙන් කරන්න, පසුව subnet ටොපොලොජිය, client-to-client හෝ bridge කළ TAP කොටස තෝරන්න.
සම්බන්ධයක් නැති දෝෂ දෙකක් එකම පැමිණිල්ල උත්පාදනය කරයි. පළමුවැන්නේදී එක් ක්ලයන්ට් එකක් අනෙකාට tunnel ලිපිනයෙන් පවා ළඟා නොවේ, මන්ද ලිපින එකම subnet එකක නොමැති නිසා හෝ සර්වරය සහකරුවන් අතර ගමන් ඉදිරියට නොයවන නිසා. දෙවැන්නේදී ping ක්රියා කරයි, නමුත් යෙදුමේ උපාංග ලැයිස්තුව හිස්ව පවතී, මන්ද සොයාගැනීම 3 ස්ථරයේ tunnel එකකට ගෙනයා නොහැකි broadcast මත රඳා පවතින නිසා. එක ping එකක් ඒවා වෙන් කරයි, සහ එකින් එකට ඇති නිරාකරණය අනෙකට ඇති නිරාකරණයට කිසිසේත් සමාන නොවේ.
එක ping එකක් ගැටලුව දෙකට බෙදයි
එක් ක්ලයන්ට් එකකින් අනෙක් ක්ලයන්ට් එකේ tunnel ලිපිනයට ping කරන්න, එහි නාමයට හෝ එහි LAN ලිපිනයට නොවේ. එය අසාර්ථක නම්, ඉදිරියට යැවීම හෝ ලිපිනකරණය ගැටලුවයි, සහ එය නිරාකරණය වන තෙක් සොයාගැනීම අදාළ නොවේ. එය සාර්ථක නම්, ඉදිරියට යැවීම දැනටමත් ක්රියා කරයි, ඉතිරි පරතරය broadcast හෝ නාම විභේදනයයි.
ip addr show tun0
සියල්ලට පෙර ක්ලයන්ට් එකේ අතුරුමුහුණත කියවන්න, මන්ද ජාල ආවරණය ටොපොලොජිය නම් කරයි. /24 හෝ වෙනත් subnet ආවරණයක් යනු හවුල් තටාකයකි; සහකරු ලිපිනයක් සහිත /30 යනු පැරණි ලක්ෂ්යයෙන් ලක්ෂ්යයට සැලැස්මයි, එහිදී සෑම ක්ලයන්ට් එකකටම හරියටම එක් අසල්වැසියෙක් සිටී, සර්වරය.
net30 සහ subnet, ක්ලයන්ට් පැත්තෙන් කියවන විට
| 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 තුළ සර්වරය සෑම ක්ලයන්ට් එකකටම කුඩා කොටසක් ලබා දෙයි, එබැවින් සර්වරය එය ඉදිරියට නොයැවූ තාක් අනෙක් ක්ලයන්ට් එකේ tunnel ලිපිනයට මාර්ගයක් නොපවතී. subnet තුළ මුළු තටාකයම එක් ජාලයකි, සෑම ක්ලයන්ට් එකකටම ඕනෑම අයෙකු අමතන්න පුළුවන්, සහ සර්වරය ඔවුන් අතර ඉදිරියට යවයි. එබැවින් එක් සර්වර සැකසුමක් නිරෝගී ලෙස පෙනෙන අතරේ සහකරුවන් අතර ping අසාර්ථක විය හැක: කිසිවක් කැඩී නැත, ක්ලයන්ට් එකම ජාලයක නොමැති වීම පමණි. ක්ලයන්ට් එකට ක්රියාකාරී සම්බන්ධයක් සහ පිළිතුරු නොදෙන සහකරු ලිපිනයක් පෙනේ, එය firewall එකක් ලෙස කියවුණද ඇත්තෙන්ම ලිපිනකරණ සැලැස්මකි.
නියමය වෙනස් කිරීම සර්වර පැත්තේ සංස්කරණයක් සහ නැවත ආරම්භ කිරීමකි, සහ එය දැනටමත් විවෘත සැසිවලට නොව ඊළඟ සම්බන්ධතාවයට අදාළ වේ. වෙනස තක්සේරු කිරීමට පෙර ක්ලයන්ට් නැවත සම්බන්ධ කරන්න. උපාංගය වෙබ් අතුරුමුහුණතකින් සැකසුම නැවත ජනනය කරන්නේ නම්, නියමය, ගොනුව සහ දිනය සටහන් කරන්න, සහ අතුරුමුහුණතක් ඇති විට එය හරහා සංස්කරණය කරන්න, මන්ද නැවත ගොඩනැගීමක් ඊළඟ සුරැකීමේදී අතින් කළ සංස්කරණය පරාජය කරනු ඇත.
client-to-client වෙනම දොරටුවකි
එකම subnet එකක් තුළදීත්, client-to-client සකසා නොමැති නම්, එක් ක්ලයන්ට් එකකින් පැමිණ අනෙකාට යොමු කළ පැකට් සර්වරය ඉවත ලයි. එම මූලික වචනය සර්වරය භාරගන්නා අන්ත ලක්ෂ්යයක් වෙනුවට සහකරු ගමන් ඉදිරියට යවන්නෙකු බවට පත් කරයි. ටොපොලොජිය නිරාකරණය කිරීමෙන් පසු මිනිසුන් අතපසු කරන දෙවන කොන්දේසය මෙයයි.
මෙය broadcast දක්වා විහිදෙන්නේ නැත. සැකසුම ක්ලයන්ට් අතර unicast ඉදිරියට යවයි; එය tunnel එක හවුල් කොටසක් බවට පත් නොකරයි, සහ එහි කොපමණ ප්රමාණයක් වුවද 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 එකට bridge කිරීම දුරස්ථ ක්ලයන්ට් කාර්යාලයේ broadcast වසමට ගෙන එයි, එය සොයාගැනීම සම්පූර්ණයෙන්ම නිරාකරණය කරයි. මිල වන්නේ TAP ක්රියාත්මක නොකරන වේදිකා, සර්වරයේ තිබිය යුතු bridge එකක්, සහ කාර්යාල කේබලයේ broadcast කුණාටුව සෑම දුරස්ථ ලැප්ටොප් එකකටම ළඟා වන අසාර්ථක වසමයි.
නාම විභේදනය අවශ්ය වන සේවා ස්ථාන දෙකකට හෝ තුනකට, hosts සටහනක් හෝ unicast ලිපිනයක් bridge එකකට වඩා බෙහෙවින් ලාභදායී වේ. ඔබට ප්රතිස්ථාපනය කළ නොහැකි ප්රොටොකෝලයක් 2 ස්ථරයේ සොයාගැනීම මත රඳා පවතින විට පමණක් TAP වෙත යන්න, ඊට පෙර නොවේ.
bridge එකක් නොමැති එකම subnet ක්ලයන්ට්
LAN පරාසයෙන් ලිපිනයක් දීම ක්ලයන්ට් එක කේබලය මත නොතබයි. සර්වරය tunnel සහ Ethernet අතර මාර්ග කරයි, එබැවින් එම ලිපිනයට ARP සර්වරයේ අතුරුමුහුණතේ නතර වේ, සහ ඉතිරි LAN එය කොහේ ජීවත් වේ දැයි කිසිදා නොදනී.
ip neigh add proxy 10.50.1.250 dev eth0
Proxy ARP එම පරතරය වසා දමයි, සර්වරය ක්ලයන්ට් වෙනුවෙන් පිළිතුරු දෙයි. පරාසයකට parpd සටහන් කළමනාකරණය කරයි ක්ලයන්ට් එන විට සහ යන විට, අනෙක් අතට sysctl net.ipv4.conf.eth0.proxy_arp=1 වෙනත් තැනකට මාර්ග කරන සියල්ලට පිළිතුරු දෙයි, එය කාර්යබහුල කොටසක තමන්ගේම පුදුම ඇති කිරීමට තරම් පළල් ය.
ඔබ තෝරන මාර්ගය කුමක් වුවත්, tunnel සහ කේබලය අතර NAT ඉවත් කරන්න. MASQUERADE රීතිය ඔබ පිළිතුරු දීමට උත්සාහ කරන ලිපිනකරණ ප්රශ්නය හරියටම සඟවයි. එය ඊළඟ පුද්ගලයාට ක්ලයන්ට් පැත්තෙන් සිතිය නොහැකි ටොපොලොජියක්ද ඉතිරි කරයි.
කිසිවක් වෙනස් කිරීමට පෙර, සර්වරයේ tcpdump -ni tun0 සමඟ එක් උත්සාහයක් ග්රහණය කර සහකරු පැකට් පැමිණෙන්නේදැයි තහවුරු කරන්න. පැමිණ ඉවත ලැබීම client-to-client වෙත යොමු කරයි; කිසිදා නොපැමිණීම ටොපොලොජිය හෝ මාර්ගකරණය වෙත. OpenVPN 2.6 අත්පොත මූලික වචන දෙකම සහ පෙරනිමි ටොපොලොජිය ලේඛනගත කරයි, සහ සංසද පෝස්ට් එකකින් පේළියක් පිටපත් කිරීමට පෙර ඔබේ අනුවාදය සමඟ සසඳා බැලීම වටී.
- tun අතුරුමුහුණත /30 සහකරු යුගලයක් වෙනුවට තටාක ආවරණයක් පෙන්වයි.
- සොයාගැනීම පරීක්ෂා කිරීමට පෙර අනෙක් tunnel ලිපිනයට සෘජු ping සාර්ථක වේ.
- සහකරුවන් පැකට් හුවමාරු කළ යුතු සෑම විටම සර්වර සැකසුමේ
client-to-clientඅඩංගු වේ. - යෙදුම අසාර්ථක වේ යැයි කීම වෙනුවට ඔබ පරීක්ෂා කරන සොයාගැනීමේ ප්රොටොකෝලය නම් කරන්න.
- කණ්ඩායමේ සෑම ක්ලයන්ට් වේදිකාවක්ම සහාය දෙන්නේ නම් පමණක් TAP භාවිත කරන්න.
- එකම subnet තුළ ළඟා වීම වැදගත් වන විට NAT එක tunnel සහ LAN අතර මාර්ගයෙන් බැහැර තබන්න.