VPN வாடிக்கையாளரை ஒரு கொள்கலனில் வைத்தால், உள்ளே சுரங்கத்துடன் ஒரு பெயர்வெளி கிடைக்கும், தன் முழு போக்குவரத்தையும் VPN வழியாக வழிமாற்றும் புரவலன் அல்ல. இவை தனித்தனி திட்டங்கள், மேலும் அவற்றை ஒன்றாகக் கருதுவதே கொள்கலன்கள் தற்செயலாக சிறப்புரிமை பெறும் வழி. இந்த வழிகாட்டி முதல் ஒன்றை மட்டுமே உள்ளடக்குகிறது: ஒரு மதிப்பாய்வு செய்யப்பட்ட படிமம், ஒரு பாதுகாக்கப்பட்ட சுயவிவரம் மற்றும் தன் சொந்த வலையமைப்பு பெயர்வெளிக்கு வரம்பிடப்பட்ட வாடிக்கையாளர் செயல்முறை.

யாரோ ஏற்கனவே அங்கீகரித்த ஒரு பொருளில் இருந்து தொடங்குங்கள். கீழே உள்ள படிகள் openvpn இயக்கக்கூடிய கோப்பு மற்றும் சான்றிதழ் மற்றும் விசைப் பொருள் ஏற்கனவே பொருத்தலுக்குள் தீர்க்கப்பட்ட முழு வாடிக்கையாளர் சுயவிவரம் கொண்ட படிமத்தைக் கருதுகின்றன. அவை மென்பொருளை உருவாக்குவதில்லை, சான்றுகளை வழங்குவதில்லை, root இல்லாத இயக்க சூழல்களையும் உள்ளூர் Windows கொள்கலன்களையும் உள்ளடக்குவதில்லை; அவை ஒவ்வொன்றும் பதிலை மாற்றும்.

கொள்கலன் என்ன பெறுகிறது, என்ன பெறுவதில்லை

சுயவிவரத்தையும் அது குறிப்பிடும் அனைத்தையும் குறைந்த அனுமதிகள் கொண்ட உள்ளூர் அடைவில் வைத்து, படிக்க-மட்டும் என பொருத்துங்கள். சுயவிவரத்தின் உள்ளே உள்ள சார்பு பாதைகள் அந்தப் பொருத்தலுக்குள் தீர்க்கப்பட வேண்டும்; சான்றிதழ் சுயவிவரத்தை விட ஒரு அடைவு மேலே இருக்கும்போதும் கொள்கலன் அதை ஒருபோதும் பார்க்காதபோதும் மக்கள் தவறவிடும் விவரம் இது.

services:
  vpn:
    image: ${VPN_CLIENT_IMAGE:?set the reviewed image reference}
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    volumes:
      - ./vpn:/vpn:ro
    working_dir: /vpn
    entrypoint: ["openvpn"]
    command: ["--config", "/vpn/client.ovpn"]

அந்தக் கோப்பு மூன்று விஷயங்களை வழங்குகிறது, வேறு எதையும் கேட்காது. உங்கள் வரிசைப்படுத்தல் கொள்கை அவ்வாறு கூறினால் படிமக் குறிப்பு டைஜெஸ்ட்டால் பிணைக்கப்பட வேண்டும், மேலும் சுயவிவரம் மதிப்பாய்வு செய்யப்பட்டதாகவே இருக்க வேண்டும், புரவலனில் யாரோ அந்த இடத்திலேயே திருத்திய நகல் அல்ல.

இங்கே படிக்க-மட்டும் என்பது கொள்கலன் உங்கள் புரவலன் கோப்புகளை மாற்ற முடியாது என்பதாகும்; நீங்கள் பொருத்திய தனிப்பட்ட விசையைப் படிக்க முடியாது என்பதல்ல. பொருத்தலின் முழு நோக்கமே அதுதான், அதனால்தான் கோப்பு அனுமதிகள், உரிமை மற்றும் ரகசியம் புரவலனுக்கு வந்த விதம் இன்னும் முக்கியம். கட்டளை வரியில் ஒருபோதும் கடவுச்சொல்லைக் கடக்க வேண்டாம், படிம அடுக்கில் வேகவைக்க வேண்டாம், ஏனெனில் இரண்டும் பின்னர் சுத்தம் செய்ய முடியாத இடங்களில் நீடிக்கும்.

திறன்கள், entrypoint மற்றும் அவற்றுக்கு இடையிலான பொறி

இரண்டு அமைப்புகள் தேவை, அவை தொடர்பில்லாத வேலைகளைச் செய்கின்றன. NET_ADMIN கொள்கலனின் பெயர்வெளிக்குள் இடைமுகங்கள் மற்றும் பாதைகளைக் கையாள அனுமதிக்கிறது. /dev/net/tun சாதனப் பதிவு செயல்முறைக்கு சுரங்கச் சாதனத்தைக் கூடத் திறக்க அனுமதிக்கிறது. ஒன்றை மற்றொன்று இல்லாமல் கொடுத்தால் தெளிவான தோல்வி ஏற்படும், இது வசதியானது: இல்லாத TUN சாதனம் திறக்கும்போது தோல்வியடைகிறது, ஆனால் இல்லாத திறன் வாடிக்கையாளர் இடைமுகத்தை உள்ளமைக்க முயலும்போது தோல்வியடைகிறது.

இவற்றில் எதுவும் privileged: true ஐ நியாயப்படுத்தாது. சிறப்புரிமை பெற்ற கொள்கலன் அனைத்து திறன்களையும் சாதன அணுகலையும் பெறுகிறது, இது இந்தப் பணிச்சுமைக்குத் தேவையானதை விட மிகப் பெரிய வழங்கல். இயக்கச் சிறப்புரிமைகள் மற்றும் திறன்களுக்கான குறிப்பு இந்த வழங்கல் எவ்வளவு தூரம் செல்கிறது என்பதை விளக்குகிறது. ஒரு chart அல்லது வலைப்பதிவு இடுகை அதைக் கோரினால், தேவை உண்மையில் இல்லாத சாதனப் பாதையா அல்லது இல்லாத திறனா என்பதை முதலில் சரிபார்க்கவும்.

entrypoint ஐ மீறி எழுதுவதே கடிக்கும் பகுதி. openvpn ஐ நேரடியாக அழைப்பது சாதாரண படிமத்திற்குச் சரி, டெமானை இயக்கும் முன் தீச்சுவர் விதிகள், தீர்வி கோப்புகள் அல்லது சான்றுகளைத் தயார் செய்யும் எந்தவொரு தயாரிப்பு படிமத்திற்கும் தவறு. அந்த ஸ்கிரிப்டை மீறி எழுதுவது தயாரிப்பைத் தவிர்த்து, பாதி உள்ளமைக்கப்பட்ட பெயர்வெளியில் எழுந்த சுரங்கத்தை பிழைத்திருத்த உங்களை விடும்.

வாடிக்கையாளரை முன்னணியில் இயக்கி, அது கொள்கலனின் முதன்மைச் செயல்முறையாக இருக்கட்டும். டெமானாக மாறும் செயல்முறை உடனே வெளியேறும், கொள்கலன் சுழற்சியில் மீண்டும் தொடங்கும், உங்களுக்குத் தேவையான பதிவுகள் ஒரே மாதிரி தோன்றும் மறுதொடக்கங்களுக்கு இடையே சிதறியிருக்கும்.

பெயர்வெளியின் உள்ளேயிருந்து சரிபார்க்கவும், புரவலனிலிருந்து அல்ல

ஸ்டாக்கை உயர்த்தி, வாடிக்கையாளர் இணைக்கப்பட்ட நிலையை அடைந்ததைப் பதிவில் உறுதிப்படுத்தி, பின்னர் சுரங்கத்தை உண்மையில் வைத்திருக்கும் பெயர்வெளியைப் பரிசோதிக்கவும்.

docker compose up -d
docker compose logs --tail 40 vpn
docker compose exec vpn ip -br addr
docker compose exec vpn ip route

முகவரிப் பட்டியல் குளத்திலிருந்து முகவரியுடன் சுரங்க இடைமுகத்தைக் காட்ட வேண்டும், பாதை அட்டவணை அதை நோக்கிச் சுட்டும் தள்ளப்பட்ட இலக்குகளைக் காட்ட வேண்டும். இடைமுகம் இல்லாவிட்டால், வாடிக்கையாளர் அதை உருவாக்கும் நிலையை ஒருபோதும் அடையவில்லை. அது இருந்தும் எந்தப் பாதையும் அதைப் பயன்படுத்தாவிட்டால், தேட வேண்டிய இடம் push அல்லது பாதை விருப்பங்கள்.

பின்னர் உங்களுக்கு முக்கியமான இலக்கை சுரங்கத்தைப் பயன்படுத்த வேண்டிய பெயர்வெளியிலிருந்து, ping மட்டுமல்ல பயன்பாட்டின் மூலம் சோதிக்கவும். பெயர் தீர்வு ஒரு தனி தோல்வி, அதை வெளிப்படையாகச் சோதிப்பது மதிப்புள்ளது: தள்ளப்பட்ட DNS முகவரி கொள்கலனின் தீர்வியைத் தானாகவே புதுப்பிக்காது, push ஐப் புறக்கணிக்கும் தனித்த வாடிக்கையாளர் படிமம் உள்ளமைத்ததன் மூலம் பெயர்களைத் தீர்க்கும்.

துண்டிக்கப்பட்ட நிலை ஒப்பந்தத்தின் ஒரு பகுதி

மீண்டும் இணைக்கும் நடத்தைக்கு அதன் சொந்தச் சரிபார்ப்பு தேவை, ஏனெனில் மறுதொடக்கக் கொள்கை செயல்முறை மீண்டும் தொடங்குவதை நிரூபிக்கிறது, இடையில் போக்குவரத்து என்ன செய்கிறது என்பதை எதுவும் கூறவில்லை. சுரங்கத்தை நிறுத்தி, நோக்கமிட்ட இலக்கை முயற்சித்து, இணைப்பு மறுக்கப்படுகிறதா, தொங்குகிறதா அல்லது கொள்கலனின் சாதாரண பாதை வழியாக அமைதியாக வெற்றி பெறுகிறதா என்பதைக் கவனியுங்கள். கடைசி முடிவே முக்கியமானது, அது ஆரோக்கியமான பதிவில் தெரியாது.

பணிச்சுமை ஒருபோதும் சாதாரண வழியைப் பயன்படுத்தக்கூடாது என்றால், தீச்சுவர் விதிகள் மற்றும் பெயர்வெளிக்குள் தயார்நிலை சமிக்ஞையுடன் அதை வெளிப்படையாக வடிவமைக்கவும். Kill switch என்பது நீங்கள் எழுதிச் சோதிக்கும் கொள்கை, கொள்கலனில் வாடிக்கையாளரை இயக்குவதால் பெறும் பண்பு அல்ல.

இறுதியாக, எல்லையை நினைவில் கொள்ளுங்கள்: இந்தப் பாதைகள் கொள்கலனின் பெயர்வெளியில் வாழ்கின்றன, புரவலனின் வழிமாற்றல் அட்டவணையை மாற்றாது. Docker இன் முன்னனுப்பல், மொழிபெயர்ப்பு மற்றும் தீச்சுவர் விதிகள் வெளிப்பாதையின் பகுதியாகவே இருக்கும், வெளியிடப்பட்ட துறைமுகம் VPN இடைமுகம் அல்ல.

தொடர்புடைய கட்டுரைகள்