VPS 'ਤੇ OpenVPN: ਖੋਲ੍ਹਣ ਲਈ /dev/net/tun ਜੰਤਰ ਨਹੀਂ
ਕੌਂਫਿਗ ਆਮ ਤੌਰ 'ਤੇ ਠੀਕ ਹੁੰਦਾ ਹੈ: ਗੈਸਟ ਨੂੰ tun ਜੰਤਰ ਨਹੀਂ ਦਿਸਦਾ। ਇਹ VM ਹੈ ਜਾਂ ਕਰਨਲ ਸਾਂਝਾ ਕਰਨ ਵਾਲਾ ਕੰਟੇਨਰ, ਇਹ ਵੱਖ ਕਰੋ ਅਤੇ ਫਿਰ ਕਰਨਲ ਦੀ ਮਾਲਕੀ ਵਾਲੀ ਪਰਤ ਠੀਕ ਕਰੋ।
ਪਹਿਲੀ ਸ਼ੁਰੂਆਤ /dev/net/tun ਜਾਂ ਖੋਲ੍ਹੇ ਨਾ ਜਾ ਸਕਣ ਵਾਲੇ TUN/TAP ਜੰਤਰ ਬਾਰੇ ਸੁਨੇਹੇ ਨਾਲ ਅਸਫਲ ਹੁੰਦੀ ਹੈ। ਸਰਟੀਫਿਕੇਟ ਅਜੇ ਪੜ੍ਹੇ ਨਹੀਂ ਗਏ, ਇਸ ਲਈ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਕੁਝ ਵੀ ਦੋਸ਼ੀ ਨਹੀਂ। ਡੈਮਨ ਕਰਨਲ ਕੋਲੋਂ ਉਹ ਵਸਤੂ ਮੰਗ ਰਿਹਾ ਹੈ ਜੋ ਇਸ ਗੈਸਟ ਕੋਲ ਨਹੀਂ।
ਉਹ ਵਸਤੂ tun ਮਾਡਿਊਲ ਵੱਲੋਂ ਦਿੱਤਾ ਅੱਖਰ ਜੰਤਰ ਹੈ। ਤੁਸੀਂ ਇਹ ਬਣਾ ਸਕਦੇ ਹੋ ਜਾਂ ਨਹੀਂ, ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਕਰਨਲ ਕਿਸ ਦੀ ਮਾਲਕੀ ਹੈ।
ਡੈਮਨ ਕਰਨਲ ਕੋਲੋਂ ਕੀ ਮੰਗਦਾ ਹੈ
OpenVPN /dev/net/tun ਖੋਲ੍ਹਦਾ ਹੈ ਅਤੇ ਡਰਾਈਵਰ ਕੋਲੋਂ ਇੰਟਰਫੇਸ ਮੰਗਦਾ ਹੈ। ਡਰਾਈਵਰ tun ਮਾਡਿਊਲ ਹੈ, ਅਤੇ ਜੰਤਰ ਨੋਡ ਉਹ ਹੈਂਡਲ ਹੈ ਜੋ ਵਰਤੋਂਕਾਰ ਸਪੇਸ ਉਸ ਤੱਕ ਪਹੁੰਚਣ ਲਈ ਵਰਤਦੀ ਹੈ। ਜੇ ਮਾਡਿਊਲ ਲੋਡ ਨਹੀਂ ਹੈ ਤਾਂ ਨੋਡ ਨਹੀਂ ਹੋ ਸਕਦਾ ਜਾਂ ਖੋਲ੍ਹਣਾ ਅਸਫਲ ਹੋ ਸਕਦਾ ਹੈ। ਦੋਵੇਂ ਹਾਲਤਾਂ server.conf ਦੀ ਸੋਧ ਨਾਲ ਠੀਕ ਨਹੀਂ ਹੁੰਦੀਆਂ।
ਇਸ ਗਲਤੀ ਨੂੰ ਪਹਿਲਾਂ ਪਲੇਟਫਾਰਮ ਬਾਰੇ ਸਵਾਲ ਵਜੋਂ ਪੜ੍ਹੋ। ਕੌਂਫਿਗ ਗਲਤੀ ਜੰਤਰ ਖੁੱਲ੍ਹਣ ਤੋਂ ਬਾਅਦ ਦਿਸਦੀ ਹੈ, ਪਹਿਲਾਂ ਨਹੀਂ।
VM ਜਾਂ ਕਰਨਲ ਸਾਂਝਾ ਕਰਨ ਵਾਲਾ ਗੈਸਟ
KVM, Xen ਜਾਂ ਕਿਸੇ ਹੋਰ ਪੂਰੀ ਵਰਚੁਅਲ ਮਸ਼ੀਨ 'ਤੇ ਕਰਨਲ ਤੁਹਾਡੇ ਕੰਟਰੋਲ ਵਿੱਚ ਹੈ। ਤੁਸੀਂ ਮਾਡਿਊਲ ਲੋਡ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਨੋਡ ਬਣਾ ਸਕਦੇ ਹੋ। OpenVZ, Virtuozzo ਜਾਂ LXC ਸ਼ੈਲੀ ਦੇ ਕੰਟੇਨਰ ਵਿੱਚ ਗੈਸਟ ਹੋਸਟ ਦਾ ਕਰਨਲ ਸਾਂਝਾ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਇਸ ਦੇ ਅੰਦਰਲਾ root ਉਹ ਮਾਡਿਊਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕਦਾ ਜੋ ਹੋਸਟ ਨੇ ਲੋਡ ਨਹੀਂ ਕੀਤਾ।
ਇਸ ਲਈ ਉਸੇ ਅਸਫਲਤਾ ਦੇ ਦੋ ਬਿਲਕੁਲ ਵੱਖਰੇ ਮਾਲਕ ਹਨ। ਪਹਿਲੀ ਹਾਲਤ ਵਿੱਚ ਤੁਸੀਂ ਇਸਨੂੰ ਇੰਸਟੈਂਸ ਦੇ ਅੰਦਰੋਂ ਠੀਕ ਕਰ ਸਕਦੇ ਹੋ। ਦੂਜੀ ਵਿੱਚ ਤੁਸੀਂ ਹੋਸਟ ਜਾਂ ਪ੍ਰਦਾਤਾ ਨੂੰ ਕੁਝ ਖੋਲ੍ਹਣ ਲਈ ਕਹਿ ਰਹੇ ਹੋ।
ਤੁਸੀਂ ਕਿਹੜੀ ਹਾਲਤ ਵਿੱਚ ਹੋ, ਇਹ ਤੈਅ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ls -l /dev/net/tun, lsmod | grep tun ਅਤੇ ip -brief link show ਚਲਾਓ।
VM 'ਤੇ ਬੂਟ ਵੇਲੇ ਮਾਡਿਊਲ ਲੋਡ ਕਰੋ
ਵਰਚੁਅਲ ਮਸ਼ੀਨ 'ਤੇ modprobe tun ਆਮ ਤੌਰ 'ਤੇ ਜੰਤਰ ਨੋਡ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਦਿਸਿਆ ਕਿ ਨਹੀਂ ਇਹ ਜਾਂਚੋ, ਫਿਰ ਇੱਕ ਵਾਰ ਟਾਈਪ ਕੀਤੇ ਹੁਕਮ 'ਤੇ ਨਿਰਭਰ ਨਾ ਰਹਿੰਦੇ ਹੋਏ ਡਿਸਟਰੀਬਿਊਸ਼ਨ ਦੀ ਮਾਡਿਊਲ ਕੌਂਫਿਗ ਰਾਹੀਂ ਲੋਡ ਪੱਕਾ ਕਰੋ। ਰੀਬੂਟ ਤੋਂ ਬਾਅਦ ਗਾਇਬ ਹੋਣ ਵਾਲਾ ਨੋਡ ਅਗਲੇ ਮਹੀਨੇ ਉਹੀ ਟਿਕਟ ਬਣਦਾ ਹੈ।
ਇਹ ਵੀ ਜਾਂਚੋ ਕਿ ਤੁਹਾਡੇ ਬੂਟ ਕੀਤੇ ਕਰਨਲ ਵਿੱਚ ਉਹ ਮਾਡਿਊਲ ਹੈ ਵੀ ਜਾਂ ਨਹੀਂ। ਕੱਟਿਆ ਹੋਇਆ ਵਿਕਰੇਤਾ ਕਰਨਲ ਇਸ ਤੋਂ ਸੱਖਣਾ ਹੋ ਸਕਦਾ ਹੈ।
ਜੇ ਨੋਡ ਹੈ ਪਰ ਖੋਲ੍ਹਣਾ ਅਜੇ ਵੀ ਅਸਫਲ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਅਗਲੇ ਸ਼ੱਕੀ ਇਜਾਜ਼ਤਾਂ ਅਤੇ ਜੰਤਰ ਦੇ major/minor ਨੰਬਰ ਹਨ। ਇਹ ਸਥਾਨਕ ਸੁਧਾਰ ਹਨ, ਪ੍ਰਦਾਤਾ ਨੂੰ ਬੇਨਤੀ ਨਹੀਂ।
ਕੰਟੇਨਰ ਵਿੱਚ ਜੰਤਰ ਹੋਸਟ ਦੀ ਮਾਲਕੀ ਹੁੰਦਾ ਹੈ
ਕੰਟੇਨਰ ਵਿੱਚ ਜੰਤਰ ਅਤੇ ਸਮਰੱਥਾ ਦੋ ਵੱਖਰੀਆਂ ਲੋੜਾਂ ਹਨ। ਰਨਟਾਈਮ ਨੂੰ /dev/net/tun ਲੰਘਾਉਣਾ ਪੈਂਦਾ ਹੈ, ਅਤੇ ਕੰਟੇਨਰ ਨੂੰ ਇੰਟਰਫੇਸ ਬਣਾਉਣ ਲਈ ਨੈੱਟਵਰਕ ਸਮਰੱਥਾ ਚਾਹੀਦੀ ਹੈ। ਦੋਵੇਂ ਨਾ ਦੇਣ ਵਾਲਾ rootless ਰਨਟਾਈਮ ਪ੍ਰੋਫਾਈਲ ਕਿਵੇਂ ਵੀ ਲਿਖਿਆ ਹੋਵੇ, ਉਹੀ ਖੋਲ੍ਹਣ ਦੀ ਗਲਤੀ ਦਿੰਦਾ ਰਹੇਗਾ। ਬਹੁਤ ਸਾਰੇ OpenVZ ਹੋਸਟ ਗਾਹਕ ਪੈਨਲ ਵਿੱਚ TUN/TAP ਟੌਗਲ ਦਿੰਦੇ ਹਨ, ਅਤੇ ਇਸਨੂੰ ਚਾਲੂ ਕਰਕੇ ਰੀਸਟਾਰਟ ਕਰਨਾ ਅਕਸਰ ਪੂਰਾ ਹੱਲ ਹੁੰਦਾ ਹੈ।
ਪ੍ਰਦਾਤਾ ਨੂੰ ਦੋ ਸਪਸ਼ਟ ਸਵਾਲ ਪੁੱਛੋ: ਕੀ ਹੋਸਟ 'ਤੇ tun ਮਾਡਿਊਲ ਲੋਡ ਹੈ, ਅਤੇ ਕੀ ਇਸ ਇੰਸਟੈਂਸ ਦੇ ਅੰਦਰ ਜੰਤਰ ਉਪਲਬਧ ਹੈ? ਧੁੰਦਲੀ ਟਿਕਟ ਨੂੰ ਧੁੰਦਲਾ ਜਵਾਬ ਮਿਲਦਾ ਹੈ।
ਮਾਡਿਊਲ ਦੁਬਾਰਾ ਬਣਾਉਣਾ ਘੱਟ ਹੀ ਕਿਉਂ ਮਦਦ ਕਰਦਾ ਹੈ
ਗੈਸਟ ਦੇ ਅੰਦਰ ਮਾਡਿਊਲ ਬਣਾਉਣਾ ਘੱਟ ਹੀ ਮਦਦ ਕਰਦਾ ਹੈ। ਕੰਪਾਇਲ ਕਰਨ ਲਈ ਠੀਕ ਉਸੇ ਚੱਲ ਰਹੇ ਕਰਨਲ ਦਾ ਕੌਂਫਿਗ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ /proc/config.gz ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ ਅਤੇ ਘੱਟੋ-ਘੱਟ ਇਮੇਜਾਂ 'ਤੇ ਅਕਸਰ ਨਹੀਂ ਹੁੰਦਾ। ਚੱਲਦਾ ਮਾਡਿਊਲ ਵੀ ਉਸ ਕਰਨਲ ਵਿੱਚ ਨਹੀਂ ਪਾਇਆ ਜਾ ਸਕਦਾ ਜਿਸਦਾ ਮਾਲਕ ਕੰਟੇਨਰ ਨਹੀਂ।
ਜੰਤਰ ਦਿਸਣ ਤੋਂ ਬਾਅਦ ਸੇਵਾ ਰੀਸਟਾਰਟ ਕਰੋ ਅਤੇ ਟ੍ਰੈਫਿਕ ਜਾਂਚਣ ਤੋਂ ਪਹਿਲਾਂ ਇੰਟਰਫੇਸ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ। tun0 ਦਿਸਣਾ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਡੈਮਨ ਨੇ ਜੰਤਰ ਖੋਲ੍ਹਿਆ। ਇਹ ਫਾਰਵਰਡਿੰਗ, ਫਾਇਰਵਾਲ ਨਿਯਮਾਂ ਜਾਂ ਗਾਹਕਾਂ ਨੂੰ ਮਿਲਣ ਵਾਲੇ ਰੂਟਾਂ ਬਾਰੇ ਅਜੇ ਕੁਝ ਨਹੀਂ ਕਹਿੰਦਾ।
ਇਹ ਵੱਖਰੇ ਸਬੂਤਾਂ ਵਾਲੇ ਵੱਖਰੇ ਸਵਾਲ ਹਨ। ਜੰਤਰ ਦਾ ਨਾ ਹੋਣਾ ਪੂਰਵ-ਸ਼ਰਤ ਦੀ ਅਸਫਲਤਾ ਹੈ; ਹੋਣ ਹੋਇਆ ਵੀ ਕੁਝ ਨਾ ਢੋਣ ਵਾਲੀ ਸੁਰੰਗ ਨੀਤੀ ਦੀ ਅਸਫਲਤਾ ਹੈ।