సాధారణ Linux యాప్ TUN ను తాకకుండా VPN ఉపయోగిస్తుంది
డీమన్ TUN పరికరం మరియు సొరంగాన్ని కలిగి ఉంది; యాప్లు సాకెట్లను మాత్రమే తెరుస్తాయి. సెటప్ ప్రత్యేక హక్కు మరియు నెట్వర్క్ యాక్సెస్ను వేర్వేరు సరిహద్దులుగా ఉంచండి.
స్థాపించిన Linux VPN ఉపయోగించే బ్రౌజర్ /dev/net/tun తెరవదు. అది సాకెట్ తెరుస్తుంది, ఆ సాకెట్ ప్యాకెట్లు ఏ ఇంటర్ఫేస్ ద్వారా బయటకు వెళతాయో కెర్నల్ నిర్ణయిస్తుంది. సొరంగాన్ని సృష్టించిన ప్రక్రియ, అది మోసుకెళ్లే ట్రాఫిక్ ప్రక్రియ నుండి వేరే పని చేస్తుంది. ఆ రెండు పాత్రలను వేరుగా ఉంచడం చాలా అనుమతి ప్రశ్నలకు అవి అడగక ముందే సమాధానం ఇస్తుంది.
సాకెట్ నుండి సొరంగం వరకు ఒక ప్యాకెట్ను అనుసరించండి
సాధారణ యాప్ connect లేదా send ను పిలుస్తుంది, కెర్నల్ గమ్యానికి మార్గాన్ని వెతుకుతుంది. ఎంచుకున్న మార్గం సొరంగ ఇంటర్ఫేస్ వైపు చూపితే, ప్యాకెట్ VPN డీమన్ చదివే పరికరం క్యూలో చేరుతుంది. డీమన్ దానిని ఎన్క్రిప్ట్ చేసి భౌతిక ఇంటర్ఫేస్ ద్వారా బయటకు పంపుతుంది. ఆ వివరణలోని ప్రతి బాణం అనుమతి ప్రశ్నకు సమాధానం చెప్పగల స్థలం.
ఆ మార్గంలో యాప్ పరికరాన్ని తెలుసుకోవాలని ఏదీ కోరదు. డీమన్ ఫైల్ డిస్క్రిప్టర్ను ఉంచి ఇంటర్ఫేస్ కార్యకలాపాలను చేస్తుంది, యాప్ సాధారణ నెట్వర్క్ API మాత్రమే చూస్తుంది.
రెండు భాగాలను ఒకసారి గీయండి, అప్పుడు అనుమతి ప్రశ్నలను ఉంచడం సులభమవుతుంది. పై భాగం యాప్ల ప్రపంచం, కింది భాగం డీమన్ది.
పరికరం ఎవరికి కావాలి, ఎవరికి కాదు అని నిర్ణయించండి
TUN ఇంటర్ఫేస్ సృష్టించడానికి లేదా దానికి కలవడానికి పరికర యాక్సెస్ మరియు అదనంగా దానిని కాన్ఫిగర్ చేసే సామర్థ్యం అవసరం, అందుకే మద్దతు ఉన్న VPN సేవ నెట్వర్క్ నిర్వాహక అధికారంతో ప్రారంభమవుతుంది లేదా ప్రత్యేక సహాయకుడిని ఉపయోగిస్తుంది. ఆ అవసరం డీమన్ది. అది బ్రౌజర్, డేటాబేస్ క్లయింట్ లేదా ఫైల్ బదిలీ సాధనం గురించి ఏమీ చెప్పదు. ఆ సామర్థ్యం కావాల్సిన సేవ దానిని తన సెటప్ దశ కోసం కోరుతుంది, తన క్లయింట్ల కోసం కాదు.
మార్గం మరియు విధానం సిద్ధమైన తర్వాత, సాధారణ ప్రక్రియ ఏర్పడిన మార్గాన్ని తన సాధారణ సాకెట్ కాల్స్ ద్వారా ఉపయోగిస్తుంది. దానికి పరికర నోడ్ అవసరం లేదు, root కూడా అవసరం లేదు.
పరికర అనుమతులను మార్చడం యాప్కు గమ్య యాక్సెస్ ఇచ్చే మార్గం కాదు. అది పరికర సరిహద్దును వేరే చోటికి జరుపుతుంది.
యాప్ నిజంగా నడిచే నేమ్స్పేస్ను తనిఖీ చేయండి
కంటైనర్, లేదా రెండవ నెట్వర్క్ నేమ్స్పేస్, తన ప్రక్రియలకు వేరే ఇంటర్ఫేస్ సమితి మరియు మార్గ పట్టికను ఇస్తుంది. హోస్ట్పై సొరంగం అక్కడ దానంతట అదే కనిపించదు, పరికర అనుమతుల్లో ఏ మార్పు దానిని మార్చదు. యాప్ ఆ నేమ్స్పేస్ అందించే దాని ద్వారానే మార్గం చేస్తుంది. అందుకే కంటైనర్ ఇమేజ్ హోస్ట్ సొరంగాన్ని ఆకస్మికంగా వారసత్వంగా పొందలేదు.
దానిని ip netns list మరియు ip -n NAME route తో, లేదా ప్రక్రియ నేమ్స్పేస్ లింక్ను చూసి తనిఖీ చేయండి. సమాధానం సాధారణంగా ఒకే ఆదేశంలో కనిపిస్తుంది.
ఒకే హోస్ట్పై ఇద్దరు వినియోగదారులకు విధానం ద్వారా వేరే మార్గాలు కూడా ఇవ్వవచ్చు. అది నెట్వర్క్ నిర్ణయం, పరికర యాజమాన్యానికి సాక్ష్యం కాదు.
సామర్థ్యాలను నెట్వర్క్ విధానం నుండి వేరు చేయండి
కొన్ని సాధనాలకు సాకెట్ కంటే ఎక్కువ కావాలి. ప్యాకెట్లను పట్టుకోవడానికి ముడి సాకెట్ కావాలి, మార్గాలను మార్చడానికి నిర్వాహక అధికారం కావాలి. అవి వేర్వేరు అనుమతులతో వేర్వేరు కార్యకలాపాలు, ఒకటి ఇవ్వడాన్ని VPN ఉపయోగానికి సాధారణ షరతుగా చదవకూడదు.
తన సొంత సొరంగాన్ని అమలు చేసే ప్రోగ్రామ్ మూడవ కేసు. అది డీమన్ పాత్రను తీసుకుంటుంది కాబట్టి నిజంగా TUN తెరుస్తుంది, అందుకే దానికి డీమన్ ప్రత్యేక హక్కులు కావాలి.
ప్రత్యేక హక్కును పేర్కొనక ముందు కార్యకలాపాన్ని పేర్కొనండి. రెండింటిని వేరు చేయడం సాధారణంగా కనిపించే దానికంటే సులభం.
రెండు ఖాతాలతో విభజనను ధృవీకరించండి
సొరంగాన్ని సేవగా కనెక్ట్ చేయండి, తర్వాత యాప్ను సాధారణ వినియోగదారుగా నడపండి మరియు అది ప్రైవేట్ వనరును చేరుతుందని నిర్ధారించండి. ఆ వినియోగదారు షెల్ నుండి గమ్యం కోసం ip route get ను తనిఖీ చేసి ఏ ఇంటర్ఫేస్ ఎంపికైందో చూడండి. మార్గం సరైనదై ఉండి కనెక్షన్ ఇప్పటికీ విఫలమైతే, సమస్య విధానంలో ఉంది, ప్రత్యేక హక్కులో కాదు.
ఫలిత నిర్మాణం స్పష్టమైన సరిహద్దుతో కనీస ప్రత్యేక హక్కు: ఒక భాగం సెటప్ మరియు సొరంగ వనరులను కలిగి ఉంటుంది, పని భారాలు తమ సాధారణ ఖాతాలను ఉంచుకుంటాయి, నెట్వర్క్ విధానం ఏది దాటవచ్చో నిర్ణయిస్తుంది. అన్నింటినీ root గా నడపడం ఆ పాత్రలను ఏమీ వివరించకుండా కూల్చేస్తుంది.