ಟನಲ್ ಆನ್ ಇದ್ದಾಗ ಒಂದು ಸ್ಕ್ರೀನ್ ಬೇರೆ ರೀತಿ ವರ್ತಿಸಬೇಕು, ಮತ್ತು ಅದನ್ನು ಹೇಳುವ ಯಾವುದೇ ಕರೆ ಇಲ್ಲ. ಇದೇ ಶಿಪ್ಪಿಂಗ್ ಮಿತಿ: macOS ನಲ್ಲಿ ಯಾವುದೇ ಸಾರ್ವಜನಿಕ ಫ್ರೇಮ್‌ವರ್ಕ್ ಅನಿಯಂತ್ರಿತ VPN ಸಂಪರ್ಕಗೊಂಡಿದೆಯೇ ಎಂದು ವರದಿ ಮಾಡುವುದಿಲ್ಲ, ಮತ್ತು iOS ನಲ್ಲಿ ಸ್ಥಿತಿ ಕಾನ್ಫಿಗರೇಶನ್ ಸ್ಥಾಪಿಸಿದ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಸೇರಿದೆ. ಕೆಳಗಿನ ಪರಿಶೀಲನೆಗಳು ಆ ಮಿತಿಯಿಂದ ನೀವು ಶಿಪ್ ಮಾಡಬಹುದಾದವರೆಗೆ ಕರೆದೊಯ್ಯುತ್ತವೆ, ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ಹುಡುಕಾಟವನ್ನು ಬೇಗ ಮುಗಿಸಬಹುದು.

ಪರಿಶೀಲನೆ 1: ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸಲು ಸಾಧ್ಯವೇ?

ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ಯಾವುದೇ API ಗಿಂತ ಮೊದಲು ಪ್ರಶ್ನೆಯನ್ನು ಬಗೆಹರಿಸುತ್ತದೆ. ಮೂರನೇ ಪಕ್ಷದ ಪ್ರಕ್ರಿಯೆ ಇನ್ನೊಬ್ಬ ಮಾರಾಟಗಾರನ ವಿಸ್ತರಣೆಯನ್ನು ಎಣಿಸಲಾರದು, ಮತ್ತು ಆ ವಿಸ್ತರಣೆಯ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನೂ ಓದಲಾರದು, ಆದ್ದರಿಂದ ಕೇಳಲು ಯಾವುದೇ ಬೆಂಬಲಿತ ವಸ್ತು ಇಲ್ಲ.

ಪ್ರತಿ ಬೈಪಾಸ್ ಅದೇ ಗೋಡೆಗೆ ಬಡಿಯುತ್ತದೆ. ಇಂಟರ್ಫೇಸ್ ಪಟ್ಟಿಗಳು, scutil --nc list ಮತ್ತು ನೇರ ಸಿಸ್ಟಮ್-ಕಾನ್ಫಿಗರೇಶನ್ ಓದುವಿಕೆಗಳು ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ತಡೆಹಿಡಿಯುವ ಅನುಮತಿಗಳನ್ನು ಬೇಡುತ್ತವೆ ಅಥವಾ Apple ಎಂದೂ ಭರವಸೆ ನೀಡದ ವರ್ತನೆಯನ್ನು ಅವಲಂಬಿಸಿವೆ. ಯೋಜನೆಗೆ ಇವುಗಳಲ್ಲಿ ಒಂದು ಬೇಕಾದರೆ, ಸಮಸ್ಯೆ ಯೋಜನೆಯಲ್ಲೇ ಇದೆ. ದಾಖಲೆಯಾಗದ ವಿವರದ ಮೇಲೆ ಕಟ್ಟಿದ ವೈಶಿಷ್ಟ್ಯವು ಡೆಲಿವರಿ ದಿನಾಂಕವಿರುವ ಬೆಂಬಲ ಟಿಕೆಟ್.

ಪರಿಶೀಲನೆ 2: ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಟನಲ್ ಅನ್ನು ತಾನೇ ನಿರ್ವಹಿಸುತ್ತದೆಯೇ?

ಹೌದಾದರೆ, ನಿಮ್ಮ ಸ್ವಂತ ಕಾನ್ಫಿಗರೇಶನ್‌ಗೆ ಬೆಂಬಲಿತ ಉತ್ತರ ಇದೆ. ಆದ್ಯತೆಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ, ದೋಷವನ್ನು ನಿರ್ವಹಿಸಿ, ನಂತರ ಸ್ಥಿತಿಯನ್ನು ಓದಿ ಮತ್ತು ಪೋಲಿಂಗ್ ಮಾಡುವ ಬದಲು ಬದಲಾವಣೆಗಳಿಗೆ ಚಂದಾದಾರರಾಗಿ:

vpnManager.loadFromPreferences { error in
    // handle a load failure before reading status
}

NotificationCenter.default.addObserver(
    forName: .NEVPNStatusDidChange,
    object: nil,
    queue: nil
) { note in
    let status = (note.object as? NEVPNConnection)?.status
}

ಇದು ಏನನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಎಂಬುದರಲ್ಲಿ ನಿಖರವಾಗಿರಿ: ನೀವು ಸ್ಥಾಪಿಸಿದ ಟನಲ್‌ನ ಸ್ಥಿತಿ. ಬೇರೆ ಕ್ಲೈಂಟ್ ಚಲಾಯಿಸುವ ಬಳಕೆದಾರರು ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡಂತೆ ಕಾಣುತ್ತಾರೆ, ಮತ್ತು ಅದು ನಿಮ್ಮ ಕೋಡ್‌ನಲ್ಲಿ ದೋಷವಲ್ಲ. ಉತ್ತರದ ಮೇಲೆ ನಿರ್ಮಿಸುವ ಮೊದಲು ನಿಮ್ಮ ವೈಶಿಷ್ಟ್ಯವು ಈ ಎರಡು ಪ್ರಶ್ನೆಗಳಲ್ಲಿ ಯಾವುದನ್ನು ನಿಜವಾಗಿ ಕೇಳುತ್ತಿದೆ ಎಂದು ನಿರ್ಧರಿಸಿ.

ಪರಿಶೀಲನೆ 3: ಹ್ಯೂರಿಸ್ಟಿಕ್ ನಿಜವಾಗಿ ನಿಮಗೆ ಏನು ಹೇಳುತ್ತದೆ?

ವ್ಯಾಪಕವಾಗಿ ನಕಲಿಸಲಾದ ವಿಧಾನವು ಸಿಸ್ಟಮ್ ಪ್ರಾಕ್ಸಿ ನಿಘಂಟಿನಿಂದ ಅದರ ವ್ಯಾಪ್ತಿಯ ನಮೂದುಗಳನ್ನು ಕೇಳಿ ಕೀಲಿಗಳನ್ನು ಓದುತ್ತದೆ, ಅವು ಆಕಸ್ಮಿಕವಾಗಿ ಇಂಟರ್ಫೇಸ್ ಹೆಸರುಗಳು:

let settings = CFNetworkCopySystemProxySettings()?.takeRetainedValue() as NSDictionary?
let scoped = settings?["__SCOPED__"] as? [String: Any]
let names = scoped?.keys ?? []

ಕೀಲಿಯು tap, tun, ppp, ipsec ಅಥವಾ utun ನಿಂದ ಪ್ರಾರಂಭವಾದರೆ, ಟನಲ್-ವ್ಯಾಪ್ತಿಯ ಇಂಟರ್ಫೇಸ್ ಇದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ಪೂರ್ಣ ಹೆಸರನ್ನು ಹೊಂದಿಸುವುದು ತಕ್ಷಣ ವಿಫಲವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ iOS 12 utun1 ಮತ್ತು utun2 ನೊಂದಿಗೆ ಬಂತು ಮತ್ತು ಕೆಲವು ಪ್ರೊಫೈಲ್‌ಗಳು ipsec4, ppp0 ಅಥವಾ utun0 ಆಗಿ ಕಾಣುತ್ತವೆ. ಬದಲಾಗಿ ಪೂರ್ವಪ್ರತ್ಯಯಗಳನ್ನು ಹೋಲಿಸಿ.

ಆದರೂ, ಹೆಸರು ಯಾವುದೇ ಮಾಲೀಕರನ್ನು ಗುರುತಿಸುವುದಿಲ್ಲ. ಸಿಸ್ಟಮ್ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಇತರ ಮಾರಾಟಗಾರರ ವಿಸ್ತರಣೆಗಳೂ utun ಇಂಟರ್ಫೇಸ್‌ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತವೆ, ಮತ್ತು ನಿಮ್ಮ ಸಂಚಾರದ ಯಾವುದನ್ನೂ ಸಾಗಿಸದೆ ಒಂದು ಇರಬಹುದು. ಅದನ್ನು ಸುತ್ತಮುತ್ತ ಟನಲ್-ಆಕಾರದ ಏನೋ ಇದೆ ಎಂಬ ಸುಳಿವಾಗಿ ಓದಿ, ಅದಕ್ಕಿಂತ ಬಲವಾಗಿ ಅಲ್ಲ. ಇಲ್ಲಿ ತಪ್ಪು ಧನಾತ್ಮಕ ಫಲಿತಾಂಶ ಅಗ್ಗವಾದದ್ದು ನೀವು ಒಂದೇ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಗೇಟ್ ಮಾಡಿದರೆ, ಮತ್ತು ದುಬಾರಿ ನೀವು ಲಾಗಿನ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಗೇಟ್ ಮಾಡಿದರೆ.

ಪರಿಶೀಲನೆ 4: ಬದಲಾಗಿ ಗಮ್ಯಸ್ಥಾನವನ್ನು ಪರೀಕ್ಷಿಸಬಹುದೇ?

ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಆಂತರಿಕ ಸೇವೆ ತಲುಪಬಹುದೇ ಎಂದು ತಿಳಿಯುವುದು ಮಾತ್ರ ಬೇಕಾದರೆ, ಆ ಸೇವೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ. ಸಮಯ ಮಿತಿಯೊಂದಿಗೆ ಸಣ್ಣ ಪ್ರೋಬ್ ವೈಶಿಷ್ಟ್ಯವು ನಿಜವಾಗಿ ಅವಲಂಬಿಸಿರುವ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸುತ್ತದೆ, ಮತ್ತು ಬಳಕೆದಾರರು ಕ್ಲೈಂಟ್ ಬದಲಾಯಿಸಿದಾಗ ಅಥವಾ ಟನಲ್ ಆಕಾರ ಬದಲಾದಾಗಲೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ.

ತಲುಪುವಿಕೆ ನಿಮ್ಮ ಮಾರ್ಗದ ಬಗ್ಗೆ ಒಂದು ವೀಕ್ಷಣೆ. ಇಂಟರ್ಫೇಸ್ ಹೆಸರು ನಿಮ್ಮ ಮಾರ್ಗಕ್ಕೆ ಹೊಂದಿಕೊಂಡಿರುವ ಯಾವುದೋ ವಿಷಯದ ಬಗ್ಗೆ ಒಂದು ಅನುಮಾನ, ಆದ್ದರಿಂದ ಹ್ಯೂರಿಸ್ಟಿಕ್ ದೋಷ ವರದಿಗಳಲ್ಲಿ ವಾದಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ ಮತ್ತು ಪ್ರೋಬ್ ಸಾಕ್ಷ್ಯವನ್ನು. ಬಳಕೆದಾರರು VPN ಆನ್ ಇದೆ ಎಂದು ಪಟ್ಟು ಹಿಡಿದರೂ ಪ್ರೋಬ್ ವಿಫಲವಾದರೆ, ಈಗ ಡೀಬಗ್ ಮಾಡಲು ನಿರ್ದಿಷ್ಟ ಮಾರ್ಗವಿದೆ: ಹೆಸರು ಪರಿಹಾರ, ಮಾರ್ಗ ಅಥವಾ ಸೇವಾ ಅನುಮತಿ.

ಪರಿಶೀಲನೆ 5: ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ನಿಮಗೆ ಬೇಕಾದುದನ್ನು ಜಾರಿಗೊಳಿಸಬಹುದೇ?

ಅಗತ್ಯವು ಟನಲ್‌ನಿಂದ ಏನೂ ತಪ್ಪಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ ಎಂಬ ಖಾತರಿಯಾದಾಗ, ಪ್ರೊಫೈಲ್ ಅದರ ಸ್ಥಾನ, ಡಿಟೆಕ್ಟರ್ ಅಲ್ಲ. includeAllNetworks ಅನ್ನು iOS 14 ಅಥವಾ ನಂತರದಲ್ಲಿ ಪೂರ್ಣ-ಟನಲ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಆನ್ ಮಾಡುವುದು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮಾನಿಸಲು ಹೇಳುವ ಬದಲು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ವರ್ತನೆಯನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಈ ಫ್ಲ್ಯಾಗ್ NEVPNProtocol ಉಲ್ಲೇಖದಲ್ಲಿ ದಾಖಲಾಗಿದೆ.

ಇದು ಬೇರೆ ರೀತಿಯ ಉತ್ತರ: ವೀಕ್ಷಣೆಯ ಬದಲು ಜಾರಿ. ಇದು ನೀವು ನಿಯಂತ್ರಿಸುವ ಪ್ರೊಫೈಲ್‌ಗಳಿಗೆ ಮಾತ್ರ ಅನ್ವಯಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಬೇರೊಬ್ಬರ ಟನಲ್ ಅನ್ನು ಗಮನಿಸುವ ಗ್ರಾಹಕ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಸಹಾಯ ಮಾಡುವುದಿಲ್ಲ.

ಪರಿಶೀಲನೆ 6: ವೈಫಲ್ಯವನ್ನು ಸುರಕ್ಷಿತ ಮತ್ತು ಗಮನಿಸಬಹುದಾದಂತೆ ಮಾಡಿ

ಟನಲ್ ಬೇಕಾದ ಸಾಮರ್ಥ್ಯವನ್ನು ಮಾತ್ರ ಆಫ್ ಮಾಡಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ನ ಉಳಿದ ಭಾಗವನ್ನು ಬಳಸಬಹುದಾಗಿ ಬಿಡಿ. ಖಚಿತವಿಲ್ಲದಾಗಲೆಲ್ಲಾ ಇಡೀ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮರೆಮಾಡುವ ಡಿಟೆಕ್ಟರ್, ನೀವು ಎಂದೂ ನಿರೀಕ್ಷಿಸದ ಹೆಸರನ್ನು ಬಳಸುವ ಟನಲ್ ಇರುವ ಪ್ರತಿಯೊಬ್ಬರಿಗೂ ವಿರಾಮವನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ. ಬದಲಾಗಿ ಸಂಪ್ರದಾಯವಾದಿ ವರ್ತನೆಗೆ ಹಿಂತಿರುಗಿ: ಸ್ಥಳೀಯ ವೈಶಿಷ್ಟ್ಯಗಳು ಕೆಲಸ ಮಾಡುತ್ತಲೇ ಇರುತ್ತವೆ ಮತ್ತು ಟನಲ್ ನಿಜವಾಗಿ ಬೇಕಾದ ದೂರದ ಕರೆ ಮಾತ್ರ ನಿಷ್ಕ್ರಿಯಗೊಳ್ಳುತ್ತದೆ. ಆ ಆಯ್ಕೆ ಉತ್ಪನ್ನ ನಿರ್ಧಾರ, ಮತ್ತು ಅದು ಹ್ಯೂರಿಸ್ಟಿಕ್‌ನ ಪಕ್ಕದಲ್ಲಿ ಬರೆಯಲ್ಪಡಲು ಅರ್ಹವಾಗಿದೆ.

ನೀವು ಗಮನಿಸಿದ್ದನ್ನು ಲಾಗ್ ಮಾಡಿ: ಇಂಟರ್ಫೇಸ್ ಹೆಸರುಗಳು, ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಆವೃತ್ತಿ ಮತ್ತು ಒಂದು ಪ್ರೋಬ್‌ನ ಫಲಿತಾಂಶ. ಅದು ಮುಂದಿನ ವರದಿಯನ್ನು ವಾದದಿಂದ ಪರಿಶೀಲನೆಗೆ ಬದಲಾಯಿಸುತ್ತದೆ. ನಂತರ ಬೆಂಬಲಿತ ಘೋಷಣೆ ಇರುವಲ್ಲಿ ಅದನ್ನು ಆದ್ಯತೆ ಮಾಡಿ, ಏಕೆಂದರೆ ನಿರ್ವಹಿತ ಕಾನ್ಫಿಗರೇಶನ್ ಉದ್ದೇಶವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಒಯ್ಯಬಲ್ಲದು ಮತ್ತು ಹೆಸರುಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಹೆಚ್ಚಿನ ಕಾರಣವನ್ನು ತೆಗೆದುಹಾಕಬಲ್ಲದು.

1 ರಿಂದ 5 ರವರೆಗಿನ ಪರಿಶೀಲನೆಗಳು ನಿಮ್ಮನ್ನು ಬೆಂಬಲಿತ ಉತ್ತರವಿಲ್ಲದೆ ಬಿಟ್ಟರೆ, ಪ್ರೋಬ್ ಅನ್ನು ಶಿಪ್ ಮಾಡಿ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಪ್ರಾಮಾಣಿಕವಾಗಿ ಲೇಬಲ್ ಮಾಡಿ. ದಾಖಲಿತ ಅತ್ಯುತ್ತಮ-ಪ್ರಯತ್ನ ಸಂಕೇತವು ಮುಂದಿನ ಬಿಡುಗಡೆಯಲ್ಲಿ ಒಡೆಯುವ ಖಾಸಗಿ API ಗಿಂತ ಉತ್ತಮ ಉತ್ಪನ್ನ ನಿರ್ಧಾರ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು