જ્યારે પણ વર્ચ્યુઅલ મશીન VPN ક્લાયંટ ચલાવે છે ત્યારે બે જુદા પ્રશ્નો સાથે આવે છે, અને તેમના જવાબ જુદા હોય છે. પહેલો એ છે કે મહેમાનની અંદરનું ટનલ હોસ્ટને સુરક્ષિત કરે છે કે નહીં, અને બીજો એ છે કે હોસ્ટ પરનું ટનલ મહેમાનને ઢાંકે છે કે નહીં. એડેપ્ટર મોડ બંને નક્કી કરે છે, VPN સોફ્ટવેર કરતાં વધુ. NAT એડેપ્ટર હોસ્ટને દેખાતું અંતિમ બિંદુ બનાવે છે, જ્યારે બ્રિજ એડેપ્ટર મહેમાનને તેના પોતાના સરનામા સાથે નેટવર્ક પર મૂકે છે.

એન્ક્રિપ્ટેડ સેશન ખરેખર કોણ સમાપ્ત કરે છે

એન્ક્રિપ્ટેડ સેશન તે મશીનનું હોય છે જે તેને સમાપ્ત કરે છે, અને જ્યારે ક્લાયંટ VM ની અંદર ચાલે છે ત્યારે તે મહેમાન હોય છે. ફક્ત મહેમાનના વર્ચ્યુઅલ એડેપ્ટરમાં પ્રવેશતો ટ્રાફિક તે ટનલમાંથી પસાર થાય છે, અને હાઇપરવાઇઝર પોતાની જાતે ક્યારેય બીજા મશીનને મહેમાનમાંથી પસાર કરતું નથી. એટલે મહેમાન કાર્યરત ટનલ રાખી શકે છે જ્યારે હોસ્ટ ખુલ્લા નેટવર્કમાં બ્રાઉઝ કરે છે. ઊલટું સમપ્રમાણ નથી, અને આ અસમપ્રમાણતા એ જ ભાગ છે જેમાં મોટા ભાગની માર્ગદર્શિકાઓ ભૂલ કરે છે.

બહારનું નેટવર્ક કોનું સરનામું જુએ છે તે પ્રશ્નનો જવાબ એડેપ્ટર મોડ આપે છે. એ નક્કી થયા પછી કવરેજ નીતિનો પ્રશ્ન રહેતું નથી અને યાંત્રિક બની જાય છે. નીચેનું બધું એ બે હકીકતોમાંથી આવે છે.

NAT મહેમાનને હોસ્ટ જેવું દેખાય ત્યાં સુધી ફરી લખે છે

NAT માં, હાઇપરવાઇઝર મહેમાનના દરેક પેકેટને પહેલા સ્વિચ સુધી પહોંચતા પહેલા હોસ્ટના સરનામા પર ફરી લખે છે. પછી એ ટ્રાફિક હોસ્ટના પોતાના નેટવર્ક સ્ટેકને સોંપાય છે, જ્યાં તે હોસ્ટના રાઉટિંગ ટેબલને અનુસરે છે, જેમાં હોસ્ટ પરના ટનલની માલિકીના ડિફોલ્ટ રૂટનો સમાવેશ થાય છે. તેથી NAT મહેમાન કોઈપણ ગોઠવણી વિના હોસ્ટ પરના ટનલથી ઢંકાયેલો હોય છે, જે મહેમાન-થી-હોસ્ટ કેસ સૂચવે છે તેનાથી ઊલટું છે.

# on the host: adapter mode and NAT DNS behaviour
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
VBoxManage modifyvm "lab-vm" --natdnshostresolver1 on

જે મહેમાન પોતાનો ક્લાયંટ ચલાવે છે તે એ ટનલ મહેમાનની અંદર સમાપ્ત કરે છે, અને એન્ક્રિપ્ટેડ ટ્રાફિક પછી એ જ ફરી-લખાણમાંથી બહાર નીકળે છે, તેથી હોસ્ટની એપ્લિકેશનો પોતાનો માર્ગ અને પોતાનું નિકાસ સરનામું રાખે છે. VirtualBox આ મોડમાં નામ-ઉકેલની પણ ધારક છે અને --natdnshostresolver1 સક્ષમ ન હોય ત્યાં સુધી મહેમાનની ક્વેરીઓ પોતાના એન્જિનમાંથી મોકલે છે. તેને સક્ષમ કરવાથી મહેમાનની શોધ હોસ્ટના રિઝોલ્વરને મળે છે, જે હોસ્ટનું પોતાનું દૃશ્ય સાચું હોય ત્યારે ઉકેલ સુધારે છે અને એટલી જ રીતે એવું રિઝોલ્વર આપે છે જે ફક્ત ટનલની અંદર જ અસ્તિત્વમાં હોઈ શકે. ગોઠવણી બદલતા પહેલા VM બંધ કરવું પડે છે, અને ગોઠવણી મહેમાનના સોફ્ટવેરની નહીં, એડેપ્ટરની છે.

બ્રિજ મહેમાનને પોતાનું લીઝ અને પોતાનું જોખમ આપે છે

બ્રિજ મહેમાનના ફ્રેમને ભૌતિક સેગમેન્ટ પર મોકલે છે, તેથી DHCP તેને લીઝ આપે છે અને નેટવર્ક તેને અલગ હોસ્ટ તરીકે ગણે છે. દરેક બ્રિજ થયેલો મહેમાન પોતાના ડિફોલ્ટ રૂટ સાથે સ્વતંત્ર ટનલ રાખી શકે છે, અને હોસ્ટનું ટેબલ ક્યારેય બદલાતું નથી. કિંમત છે જોખમ: મહેમાન બ્રોડકાસ્ટનો જવાબ આપે છે, પડોશી ટેબલમાં દેખાય છે, અને સ્વિચ પોર્ટ સુરક્ષા તથા વાયરલેસ ક્લાયંટ અલગતા હેઠળ આવે છે. હોસ્ટ પરનું ટનલ આ ગોઠવણને પણ ઢાંકતું નથી, કારણ કે મહેમાનના ફ્રેમ ક્યારેય હોસ્ટ સ્ટેકમાંથી પસાર થતા નથી.

NAT કેસથી આ ફરક સૂચન તરીકે છોડવાને બદલે સ્પષ્ટ કહેવો યોગ્ય છે. બ્રિજ થયેલા મહેમાનને પોતાનો ક્લાયંટ અને પોતાના ઓળખપત્રો ત્યારે જરૂરી છે જ્યારે તેના ટ્રાફિકે ટનલ વાપરવું પડે. જ્યાં મહેમાને સ્થાનિક નેટવર્ક માટે અદૃશ્ય રહેવું પડે, ત્યાં NAT અથવા નિયંત્રિત રાઉટિંગ સાથેનું ફક્ત-આંતરિક નેટવર્ક સારું ડિઝાઇન છે.

મહેમાન હોસ્ટનું ગેટવે કેમ ન હોઈ શકે

મહેમાનના ટનલને હોસ્ટને ઉધાર આપવાનો બે મોટા હાઇપરવાઇઝરમાંથી કોઈમાં પણ સમર્થિત સ્વિચ નથી. હોસ્ટ પાસે મહેમાનના ટનલમાં કોઈ રૂટ નથી અને ત્યાં ઇશારો કરતો કોઈ અનુવાદ નિયમ નથી, તેથી મહેમાન અને હોસ્ટનો ટ્રાફિક અલગ માલિકો સાથે અલગ પ્રવાહ રહે છે. એડેપ્ટર મોડ ગમે તે હોય, આ દિશા નિષ્ફળ જાય છે.

કામ કરતા વિકલ્પો ફોરવર્ડ અને પ્રોક્સી છે. SSH સ્થાનિક ફોરવર્ડ હોસ્ટને પોતાના લૂપબેક સાથે જોડાવા દે છે જ્યારે મહેમાન સ્ટ્રીમને ટનલમાં લઈ જાય છે, જે બીજો ક્લાયંટ સ્થાપ્યા વિના TCP સેવાઓ ઢાંકે છે. હોસ્ટના પોતાના IP ટ્રાફિકને તેના બદલે મહેમાનના ટનલનો ઉપયોગ કરાવવો મહેમાનની અંદર રાઉટર ઉપરાંત હોસ્ટ પર સ્પષ્ટ રૂટ અને હોસ્ટ પર અનુવાદ માગે છે. તે ચેકબોક્સ નહીં પણ નાની નેટવર્ક ડિઝાઇન છે, અને પાછા ફરવાના માર્ગ માટે યોજના માગે છે. જ્યારે મહેમાન ફક્ત ક્લાયંટ ચલાવવા માટે જ હોય, ત્યારે ક્લાયંટ હોસ્ટ પર મૂકો અને વધારાનું હોપ કાઢી નાખો.

ssh -N -f -L 8080:internal-host.example:80 user@lab-vm

રિઝોલ્વર અને રૂટ સીમા ઓળંગતા નથી

DNS તે એડેપ્ટરને અનુસરે છે જેણે વિકલ્પ મેળવ્યો, તેથી મહેમાન હોસ્ટના ટનલ-રિઝોલ્વરનો વારસો લેતું નથી અને હોસ્ટ ક્યારેય મહેમાનને મોકલેલા સર્વરને જાણતું નથી. મોકલેલા dhcp-option DNS મૂલ્યો તે ઇન્ટરફેસ પર લાગુ પડે છે જેણે તેમને સ્વીકાર્યા, અને એટલે ક્લાયંટ વગરનો બ્રિજ થયેલો મહેમાન આંતરિક નામો ઉકેલી શકતો નથી. NAT મહેમાન સામાન્ય રીતે હાઇપરવાઇઝરની DNS સંભાળ વાપરે છે, અને ફરક દરેક પર્યાવરણમાં એક આદેશમાં દેખાય છે.

# on the host
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
# inside a Linux guest
ip -4 route
resolvectl status
# inside a Windows guest
Get-DnsClientServerAddress

હોસ્ટને અનુસરે છે એમ ધારવા પહેલા મહેમાનની અંદર રિઝોલ્વર અને રૂટ વાંચો. આંતરિક નામો ત્યાં જ ઉકેલવા હોય તો ટનલ-રિઝોલ્વર મહેમાનના પોતાના એડેપ્ટરમાં ઉમેરો, પછી ફક્ત ટનલ પાછળ અસ્તિત્વમાં હોય એવા નામથી ચકાસો. દરેક VM માટે એડેપ્ટર મોડ, ટનલનો માલિક અને રિઝોલ્વરનો સ્રોત નોંધો, કારણ કે એ ત્રણ હકીકતો લગભગ દરેક પછીના પ્રશ્નનો જવાબ આપે છે. બીજા હાઇપરવાઇઝર મોડનાં નામ બદલે છે અને સિદ્ધાંત અકબંધ રાખે છે.

સંબંધિત લેખો