ਜਦੋਂ ਵੀ ਕੋਈ ਵਰਚੁਅਲ ਮਸ਼ੀਨ 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 ਲਈ ਅਡੈਪਟਰ ਮੋਡ, ਟਨਲ ਦਾ ਮਾਲਕ ਅਤੇ ਹੱਲਕਰਤਾ ਦਾ ਸਰੋਤ ਦਰਜ ਕਰੋ, ਕਿਉਂਕਿ ਇਹ ਤਿੰਨ ਤੱਥ ਲਗਭਗ ਹਰ ਅਗਲੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦਿੰਦੇ ਹਨ। ਹੋਰ ਹਾਈਪਰਵਾਈਜ਼ਰ ਮੋਡਾਂ ਦੇ ਨਾਮ ਬਦਲਦੇ ਹਨ ਅਤੇ ਸਿਧਾਂਤ ਨੂੰ ਅਛੋਹ ਰੱਖਦੇ ਹਨ।

ਸੰਬੰਧਿਤ ਲੇਖ