NEVPNManager සුරකින්නේ නැද්ද? අනුපිළිවෙල වන්නේ පූරණය, සක්රීය කිරීම, සුරැකීම, සම්බන්ධ වීම
4 සහ 5 කේත සාමාන්යයෙන් අදහස් කරන්නේ පැතිකඩ පූරණයට පෙර සංස්කරණය කළ බව හෝ අබල කළ තත්ත්වයේ සුරකින ලද බවය. ඇමතුම් අනුපිළිවෙල නිවැරදි කරන්න, පසුව entitlement පරීක්ෂා කරන්න.
iOS හි Network Extension VPN සඳහා පළමු උත්සාහයන් බොහොමයක් දෙනෙක් දෝෂ කේත දෙකක් පැහැදිලි කරයි: NEVPNErrorDomain Code=4 සහ Code=5. ඒවායින් කිසිවක් සේවාදායකයේ පැමිණිල්ලක් නොවේ. එකක් දිස්වන්නේ යෙදුම තැටියෙන් කිසිදා නොකියවූ වස්තුවකට සැකසුම් ලියන විටද, අනෙක ලිවීමම අසාර්ථක වන විටද, බොහෝ විට පැතිකඩ තවමත් අබලව ඇති විට සුරකින නිසාය. දෙකම ඇමතුම් හතරක අනුපිළිවෙල වෙනස් කිරීමෙන් නිවැරදි වේ, IKEv2 පරාමිතීන් ස්පර්ශ කිරීමෙන් නොවේ.
මුලින්ම පූරණය කරන්න, නැත්නම් සුරැකීමට සංසන්දනය කිරීමට දෙයක් නැත
කළමනාකරු සුරකින ලද පැතිකඩේ පිටපතක් රඳවා ගනී, ඔබ සංස්කරණය කරන වස්තුව එය කියවන තෙක් එම පිටපත නොවේ. මුලින්ම loadFromPreferences අමතන්න, එහි සම්පූර්ණ කිරීමේ හසුරුව තුළ සංස්කරණය කරන්න, පසුව සුරකින්න. කියවීම මඟ හැරියහොත්, රාමුව තමා සතු දෙය සහ ඔබ ලියන දෙය අතර නොගැළපීමක් දකී. Swift හි සෑම පියවරකම හැඩය සමානය, සහ සෑම පියවරක්ම එහිම ක්ලෝසරයට අයත් වේ:
let mgr = NEVPNManager.shared()
mgr.loadFromPreferences { loadErr in
guard loadErr == nil else { return }
let proto = NEVPNProtocolIKEv2()
proto.serverAddress = "vpn.example.net"
proto.username = "alice"
proto.useExtendedAuthentication = true
mgr.protocolConfiguration = proto
mgr.isEnabled = true
mgr.saveToPreferences { saveErr in
// do not start here; reload, then connect
}
}
සුරැකීමේ ක්ලෝසරය තුළින් උමග ආරම්භ කිරීම වෙනත් තැනක එම වැරැද්දය. එය පැතිකඩ නැවත කියවීමට පෙර ක්රියාත්මක වේ, එබැවින් ආරම්භක ඇමතුම ඔබ ගොඩනැගූ තත්ත්වය දකී, සුරකින ලද තත්ත්වය නොවේ. සුරැකීමේ ක්ලෝසරය දෙවන loadFromPreferences සමඟ අවසන් වේ, එම සම්පූර්ණ කිරීමේ හසුරුව පමණක් startVPNTunnel අමතයි.
සක්රීය කිරීමේ ධජය සුරැකීමේ කොටසකි
සුරකින ලද පැතිකඩ ක්රියාත්මක නොවන අතර එය ක්රියාත්මක කරන තෙක්. isEnabled = true එම ලිවීමේම සකසන්න, නැත්නම් පැතිකඩ අබල ලෙස තැටියට පැමිණේ, සැකසුම් සම්පූර්ණ දිස්වන වින්යාසයක් පෙන්වුවත් startVPNTunnel ප්රතික්ෂේප කරයි.
බාහිර සංස්කරණ මෙහි අනෙක් අඩකි. පරිශීලකයා සැකසුම්වල යමක් වෙනස් කළහොත්, හෝ උපාංගය ජාල අතර ගමන් කළහොත්, තවමත් මතකයේ රඳවා ගෙන ඇති අගයන් විශ්වාස කිරීමට පෙර නැවත කියවන්න. වස්තුව එම වෙනස්කම් ඔබ වෙනුවෙන් නිරීක්ෂණය නොකරයි. පැරණි පිටපතක් යනු පරිශීලකයාගේ සංස්කරණය නිශ්ශබ්දව ආපසු හරවන පැතිකඩක් යෙදුම ලියන ක්රමයයි. යාබද ක්ෂේත්ර දෙකක් එකම මොහොතේ නිශ්ශබ්ද ගැටලුවක් ඇති කරයි: on-demand නීති හිස් ආදේශකයක් නොව නීති වස්තු අරාවක් විය යුතුය, සහ disconnectOnSleep පිටපත් කළ පෙරනිමියක් නොව ඔබ තෝරාගත් හැසිරීම පිළිබිඹු කළ යුතුය.
තෙවන පාර්ශව යෙදුම් සඳහා ලබා ගත හැක්කේ ප්රොටෝකෝල දෙකක් පමණි
Network Extension යෙදුම්වලට IPsec සහ IKEv2 ලබා දෙයි. L2TP සහ PPTP පද්ධතිය තුළම රැඳී සිටී, එබැවින් ඒවා අවශ්ය යෙදුමකට ඒවා ලබා ගත නොහැක, සහ යථාර්ථවාදී පිළිතුරු වන්නේ IKEv2 හැකියාව ඇති ද්වාරයක් හෝ කළමනාකරණය කළ වින්යාස පැතිකඩක් ය.
ප්රවේශ අක්තපත්ර ද එම රටාවම අනුගමනය කරයි. මුරපදය Keychain හි තබා තන්තුව වෙනුවට ස්ථිර යොමුවක් ලබා දෙන්න. සුරකින විට ශුන්ය යොමුවක් යනු සාමාන්යයෙන් අයිතමය ලියන පෙර සෙවීම ක්රියාත්මක වූ බවය, කළමනාකරු කැඩී ඇති බව නොවේ.
දෙකම නිර්මාණ තීරණ මිස විකල්ප මාර්ග නොවේ. මුරපදය තමන්ගේම මනාපවල තබා ගන්නා යෙදුම රාමුව අධෛර්යමත් කරන මාර්ගයක් තෝරා ගනී, සහ එය නිපදවන අසාර්ථකත්වය සුරැකීමේ දෝෂයක් ලෙස කියවේ.
කේතය නැවත ලිවීමට පෙර entitlement බැහැර කරන්න
loadFromPreferences කිසිසේත් ආපසු අමතන්නේ නැත්නම්, බොහෝ විට හේතුව නැතිවූ Network Extension හැකියාවක් හෝ එය නොදරන සැපයුම් පැතිකඩක් ය. එම අසාර්ථකත්වය දෝෂයක් නොදී එල්ලී තිබේ, ඒ නිසාම ක්රියාකාරී කේත පැය ගණනක් නැවත ලියැවේ. ඔබ නිකුත් කිරීමට යන අත්සන් කළ ගොඩනැගීමේ entitlement පරීක්ෂා කරන්න, මන්ද සිමියුලේටරයේ සහ උපාංගයේ ධාවනය වෙනස් විය හැකි අතර වැදගත් ඉලක්කය උපාංගයයි. ඉලක්කයේ අත්සන් සැකසුම් විවෘත කර එම නිශ්චිත ගොඩනැගීම සඳහා Network Extension හැකියාව ඇති බව තහවුරු කරන්න.
entitlement නොමැති සැපයුම් පැතිකඩක් දෘඩාංගයේ එලෙසම අසාර්ථක වේ, එම ගොඩනැගීමම සිමියුලේටරයේ සාමාන්ය ලෙස පූරණය විය හැකි නමුත්. ඇමතුම් අනුපිළිවෙල නැවත ලිවීමට පෙර අත්සන් කළ ලේඛනාගාරය සැබෑ උපාංගයක පරීක්ෂා කරන්න.
උපකල්පන නොව තත්ත්ව වෙනස්කම් දෙස බලන්න
NEVPNStatusDidChangeNotification නිරීක්ෂණය කර සෑම පියවරකට පසුව manager.connection.status ලඝු කරන්න. invalid නොහැර කිසිදා නොයන තත්ත්වයක් යනු පැතිකඩ සුරකිා නැති බව හෝ entitlement නැති බවය. connecting දක්වා ළඟා වී කිසිදා සම්බන්ධ නොවන සම්බන්ධතාවය යෝජනාව හෝ ප්රවේශ අක්තපත්ර වෙත යොමු කරයි, එය වෙනත් සාක්ෂි සහිත වෙනත් විමර්ශනයකි.
පැතිකඩ සැකසුම්, සාමාන්ය, VPN යටතේ දිස්වන බව තහවුරු කර සෑම ක්ලෝසරයකම දෝෂය සටහන් කරන්න. එම කරුණු දෙක උපකල්පනයකින් තොරව අනුපිළිවෙල දෝෂය අවසර දෝෂයෙන් වෙන් කරයි.