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'
பிறகு சேவைக் கணக்கு அதைத் திறக்க முடியுமா என்பதை உறுதிசெய்யுங்கள். அந்தக் கணக்காகச் செய்யும் சிறு சோதனை உரிமைச் சிக்கலை சேவைச் சிக்கலிலிருந்து பிரிக்கிறது. இறுதியாக வாடிக்கையாளரைத் தொடங்கி சுரங்கப் பலகம் தோன்றுவதை உறுதிசெய்யுங்கள்; முதல் இரண்டு தேர்ச்சி பெறலாம், ஆனால் வாடிக்கையாளர் விவரக்குறிப்பு அல்லது திறன் இன்னும் தவறாக இருக்கலாம், எனவே முழுப் பாதையை அந்த மூன்றாவது படிமட்டுமே நிரூபிக்கிறது.
மாற்றம் அங்கீகரிக்கப்படும்போது நிகழ்வு, சாதன லேபிள், ஹோஸ்ட் மூலம், விருந்தினர் பாதை மற்றும் உரிமையாளர் கணக்கைப் பதிவு செய்யுங்கள். அந்த ஐந்து மதிப்புகளே பின்னர் மறுஉருவாக்கம், இடமாற்றம் அல்லது விவரக்குறிப்பு மாற்றம் பாதுகாக்க வேண்டியவை, சூழலற்ற அனுமதிப் பிழையை விட அவற்றை ஒப்பிடுவது மிகவும் எளிது.