LXD కంటైనర్ /dev/net/tun తెరవలేకపోతోందా? unix-char నమోదును తనిఖీ చేయండి
VPN క్లయింట్ ఉపయోగించే ముందు LXD హోస్ట్ TUN పరికరాన్ని కంటైనర్కు అందించాలి. unix-char ఏమి జోడిస్తుంది, ఏమి జోడించదు, ఎలా ధృవీకరించాలో చూడండి.
LXD పరికర నోడ్ను జోడించడం ద్వారా హోస్ట్ అక్షర పరికరాన్ని కంటైనర్కు బహిర్గతం చేస్తుంది, అతిథిని అది సృష్టించడం నేర్పించడం ద్వారా కాదు. కంటైనర్లో /dev/net/tun లేకపోతే, పరికరం హోస్ట్లో ఉండవచ్చు మరియు అతిథి దాన్ని తెరవలేకపోవచ్చు. unix-char నమోదు ఆ మార్గంలో నిర్వాహక వైపు సగం, మరియు అది ప్రత్యేక హక్కుల కంటైనర్ కంటే ఉద్దేశపూర్వకంగా సన్నగా ఉంటుంది. అందుకే హోస్ట్ నోడ్ మరియు కంటైనర్ నోడ్ వేర్వేరు తనిఖీలకు అర్హమైనవి.
యంత్రాంగం కంటికి కనిపించేలా చిన్నది: LXD హోస్ట్ మార్గాన్ని పరిష్కరిస్తుంది, ఇన్స్టాన్స్ లోపల సరిపోయే నోడ్ను సృష్టిస్తుంది మరియు పరికరాన్ని కంటైనర్ పరికర cgroupకు జోడిస్తుంది. తర్వాత అతిథి ప్రక్రియకు నోడ్ను ఏదైనా పనికి ఉపయోగించడానికి దాని స్వంత అనుమతి మరియు సామర్థ్యం అవసరం.
unix-char నమోదు నిజంగా ఏమి మారుస్తుంది
unix-char పరికరం LXDకు హోస్ట్ యొక్క ఒక అక్షర పరికరాన్ని కంటైనర్ లోపల ఎంచుకున్న మార్గంలో బహిర్గతం చేయమని చెబుతుంది. నమోదులో మూడు ముఖ్యమైన భాగాలున్నాయి: నిర్వాహకుడు ఉపయోగించే పరికర లేబుల్, హోస్ట్లో source మార్గం మరియు అతిథి చూసే path. చివరి రెండు మాత్రమే పరికరాన్ని వివరిస్తాయి. వాటిలో ఒకదానిలో టైపింగ్ పొరపాటు ఉంటే క్లయింట్ ఎప్పుడూ తెరవని చోట నోడ్ ఏర్పడుతుంది.
హోస్ట్లో పరికరం సాధారణంగా /dev/net/tun ఉంటుంది. కంటైనర్ లోపల మీరు అదే మార్గాన్ని ఉంచవచ్చు లేదా మరొకటి ఎంచుకోవచ్చు, కానీ మార్గం VPN క్లయింట్ ఆశించే దానితో సరిపోలాలి. /dev/net/tun ఉంచడం రెండవ కాన్ఫిగరేషన్ సమస్యను నివారిస్తుంది, ఎందుకంటే చాలా క్లయింట్లు ఆ మార్గాన్ని అడగకుండా తెరుస్తాయి.
ఇన్స్టాన్స్ ప్రారంభమైనప్పుడు లేదా పరికరం హాట్ప్లగ్ అయినప్పుడు నిర్వాహకుడు నమోదును వర్తింపజేస్తాడు. ఇది అతిథిలోకి డ్రైవర్ను కాపీ చేయదు మరియు టన్నెల్ ఇంటర్ఫేస్ను సృష్టించదు. నోడ్ను కనిపించేలా చేసి కంటైనర్ పరికర నియంత్రణ సమూహం ద్వారా ప్రవేశాన్ని అనుమతిస్తుంది.
పరికరాన్ని అతిథి లోపల కాదు, ఇన్స్టాన్స్పై ప్రకటించండి
LXD నిర్వహణ సందర్భం నుండి నమోదును జోడించండి, ఇన్స్టాన్స్ మరియు తర్వాత గుర్తించగల లేబుల్ను పేర్కొంటూ. vpnbox అనే కంటైనర్కు ఆదేశం ఇది:
lxc config device add vpnbox tun unix-char source=/dev/net/tun path=/dev/net/tun
lxc config device show vpnbox
లేబుల్ tun ఇన్స్టాన్స్ కాన్ఫిగరేషన్కు మాత్రమే స్థానికం. ఇది ఇంటర్ఫేస్ పేరు కాదు మరియు అతిథిలో ఏదైనా సరిపోలాల్సిన అవసరం లేదు. ప్రొఫైల్ ఇప్పటికే అదే పరికరాన్ని అందిస్తే, రెండవ నమోదు జోడించడం అదనం కాదు, ఘర్షణను సృష్టిస్తుంది, కాబట్టి మొదట ప్రభావవంతమైన కాన్ఫిగరేషన్ను చూడండి.
కంటైనర్ లోపల ఫైళ్లను సవరించడం తప్పు పొర. ప్రారంభ స్క్రిప్ట్లోని mknod ప్రత్యేక హక్కుల కంటైనర్లో పనిచేస్తున్నట్టు కనిపించి, తర్వాత పునఃసృష్టిలో మాయమైపోవచ్చు లేదా తక్కువ హక్కులున్న దానిలో విఫలమవ్వచ్చు. ఇన్స్టాన్స్ పరికర సమితి నిర్వాహకుడి వద్ద ఉంటుంది; నోడ్ కూడా అతని వద్దే ఉండనివ్వండి.
యాజమాన్యాన్ని మరియు మోడ్ను అతిథి ప్రక్రియకు సరిపోల్చండి
unix-char నమోదు కంటైనర్ లోపలి నోడ్కు uid, gid మరియు mode సెట్ చేయగలదు. ప్రతి వినియోగదారుకు పరికరాన్ని తెరవడం లేదా కంటైనర్ను ప్రత్యేక హక్కుల మోడ్కు మార్చడం బదులు, VPN క్లయింట్ను నడిపే ఖాతాతో సరిపోల్చడానికి వాటిని ఉపయోగించండి.
కనిపించడం అనుమతితో సమానం కాదు. root యాజమాన్యంలోని మరియు మోడ్ 600 ఉన్న నోడ్ ప్రత్యేక హక్కులు లేని వినియోగదారుగా నడుస్తున్న సేవకు కనిపిస్తుంది, అయినా అది దాన్ని తెరవలేదు. మొదట అతిథి ఖాతాను తనిఖీ చేయండి, తర్వాత యాజమాన్యాన్ని ఆ ఖాతాకు సెట్ చేయండి, మరియు మోడ్ను క్లయింట్కు అవసరమైన దానికంటే వెడల్పుగా ఉంచవద్దు.
ప్రక్రియకు టన్నెల్ ఇంటర్ఫేస్ను కాన్ఫిగర్ చేసే సామర్థ్యం కూడా అవసరం, సాధారణంగా కంటైనర్ నెట్వర్క్ పేరు స్థలంలో CAP_NET_ADMIN. పరికరాన్ని అందించడం ఆ సామర్థ్యాన్ని ఇవ్వదు, సామర్థ్యాన్ని ఇవ్వడం పరికరాన్ని అందించదు; ఇవి స్వతంత్ర అవసరాలు.
నమోదు ఏమి ఇవ్వదో తెలుసుకోండి
కనిపించే నోడ్ అంటే నడుస్తున్న VPN కాదు. క్లయింట్ ప్యాకేజీ ఇంకా ఇన్స్టాల్ చేయాలి, ప్రొఫైల్ ఇంకా చెల్లుబాటు అయ్యేదిగా ఉండాలి, మరియు సేవ ఇంకా ప్రారంభం కావాలి. ప్రామాణీకరణ, మార్గాలు మరియు DNS క్లయింట్ పనేగా ఉంటాయి, అక్కడి వైఫల్యం పరికర నమోదు తప్పు అనడానికి రుజువు కాదు.
systemd మరో పరిమితిని జోడించవచ్చు. DeviceAllow లేదా కఠినమైన పరికర విధానం ఉన్న యూనిట్ కంటైనర్ నిర్వాహకుడు అందించిన నోడ్కు ప్రవేశాన్ని నిరాకరించవచ్చు. నోడ్ ఉన్నా సేవ అనుమతి లోపాన్ని నివేదిస్తే యూనిట్ పరికర విధానాన్ని తనిఖీ చేయండి, మరియు కంటైనర్ను విస్తరించడం బదులు ఆ విధానాన్ని మార్చండి.
హాట్ప్లగ్ ఐచ్ఛికం మరియు స్పష్టం. required=false ఉన్న నమోదుకు మూల మార్గం అవసరం మరియు హోస్ట్ పరికరం మారుతుండగా అది కనిపించవచ్చు లేదా మాయమవ్వచ్చు. అలాంటి జీవితచక్రం వచ్చిపోయే హార్డ్వేర్కు సరిపోతుంది; VPN బూట్ సమయంలో అవసరమైన TUN పరికరానికి, ఐచ్ఛిక నమోదు దాని మునుపర్తి ఉనికిలోకి రాకముందే సేవను ప్రారంభించనివ్వగలదు.
కనిపించడం, తెరవడం మరియు ఇంటర్ఫేస్ను అదే క్రమంలో తనిఖీ చేయండి
మొదట ఉద్దేశించిన కంటైనర్ లోపలి నోడ్ను నిర్ధారించండి. మార్గం, ప్రధాన మరియు చిన్న సంఖ్యలు మరియు యాజమాన్యం హోస్ట్ పరికరానికి మరియు మీరు జోడించిన నమోదుకు సరిపోలాలి. నోడ్ లేకపోతే నిర్వాహకుడు నమోదును వర్తింపజేయలేదు, లేదా మరో ఇన్స్టాన్స్పై వర్తింపజేశాడు.
lxc exec vpnbox -- ls -l /dev/net/tun
lxc exec vpnbox -- sh -c 'test -c /dev/net/tun && echo char-device-ok'
తర్వాత సేవా ఖాతా దాన్ని తెరవగలదని నిర్ధారించండి. ఆ ఖాతాగా చేసే చిన్న పరీక్ష యాజమాన్య సమస్యను సేవా సమస్య నుండి వేరు చేస్తుంది. చివరగా క్లయింట్ను ప్రారంభించి టన్నెల్ ఇంటర్ఫేస్ కనిపిస్తున్నట్టు నిర్ధారించండి; మొదటి రెండు దాటవచ్చు కానీ క్లయింట్ ప్రొఫైల్ లేదా సామర్థ్యం ఇంకా తప్పుగా ఉండవచ్చు, కాబట్టి మొత్తం మార్గాన్ని ఆ మూడవ దశ మాత్రమే రుజువు చేస్తుంది.
మార్పు ఆమోదించబడినప్పుడు ఇన్స్టాన్స్, పరికర లేబుల్, హోస్ట్ మూలం, అతిథి మార్గం మరియు యజమాని ఖాతాను నమోదు చేయండి. ఆ ఐదు విలువలే తర్వాతి పునఃసృష్టి, వలస లేదా ప్రొఫైల్ మార్పు కాపాడాల్సినవి, మరియు సందర్భం లేని అనుమతి లోపం కంటే వాటిని పోల్చడం చాలా సులభం.