VPN కోసం Linux నెట్వర్క్ నేమ్స్పేస్లు: అవి ఏమి వేరు చేయవు
నేమ్స్పేస్ ఇంటర్ఫేస్లు, రూట్లు మరియు సాకెట్లను కదిలిస్తుంది, ఫైల్లు లేదా ఖాతాలను కాదు. దాని స్వంత netnsలో VPN ఏమి కవర్ చేస్తుంది, ట్రాఫిక్ ఇంకా ఎక్కడ నుండి తప్పించుకుంటుందో ఇక్కడ చూడవచ్చు.
VPNని దాని స్వంత నేమ్స్పేస్ లోపల ప్రారంభించి, అక్కడ ఒక అప్లికేషన్ను నడపండి, ట్రాఫిక్ ఇప్పటికీ హోస్ట్ రూట్ ద్వారానే బయటకు వెళ్తుంది. ఏమీ పాడవలేదు: నేమ్స్పేస్ దానిలోకి ప్రవేశించే ప్రక్రియలను మాత్రమే నియంత్రిస్తుంది, మరియు లీక్ ఎప్పుడూ ప్రవేశించని ప్రక్రియ నుండి వచ్చింది. ఇంటర్ఫేస్లు, చిరునామాలు, రూట్లు, ఫైర్వాల్ నియమాలు మరియు సాకెట్లు నేమ్స్పేస్ కలిగి ఉన్నవి. ఫైల్లు, ఖాతాలు మరియు ఇప్పటికే నడుస్తున్న సేవలు కావు, మరియు చాలా ఆశ్చర్యాలు ఇక్కడి నుండే వస్తాయి.
నేమ్స్పేస్ ఏమి కలిగి ఉంది, మరియు సాకెట్ ఎక్కడ పుడుతుంది
ఒక ఇంటర్ఫేస్ను నేమ్స్పేస్లోకి తరలించండి, హోస్ట్ దానిని కోల్పోతుంది; లోపల ఒక సొరంగం నిర్మించండి, హోస్ట్ దానిని చూడలేదు. ఇదే నేమ్స్పేస్తో పరిమితమైన VPN యొక్క యంత్రాంగం: పరికరం మరియు దాని వైపు చూపే రూట్లు ఎంపిక చేసిన ప్రక్రియలు మాత్రమే చేరుకోగల సందర్భంలో జీవిస్తాయి. హోస్ట్ తన డిఫాల్ట్ రూట్ను ఉంచుకుంటుంది, కాబట్టి బయట ఉన్నదంతా తాకబడకుండా ఉంటుంది.
WireGuardకు సృష్టి సందర్భం ప్రస్తుత స్థానానికి సమానం: UDP సాకెట్ ఇంటర్ఫేస్ సృష్టించిన నేమ్స్పేస్లోనే బంధించబడుతుంది, పరికరం వేరే చోటికి మారిన తర్వాత కూడా. ఎన్క్రిప్ట్ చేసిన ప్యాకెట్లు ఏ రూటింగ్ పట్టికను అనుసరిస్తాయి అనేది ఆ జన్మస్థలంపై ఆధారపడి ఉంటుంది. సాకెట్ తోటి వ్యక్తికి రూట్ లేని సందర్భంలో ఉంటే, ఇంటర్ఫేస్ వెతుకుతుంది మరియు చేతులు కలపడం ఎప్పటికీ బయటకు వెళ్లదు. మొదట దాని జన్మస్థలాన్ని, తర్వాత ప్రస్తుత స్థానాన్ని తనిఖీ చేయండి.
నేమ్స్పేస్ ఏమి వేరు చేయదు
ఇక్కడ ఏదీ ఫైల్ సిస్టమ్లు, ఖాతాలు లేదా రహస్యాలను వేరు చేయదు, మరియు మీరు నేమ్స్పేస్ సృష్టించినందున ఆ హద్దుల్లో ఏదీ కనిపించదు. రిజాల్వర్ కాన్ఫిగరేషన్ ఒక ఫైల్, కాబట్టి లోపలి ప్రక్రియ ఇప్పటికీ హోస్ట్ రిజాల్వర్ను సూచించే సెట్టింగ్ను చదివి, అది సూచించే రూట్ ద్వారా తన ప్రశ్నను బయటకు పంపగలదు. అభ్యర్థనను ఇప్పటికే నడుస్తున్న మధ్యవర్తి లేదా సిస్టమ్ సేవకు అప్పగించే అప్లికేషన్ పూర్తిగా వేరే సందర్భంలోని ప్రక్రియను కలుపుతుంది. రెండూ హద్దు సమాధానం ఇవ్వడానికి ఎప్పుడూ ఉద్దేశించని అభ్యర్థనలు.
పరిష్కారం /etc/netns/<name>/resolv.conf లో ప్రతి నేమ్స్పేస్కు ఒక ఫైల్, లేదా సిద్ధం చేసిన ఫైల్ యొక్క bind mount, లోపలి నుండి చేరుకోగల రిజాల్వర్ వైపు చూపేది. హోస్ట్లో /etc/resolv.conf సవరించడం నేమ్స్పేస్ చూసే ఏదీ మార్చదు.
ప్రక్రియల ఉంచికే నియంత్రణ
మీకు లభించే వేరుచేయడం లోపల మీరు ప్రారంభించే ప్రక్రియల వేరుచేయడమే. నేమ్స్పేస్ యొక్క exec సహాయకం ద్వారా ప్రారంభమైన షెల్, మరియు అది ఉత్పత్తి చేసేదంతా లోపలే ఉంటాయి; హోస్ట్ సెషన్ నుండి ప్రారంభించిన డెస్క్టాప్ అప్లికేషన్ ఉండదు. సందర్భాన్ని సృష్టించి, పరికరాన్ని తరలించి, ఆపై రెండు వైపులా నిరూపించండి:
ip netns add vpn1
ip link set wg0 netns vpn1
ip netns exec vpn1 wg show
wg show
నేమ్స్పేస్ లోపలి నుండి మొదటి wg show మరియు హోస్ట్ నుండి రెండవది చదవండి, వాటిలో ఒకటి మాత్రమే తోటి వ్యక్తిని జాబితా చేస్తుందని ఆశించండి. రెండూ చేస్తే పరికరం ఎప్పుడూ కదలలేదు; ఏదీ చేయకపోతే అది వేరే చోటికి వెళ్లింది. ప్రారంభకుడు సేవా నిర్వాహకుడు అయితే సవరించాల్సింది unit ఫైల్, డెస్క్టాప్ షార్ట్కట్ కాదు. నేమ్స్పేస్ సెట్టింగ్ లేని unit డీమన్ను హోస్ట్ సందర్భంలో ప్రారంభించి రూపకల్పనను నిశ్శబ్దంగా రద్దు చేస్తుంది.
అప్లికేషన్ సందర్భం నుండి పరీక్షించండి
అప్లికేషన్ ఉపయోగించే అదే బైనరీ మరియు అదే వినియోగదారుతో నేమ్స్పేస్ లోపల తనిఖీని అమలు చేయండి. DNS మరియు రెండు చిరునామా కుటుంబాలను చేర్చండి, ఎందుకంటే మీరు ఎప్పుడూ ఆలోచించని IPv6 రూట్ సాధారణ నిష్క్రమణ మార్గం. మీ సొంత షెల్ నుండి చేసిన పరీక్ష మీ షెల్ వేరుచేయబడిందని మాత్రమే నిరూపిస్తుంది.
తర్వాత హోస్ట్లో అదే తనిఖీని అమలు చేసి, సమాధానాలు భిన్నంగా ఉన్నాయని నిర్ధారించండి: లోపల సొరంగ చిరునామా మరియు ఉద్దేశించిన నిష్క్రమణ, బయట హోస్ట్ రూట్ మరియు కార్యాలయ నిష్క్రమణ, మరియు రిజాల్వర్ పేరు ద్వారా. నేమ్స్పేస్లకు ప్రోటోకాల్ కాకుండా అమలుకు అనుగుణంగా పేర్లు పెట్టండి, తద్వారా శుభ్రపరిచే స్క్రిప్ట్ రెండింటిని గందరగోళపరచదు.
ఫార్వార్డింగ్, వైఫల్య విధానం మరియు శుభ్రపరచడం
గేట్వే కోసం ఫార్వార్డింగ్ను ఉద్దేశపూర్వకంగా ఆన్ చేసి, సొరంగం పడిపోయినప్పుడు ఏమి జరగాలో నిర్ణయించండి. నేమ్స్పేస్ లోపల మీరు ఇన్స్టాల్ చేసే రూట్లను నిరోధించదు, కాబట్టి హోస్ట్కు ప్రత్యామ్నాయ రూట్ సృష్టిస్తే అది ఉపయోగించబడుతుంది. ఇది విధాన నిర్ణయం, మరియు అంతరాయం దానిని పరీక్షించే ముందే అది రాయబడాలి.
నేమ్స్పేస్ల పేర్లు, ఇంటర్ఫేస్లు మరియు కాన్ఫిగరేషన్ ఎవరిది అనేది నమోదు చేయండి, తద్వారా శుభ్రపరచడం అమలు సృష్టించినది మాత్రమే తొలగిస్తుంది. రోల్బ్యాక్ సమయంలో హోస్ట్ నెట్వర్కింగ్ను రీసెట్ చేయడం శుభ్రపరచడాన్ని అంతరాయంగా మారుస్తుంది. పేజీ network_namespaces(7) చిన్నది, ఆ మార్గాన్ని రూపకల్పన చేసే ముందు చదవదగినది.