host-only ਨੈੱਟਵਰਕ 'ਤੇ VM ਟ੍ਰੈਫਿਕ ਨੂੰ TUN OpenVPN ਸਰਵਰ ਰਾਹੀਂ ਰੂਟ ਕਰੋ
ਟਨਲ ਅਤੇ host-only ਪ੍ਰੀਫਿਕਸ ਨੂੰ ਵੱਖਰਾ ਰੱਖੋ, ਗੈਸਟ ਰੂਟ ਪੁਸ਼ ਕਰੋ, ਅਤੇ ਫਿਰ ਹਰ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਨੂੰ ਹੋਸਟ ਰਾਹੀਂ ਜਾਣ-ਬੁੱਝ ਕੇ ਵਾਪਸੀ ਦਾ ਰਾਹ ਦਿਓ।
host-only ਅਡੈਪਟਰ ਸਥਾਨਕ ਵਰਚੁਅਲ ਨੈੱਟਵਰਕ ਬਣਾਉਂਦੇ ਹਨ, ਅਤੇ ਰੂਟ ਕੀਤੇ TUN ਟਨਲ ਪਤਿਆਂ ਵਿਚਕਾਰ IP ਪੈਕਟ ਲੈ ਜਾਂਦੇ ਹਨ। ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਦੂਜੇ ਲਈ ਬ੍ਰਿਜ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਕੰਮ ਕਰਨ ਵਾਲੀ ਕਨਫਿਗਰੇਸ਼ਨ ਨੂੰ ਦੱਸਣਾ ਪਵੇਗਾ ਕਿ ਕੌਣ ਫਾਰਵਰਡ ਕਰਦਾ ਹੈ ਅਤੇ ਵਾਪਸੀ ਰੂਟ ਕਿਸਦਾ ਹੈ। ਇਹ ਦੋ ਜ਼ਿੰਮੇਵਾਰੀਆਂ ਗਲਤ ਹੋਣ 'ਤੇ ਗੈਸਟ ਟਨਲ ਨੂੰ ਅਜਿਹੇ ਸਰੋਤ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ ਜੋ ਟਨਲ ਕਲਾਇੰਟ ਨੇ ਕਦੇ ਨਹੀਂ ਮੰਗਿਆ। ਹੇਠਾਂ ਦਾ ਡਿਜ਼ਾਈਨ ਦੋਵੇਂ ਪ੍ਰੀਫਿਕਸ ਵੱਖਰੇ ਰੱਖਦਾ ਹੈ ਅਤੇ ਵਾਪਸੀ ਦਾ ਰਾਹ ਸਪੱਸ਼ਟ ਕਰਦਾ ਹੈ।
ਦੋ ਨੈੱਟਵਰਕ, ਦੋ ਪ੍ਰੀਫਿਕਸ
ਟਨਲ ਪੂਲ ਅਤੇ host-only ਨੈੱਟਵਰਕ ਨੂੰ ਵੱਖਰੇ ਪ੍ਰੀਫਿਕਸ ਦਿਓ ਅਤੇ ਕਦੇ ਵੀ ਇੱਕ ਨੂੰ ਦੂਜੇ ਲਈ ਦੁਬਾਰਾ ਨਾ ਵਰਤੋ। ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ VPN ਪੂਲ 10.44.0.0/24 ਹੈ ਅਤੇ host-only ਨੈੱਟਵਰਕ 192.168.99.0/24 ਹੈ, ਹੋਸਟ 192.168.99.1 'ਤੇ ਅਤੇ ਇੱਕ ਗੈਸਟ 192.168.99.20 'ਤੇ। ਇੱਕੋ ਪ੍ਰੀਫਿਕਸ TUN ਡਿਵਾਈਸ ਅਤੇ host-only ਅਡੈਪਟਰ ਦੋਵਾਂ ਨੂੰ ਦੇਣ ਨਾਲ ਉਹ ਜੁੜਦੇ ਨਹੀਂ। ਇਹ ਇੱਕ ਪਤਾ-ਸੀਮਾ 'ਤੇ ਦੋ ਦਾਅਵੇ ਬਣਾਉਂਦਾ ਹੈ, ਅਤੇ ਰੂਟਿੰਗ ਟੇਬਲ ਫਿਰ ਸੰਜੋਗ ਨਾਲ ਰੱਖੇ ਦਾਅਵੇ ਦੇ ਹੱਕ ਵਿੱਚ ਜਵਾਬ ਦਿੰਦੀ ਹੈ।
host-only ਅਡੈਪਟਰ ਹੋਸਟ 'ਤੇ ਅਤੇ ਗੈਸਟ ਦੇ ਅੰਦਰ ਦੋਵੇਂ ਥਾਂ ਮੌਜੂਦ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਇਸ ਨੂੰ ਆਪਣੇ ਆਪ ਮਸ਼ੀਨ ਤੋਂ ਬਾਹਰ ਜਾਣ ਦਾ ਕੋਈ ਰਾਹ ਨਹੀਂ। ਬ੍ਰਿਜ ਅਤੇ NAT ਕਨੈਕਸ਼ਨਾਂ ਦਾ ਖ਼ਤਰਾ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਗੈਸਟ ਸੇਵਾ ਤੱਕ ਪਹੁੰਚਣ ਲਈ ਬ੍ਰਿਜ ਮੋਡ ਵਿੱਚ ਜਾਣਾ ਜ਼ਰੂਰੀ ਨਹੀਂ।
ਹੋਸਟ ਕੋਲ ਰਾਹ ਪਹਿਲਾਂ ਹੀ ਹੈ
ਕੁਝ ਵੀ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ ਦੇਖੋ ਕਿ ਕੀ ਮੌਜੂਦ ਹੈ। ਹੋਸਟ ਕੋਲ host-only ਨੈੱਟਵਰਕ 'ਤੇ ਇੰਟਰਫੇਸ ਅਤੇ ਉਸ ਪ੍ਰੀਫਿਕਸ ਲਈ ਰੂਟ ਹੈ, ਦੋਵੇਂ ਅਡੈਪਟਰ ਉੱਠਣ ਵੇਲੇ ਬਣੇ ਸਨ।
ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward
ਤੀਜੀ ਲਾਈਨ ਉਹੀ ਤੰਤਰ ਹੈ ਜੋ ਹੋਸਟ ਨੂੰ ਹੌਪ ਬਣਾਉਂਦਾ ਹੈ। ਇਸ ਤੋਂ ਬਿਨਾਂ, ਟਨਲ ਤੋਂ ਆਉਣ ਵਾਲਾ ਪੈਕਟ ਉਸ ਨੈੱਟਵਰਕ 'ਤੇ ਪਤਾ ਪਾਉਂਦਾ ਹੈ ਜਿੱਥੇ ਹੋਸਟ ਪਹੁੰਚ ਸਕਦਾ ਹੈ ਪਰ ਫਾਰਵਰਡ ਨਹੀਂ ਕਰੇਗਾ। ਫਾਰਵਰਡਿੰਗ ਜ਼ਰੂਰੀ ਹੈ ਅਤੇ ਕਾਫ਼ੀ ਨਹੀਂ। ਫਿਲਟਰ ਨੀਤੀ ਅਜੇ ਵੀ ਤੈਅ ਕਰਦੀ ਹੈ ਕਿ ਟਨਲ ਇੰਟਰਫੇਸ ਅਤੇ host-only ਇੰਟਰਫੇਸ ਵਿਚਕਾਰ ਕੋਈ ਖ਼ਾਸ ਪ੍ਰਵਾਹ ਮਨਜ਼ੂਰ ਹੈ ਜਾਂ ਨਹੀਂ, ਅਤੇ ਉਹ ਫੈਸਲਾ ਲਿਖਤੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਕਿਸੇ ਨਾ ਪੜ੍ਹੀ ਡਿਫਾਲਟ ਨੀਤੀ ਵਿੱਚ ਨਹੀਂ।
ਰੂਟ ਪੁਸ਼ ਕਰੋ, ਫਿਰ ਜੋ ਇਹ ਪਹੁੰਚਦਾ ਹੈ ਉਸ ਨੂੰ ਫਿਲਟਰ ਕਰੋ
ਸਰਵਰ ਪੁਸ਼ ਕੀਤੇ ਰੂਟ ਸਵੀਕਾਰ ਕਰਨ ਵਾਲੇ ਕਲਾਇੰਟਾਂ ਨੂੰ host-only ਪ੍ਰੀਫਿਕਸ ਦੇ ਸਕਦਾ ਹੈ, ਜੋ ਟਨਲ ਪਿੱਛੇ ਕਿਸੇ ਹੋਰ ਸਬਨੈੱਟ ਲਈ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਉਹੀ ਤੰਤਰ ਹੈ।
push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
ਇਹ ਦੋ ਨਿਯਮ ਇੱਕ ਦਿਸ਼ਾ ਵਿੱਚ ਇੱਕ ਸੇਵਾ ਅਤੇ ਉਸ ਦੇ ਜਵਾਬਾਂ ਨੂੰ ਮਨਜ਼ੂਰੀ ਦਿੰਦੇ ਹਨ। ਪੂਰੇ ਪ੍ਰੀਫਿਕਸ ਤੱਕ ਪਹੁੰਚਣ ਵਾਲਾ ਰੂਟ ਅਤੇ ਇੱਕ ਪੋਰਟ ਮਨਜ਼ੂਰ ਕਰਨ ਵਾਲਾ ਫਿਲਟਰ ਜਾਣ-ਬੁੱਝ ਕੇ ਬਣਾਇਆ ਸੰਜੋਗ ਹੈ; ਰੂਟ ਨਾਲ ਬਿਨਾਂ ਸ਼ਰਤ ਸਵੀਕ੍ਰਿਤੀ ਉਹ ਰਾਹ ਹੈ ਜਿਸ ਨਾਲ ਪ੍ਰਯੋਗਸ਼ਾਲਾ ਦੀ ਸੇਵਾ ਖੁੱਲ੍ਹੀ ਸੇਵਾ ਬਣ ਜਾਂਦੀ ਹੈ। ਪੁਸ਼ ਕੀਤਾ ਰੂਟ ਵੀ ਅਧਿਕਾਰ ਨਹੀਂ ਹੈ। ਕਲਾਇੰਟ ਇਸ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ, ਹੋਸਟ ਇਸ ਨੂੰ ਫਾਰਵਰਡ ਕਰਦਾ ਹੈ, ਅਤੇ ਗੈਸਟ ਫਾਇਰਵਾਲ ਤੇ ਸੇਵਾ ਆਪ ਅਜੇ ਵੀ ਰਾਏ ਰੱਖਦੇ ਹਨ।
ਗੈਸਟ ਨੂੰ ਵਾਪਸੀ ਦਾ ਰਾਹ ਚਾਹੀਦਾ ਹੈ
10.44.0.x ਤੋਂ ਪਹੁੰਚੇ ਜਾਣ ਵਾਲੇ ਗੈਸਟ ਨੂੰ ਆਪਣੇ ਜਵਾਬ ਹੋਸਟ ਦੇ host-only ਪਤੇ 'ਤੇ ਭੇਜਣੇ ਪੈਣਗੇ, ਜਾਂ ਹੋਸਟ ਨੂੰ ਸਰੋਤ ਦਾ ਅਨੁਵਾਦ ਕਰਨਾ ਪਵੇਗਾ। VirtualBox DHCP ਤੋਂ ਪਤਾ ਮਿਲਣਾ ਇਹਨਾਂ ਦੋਵਾਂ ਵਿਵਸਥਾਵਾਂ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਦੱਸਦਾ।
ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15
ਗੈਸਟ ਦੇ ਅੰਦਰ ਉਹ ਰੂਟ ਜੋੜਨ ਨਾਲ ਮੂਲ ਸਰੋਤ ਬਚਦਾ ਹੈ, ਜੋ ਹਰ ਕਲਾਇੰਟ ਦੀ ਨੀਤੀ ਅਤੇ ਲੌਗ ਨੂੰ ਅਰਥਪੂਰਨ ਰੱਖਦਾ ਹੈ। ਹੋਸਟ 'ਤੇ ਸੀਮਿਤ ਸਰੋਤ ਅਨੁਵਾਦ ਬਦਲ ਹੈ, ਅਤੇ ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ, ਪਰ ਇਹ ਲੁਕਾਉਣ ਦੀ ਕੀਮਤ 'ਤੇ ਕਿ ਕਿਹੜਾ ਕਲਾਇੰਟ ਜੁੜਿਆ। ਓਵਰਲੈਪ ਅਸਫਲਤਾ ਦਾ ਦੂਜਾ ਤਰੀਕਾ ਹੈ। ਜਿਸ ਦੇ ਘਰ ਦਾ LAN ਪਹਿਲਾਂ ਹੀ 192.168.99.0/24 ਵਰਤਦਾ ਹੈ, ਅਜਿਹਾ ਦੂਰ ਦਾ ਕਲਾਇੰਟ ਪੁਸ਼ ਕੀਤੇ ਰੂਟ ਨੂੰ ਆਪਣਾ ਨੈੱਟਵਰਕ ਪੜ੍ਹੇਗਾ, ਅਤੇ ਸਰਵਰ ਪਾਸੇ ਕੋਈ ਵੀ ਬਦਲਾਅ ਉਸ ਅਸਪਸ਼ਟਤਾ ਨੂੰ ਠੀਕ ਨਹੀਂ ਕਰਦਾ। ਇੱਕ ਪਾਸਾ ਦੁਬਾਰਾ ਨੰਬਰ ਕਰੋ ਜਾਂ ਅਜਿਹਾ ਪ੍ਰੀਫਿਕਸ ਚੁਣੋ ਜਿਸ ਦੇ ਟਕਰਾਉਣ ਦੀ ਸੰਭਾਵਨਾ ਘੱਟ ਹੋਵੇ।
TUN ਡਿਵਾਈਸ IP ਪੈਕਟ ਲੈ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈ ਗੈਸਟ ਦੇ ਅੰਦਰ ਡਿਫਾਲਟ ਗੇਟਵੇ ਜੋੜਨ ਨਾਲ ਟਨਲ host-only ਅਡੈਪਟਰ ਨਾਲ ਈਥਰਨੈੱਟ ਹਿੱਸਾ ਨਹੀਂ ਬਣਦਾ। TAP ਬ੍ਰਿਜਿੰਗ ਆਪਣੇ ਕਲਾਇੰਟ ਸਮਰਥਨ ਅਤੇ ਪਤਾ-ਮਾਲਕੀ ਵਾਲਾ ਵੱਖਰਾ ਡਿਜ਼ਾਈਨ ਹੈ, ਅਤੇ ਦੋਵੇਂ ਵਰਣਨ ਮਿਲਾਉਣ ਨਾਲ ਅਜਿਹੀ ਕਨਫਿਗਰੇਸ਼ਨ ਬਣਦੀ ਹੈ ਜੋ ਕਦੇ ਨਹੀਂ ਮਿਲਦੀ।
ਪਰਖੋ, ਫਿਰ ਇਸ ਨੂੰ ਰੀਸਟਾਰਟ ਸਹਿਣ ਵਾਲਾ ਬਣਾਓ
ਆਮ ਦੂਰ ਦੇ ਕਲਾਇੰਟ ਤੋਂ ਇੱਕ ਬੇਨੁਕਸਾਨ ਸੇਵਾ ਦੀ ਜਾਂਚ ਕਰੋ, ਗੈਸਟ ਦਾ ਵਾਪਸੀ ਰੂਟ ਦੇਖੋ, ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਜਿਸ ਸੇਵਾ ਦੀ ਤੁਸੀਂ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੱਤੀ ਉਹ ਹੌਲੀ ਨਹੀਂ ਬਲਕਿ ਰੱਦ ਹੁੰਦੀ ਹੈ।
ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20
ਫਿਰ VPN ਸੇਵਾ ਅਤੇ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਦੀ ਨੈੱਟਵਰਕਿੰਗ ਰੀਸਟਾਰਟ ਕਰੋ ਅਤੇ ਉਹੀ ਤਿੰਨ ਜਾਂਚਾਂ ਦੁਹਰਾਓ। ਹੱਥ ਨਾਲ ਜੋੜਿਆ ਰੂਟ ਅਗਲੇ ਰੀਬੂਟ ਤੱਕ ਰਹਿੰਦਾ ਹੈ, ਅਤੇ ਜੋ ਕਨਫਿਗਰੇਸ਼ਨ ਸਿਰਫ਼ ਗਰਮ ਸੈਸ਼ਨ ਵਿੱਚ ਕੰਮ ਕਰੇ ਉਹ ਡਿਜ਼ਾਈਨ ਨਹੀਂ। ਦੋਵੇਂ ਪ੍ਰੀਫਿਕਸ, ਫਾਰਵਰਡਿੰਗ ਨੀਤੀ ਅਤੇ ਗੈਸਟ ਰੂਟ ਇਕੱਠੇ ਦਰਜ ਕਰੋ। ਅਗਲੀ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਜੋੜਨ ਵਾਲੇ ਨੂੰ ਤਿੰਨੇ ਲੋੜੀਂਦੇ ਹੋਣਗੇ ਅਤੇ ਵਰਨਾ ਉਹ ਹਰ ਅਸਫਲ ਕਨੈਕਸ਼ਨ 'ਤੇ ਉਹਨਾਂ ਨੂੰ ਦੁਬਾਰਾ ਲੱਭਦਾ ਰਹੇਗਾ।