ਕੰਟੇਨਰ ਵਿੱਚ vpnc ਰੂਟ-ਫਲ਼ਸ਼ ਚੇਤਾਵਨੀ ਕਿਉਂ ਆਉਂਦੀ ਹੈ
ਰੂਟ ਕੈਸ਼ ਫਲ਼ਸ਼ ਉਸ ਕਰਨਲ ਦੀ ਬਚੀ ਹੋਈ ਚੀਜ਼ ਹੈ ਜੋ ਹੁਣ ਉਹ ਕੈਸ਼ ਨਹੀਂ ਰੱਖਦਾ; ਪੜ੍ਹਨ-ਸਿਰਫ਼ ਗਲਤੀ ਟਨਲ ਤੋਂ ਨਹੀਂ, ਕੰਟੇਨਰ ਦੇ ਮਾਊਂਟ ਤੋਂ ਆਉਂਦੀ ਹੈ।
ਨਵੇਂ ਕੰਟੇਨਰ ਲੌਗ ਅਕਸਰ /proc/sys/net/ipv4/route/flush ਬਾਰੇ Read-only file system ਸ਼ਿਕਾਇਤ 'ਤੇ ਖ਼ਤਮ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਉਸ ਲਾਈਨ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਿਹਤਮੰਦ ਹੋ ਸਕਣ ਵਾਲੇ ਟਨਲ ਦਾ ਦੋਸ਼ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਇਸਦੇ ਪਿੱਛੇ ਦੀ ਲਿਖਤ IPv4 ਰੂਟ ਕੈਸ਼ ਦੇ ਜਾਣ ਤੋਂ ਬਾਅਦ ਕੋਈ ਵੀ ਲਾਭਦਾਇਕ ਕੰਮ ਨਾ ਕਰਨ ਵਾਲੀ ਕਰਨਲ ਐਂਟਰੀ ਨੂੰ ਨਿਸ਼ਾਨਾ ਬਣਾਉਂਦੀ ਹੈ। ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ /proc/sys ਪੜ੍ਹਨ-ਸਿਰਫ਼ ਵਜੋਂ ਮਾਊਂਟ ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਕੋਈ ਵੀ ਮੁੱਲ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਰੀਡਾਇਰੈਕਸ਼ਨ ਨਾਮਨਜ਼ੂਰ ਹੁੰਦਾ ਹੈ ਅਤੇ ਸ਼ੈੱਲ ਉਹ ਨਾਮਨਜ਼ੂਰੀ ਛਾਪਦਾ ਹੈ। ਕੰਮ ਕਰਦਾ ਟਨਲ ਇਹ ਚੇਤਾਵਨੀ ਉਦੋਂ ਤੱਕ ਛਾਪ ਸਕਦਾ ਹੈ ਜਿੰਨੀ ਦੇਰ ਪੁਰਾਣੀ ਲਾਈਨ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਰਹਿੰਦੀ ਹੈ, ਅਤੇ --privileged ਲਿਖਤ ਨੂੰ ਕਦੇ ਵੀ ਅਰਥਪੂਰਨ ਨਹੀਂ ਬਣਾਉਂਦਾ।
ਸਕ੍ਰਿਪਟ ਕੀ ਫਲ਼ਸ਼ ਕਰਨਾ ਚਾਹੁੰਦੀ ਸੀ
ਪੁਰਾਣੀਆਂ ਕਨੈਕਸ਼ਨ ਸਕ੍ਰਿਪਟਾਂ ਕੈਸ਼ ਸਫ਼ਾਈ ਨਾਲ ਖ਼ਤਮ ਹੁੰਦੀਆਂ ਸਨ: ਕਰਨਲ ਕੰਟਰੋਲ ਫਾਈਲ ਵਿੱਚ ਮੁੱਲ ਲਿਖਣਾ ਅਤੇ IPv4 ਸਟੈਕ ਨੂੰ ਆਪਣਾ ਰਾਊਟਿੰਗ ਕੈਸ਼ ਛੱਡਣ ਲਈ ਕਹਿਣਾ, ਤਾਂ ਜੋ ਪੁਰਾਣੀਆਂ ਐਂਟਰੀਆਂ ਦੇ ਮਿਆਦ ਪੁੱਗਣ ਦੀ ਉਡੀਕ ਕੀਤੇ ਬਿਨਾਂ ਨਵਾਂ ਟਨਲ ਰੂਟ ਚੁਣਿਆ ਜਾਵੇ। ਫਾਈਲ /proc/sys/net/ipv4/ ਅਧੀਨ ਸੰਬੋਧਿਤ ਸੀ, ਜਿਸ ਨੇ ਕਾਰਵਾਈ ਨੂੰ ਰਾਊਟਿੰਗ ਕਮਾਂਡ ਦੀ ਬਜਾਏ ਸ਼ੈੱਲ ਰੀਡਾਇਰੈਕਸ਼ਨ ਬਣਾ ਦਿੱਤਾ। ਕਰਨਲ 3.6 ਨੇ ਉਹ ਕੈਸ਼ ਹਟਾ ਦਿੱਤਾ, ਅਤੇ ਨਾਲ ਹੀ ਫਲ਼ਸ਼ ਦੇ ਹੋਣ ਦਾ ਕਾਰਨ ਵੀ। ਮੌਜੂਦਾ ਡੇਟਾ ਮਾਰਗ ਵਿੱਚ ਕੁਝ ਵੀ ਉਸ ਲਿਖਤ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦਾ।
ਐਂਟਰੀ ਆਪਣੇ ਆਪ ਪੁਰਾਣੀ ਸਿਰਫ਼-ਲਿਖਤ ਫਾਈਲ ਵਜੋਂ ਬਚੀ ਰਹੀ, ਇਸ ਲਈ ਜੋ ਸਕ੍ਰਿਪਟ ਅਜੇ ਵੀ ਇਸ ਵਿੱਚ ਲਿਖਦੀ ਹੈ ਉਹ ਅਸਲ ਮਾਰਗ ਅਤੇ ਅਸਲ ਇਜਾਜ਼ਤ ਜਾਂਚ ਤੱਕ ਪਹੁੰਚਦੀ ਹੈ। ਹੋਸਟ 'ਤੇ ਲਿਖਤ ਸਫਲਤਾ ਦੇਂਦੀ ਹੈ ਅਤੇ ਕੁਝ ਨਹੀਂ ਬਦਲਦੀ। ਕੰਟੇਨਰ ਵਿੱਚ ਉਹੀ ਰੀਡਾਇਰੈਕਸ਼ਨ ਪੜ੍ਹਨ-ਸਿਰਫ਼ /proc/sys ਨਾਲ ਟਕਰਾਉਂਦਾ ਹੈ ਅਤੇ EROFS ਨਾਲ ਅਸਫਲ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਸ਼ੈੱਲ ਪੜ੍ਹਨ-ਸਿਰਫ਼ ਫਾਈਲਸਿਸਟਮ ਸੁਨੇਹੇ ਵਜੋਂ ਛਾਪਦਾ ਹੈ। ਜਿਨ੍ਹਾਂ ਕਰਨਲਾਂ ਵਿੱਚ ਮਾਰਗ ਸੱਚਮੁੱਚ ਨਹੀਂ ਹੈ, ਸ਼ਬਦਾਵਲੀ No such file or directory ਹੋ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਸਿੱਟਾ ਨਹੀਂ ਬਦਲਦਾ।
ਦੋਵੇਂ ਗਲਤੀਆਂ ਵੱਖਰੀਆਂ ਗੱਲਾਂ ਕਹਿੰਦੀਆਂ ਹਨ, ਅਤੇ ਫ਼ਰਕ ਸਪਸ਼ਟ ਰੱਖਣਾ ਯੋਗ ਹੈ। Read-only file system ਦਾ ਮਤਲਬ ਹੈ ਕਰਨਲ ਐਂਟਰੀ ਤੱਕ ਪਹੁੰਚਿਆ ਅਤੇ ਲਿਖਤ ਨਾਮਨਜ਼ੂਰ ਕੀਤੀ; No such file or directory ਦਾ ਮਤਲਬ ਹੈ ਐਂਟਰੀ ਚਲੀ ਗਈ। ਕੋਈ ਵੀ ਸੁਨੇਹਾ ਟਨਲ ਜੰਤਰ, ਰੂਟ ਜਾਂ ਨਾਮ-ਹੱਲ ਬਾਰੇ ਰਿਪੋਰਟ ਨਹੀਂ ਕਰਦਾ, ਇਸ ਲਈ ਕੋਈ ਵੀ ਵੱਧ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਨੂੰ ਜਾਇਜ਼ ਨਹੀਂ ਠਹਿਰਾ ਸਕਦਾ।
ਸੁਨੇਹੇ ਨੂੰ ਕਾਰਨ-ਵਰਗਾ ਦਿਖਾਉਣ ਵਾਲਾ ਕ੍ਰਮ ਹੀ ਹੈ। ਕਨੈਕਸ਼ਨ ਸਕ੍ਰਿਪਟ ਅੰਤ ਦੀ ਸਫ਼ਾਈ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਰੂਟ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ, ਇੰਟਰਫ਼ੇਸ ਸਥਿਤੀ ਬਦਲਦੀ ਹੈ ਅਤੇ ਨਾਮ-ਹੱਲ ਮੁੜ ਲਿਖਦੀ ਹੈ, ਇਸ ਲਈ ਅੰਤ ਵਿੱਚ ਛਾਪੀ ਲਾਈਨ ਹੀ ਲੋਕਾਂ ਵੱਲੋਂ ਹਵਾਲਾ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ, ਭਾਵੇਂ ਹਰ ਜ਼ਰੂਰੀ ਕਦਮ ਸਫਲਤਾ ਦੇ ਗਿਆ ਹੋਵੇ। ਇਹ ਚੇਤਾਵਨੀ ਛਾਪਦਿਆਂ ਸਥਾਪਿਤ ਹੋਣ ਵਾਲਾ ਅਤੇ ਟ੍ਰੈਫ਼ਿਕ ਢੋਣ ਵਾਲਾ ਟਨਲ ਉੱਪਰ ਦੱਸੇ ਤੰਤਰ ਨਾਲ ਬਿਲਕੁਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ ਮਾਊਂਟ ਅਤੇ ਰੂਟ ਜਾਂਚੋ
ਤਿੰਨ ਪੜ੍ਹਤਾਂ ਸਤਹੀ ਚੇਤਾਵਨੀ ਨੂੰ ਅਸਲ ਅਸਫਲਤਾ ਤੋਂ ਵੱਖ ਕਰਦੀਆਂ ਹਨ: ਕੀ ਸਥਾਪਿਤ ਸਕ੍ਰਿਪਟ ਅਜੇ ਵੀ ਲਾਈਨ ਰੱਖਦੀ ਹੈ, /proc/sys ਕਿਵੇਂ ਮਾਊਂਟ ਹੈ, ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਟ੍ਰੈਫ਼ਿਕ ਅਸਲ ਵਿੱਚ ਕਿੱਥੇ ਜਾਂਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਨੂੰ ਉਸੇ ਕੰਟੇਨਰ ਨੇਮਸਪੇਸ ਵਿੱਚ ਜਾਂ ਜਿੱਥੇ ਚੇਤਾਵਨੀ ਦਿਖੀ ਉਸ ਹੋਸਟ 'ਤੇ ਚਲਾਓ, ਕਿਉਂਕਿ ਅਸੰਬੰਧਿਤ ਮਸ਼ੀਨ 'ਤੇ ਜਾਂਚ ਕਿਸੇ ਹੋਰ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦਿੰਦੀ ਹੈ।
grep -n 'ipv4/route/flush' /usr/share/vpnc-scripts/vpnc-script
findmnt -no OPTIONS /proc/sys
ip -4 route get 10.20.5.10grep ਦਾ ਜਵਾਬ ਦਿਖਣ ਨਾਲੋਂ ਕਮਜ਼ੋਰ ਹੈ, ਕਿਉਂਕਿ ਮਿਲਣਾ ਇਹ ਸਾਬਤ ਕਰਦਾ ਹੈ ਕਿ ਲਾਈਨ ਮੌਜੂਦ ਹੈ, ਇਹ ਨਹੀਂ ਕਿ ਉਹ ਬਿਨਾਂ ਰੱਖਿਆ ਦੇ ਚੱਲਦੀ ਹੈ; ਸੰਭਾਲੀ ਹੋਈ ਸਕ੍ਰਿਪਟ ਲਿਖਤ ਨੂੰ ਉਸ ਗਾਰਡ ਦੇ ਅੰਦਰ ਰੱਖ ਸਕਦੀ ਹੈ ਜੋ ਇਸਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ। findmnt -no OPTIONS /proc/sys ਮਾਊਂਟ ਨੂੰ ਸਿੱਧਾ ਤੈਅ ਕਰਦਾ ਹੈ, ਅਤੇ ਉਸ ਆਉਟਪੁੱਟ ਵਿੱਚ ro ਦਾ ਮਤਲਬ ਹੈ ਉਸ ਬਿੰਦੂ ਹੇਠਾਂ ਹਰ ਲਿਖਤ ਨਾਮਨਜ਼ੂਰ ਹੈ, ਸਕ੍ਰਿਪਟ ਭਾਵੇਂ ਕੁਝ ਵੀ ਕਰੇ। ਫਿਰ ਰੂਟ ਖੋਜ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਲੋੜੀਂਦਾ ਟਿਕਾਣਾ ਟਨਲ ਇੰਟਰਫ਼ੇਸ ਰਾਹੀਂ ਹੱਲ ਹੁੰਦਾ ਹੈ ਜਾਂ ਕੰਟੇਨਰ ਦੇ ਡਿਫ਼ਾਲਟ ਗੇਟਵੇ ਰਾਹੀਂ। ਡਿਫ਼ਾਲਟ ਗੇਟਵੇ ਚੁਣਨ ਵਾਲੀ ਖੋਜ ਦਾ ਮਤਲਬ ਹੈ ਟਨਲ ਉੱਪਰ ਆਇਆ ਅਤੇ ਉਸ ਵਿੱਚ ਕੁਝ ਰੂਟ ਨਹੀਂ ਹੁੰਦਾ, ਜੋ ਰਾਊਟਿੰਗ ਸਮੱਸਿਆ ਹੈ, ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਦੀ ਨਹੀਂ।
ਸੁਧਾਰ ਅਸਲ ਵਿੱਚ ਕਿੱਥੋਂ ਆਉਂਦਾ ਹੈ
ਸੰਭਾਲਿਆ ਹੋਇਆ ਸੁਧਾਰ ਕੰਟੇਨਰ ਫਲੈਗਾਂ ਵਿੱਚ ਨਹੀਂ, ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਰਹਿੰਦਾ ਹੈ। upstream vpnc-script ਨੇ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਦਾ ਹੈ ਇਹ ਬਦਲਿਆ ਹੈ, ਇਸ ਲਈ ਇਮੇਜ ਦੇ ਅੰਦਰਲੀ ਕਾਪੀ ਦੀ ਮੌਜੂਦਾ upstream ਨਾਲ ਤੁਲਨਾ ਕਰੋ ਅਤੇ ਜੋ ਪੈਕੇਜ ਜਾਂ ਇਮੇਜ ਬਿਲਡ ਇਹ ਦਿੰਦਾ ਹੈ ਉਸ ਰਾਹੀਂ ਅਪਡੇਟ ਕਰੋ। ਚੱਲ ਰਹੇ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ ਹੱਥੋਂ ਸੰਪਾਦਿਤ ਫਾਈਲ ਸਮੀਖਿਆਯੋਗ ਨਹੀਂ ਹੈ ਅਤੇ ਅਗਲੇ ਬਿਲਡ ਤੱਕ ਨਹੀਂ ਟਿਕੇਗੀ।
--privileged ਨੂੰ ਸਾਰੀਆਂ ਸਮਰੱਥਾਵਾਂ ਅਤੇ ਜੰਤਰਾਂ ਤੱਕ ਵਿਆਪਕ ਪਹੁੰਚ ਦੇਣ ਵਾਲਾ ਦੱਸਿਆ ਗਿਆ ਹੈ, ਜੋ ਕੁਝ ਨਾ ਬਦਲਣ ਵਾਲੇ ਸੁਨੇਹੇ ਲਈ ਵੱਡੀ ਛੋਟ ਹੈ, ਇਸ ਲਈ ਜੇ ਸੱਚਮੁੱਚ ਕੋਈ ਸਮਰੱਥਾ ਗੁੰਮ ਹੈ ਤਾਂ ਉਸਦਾ ਨਾਮ ਲਓ। ਅਪਡੇਟ ਤੋਂ ਬਾਅਦ ਰੂਟ ਖੋਜ ਦੁਹਰਾਓ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਟਨਲ ਵਰਤਣ ਦਿਓ, ਕਿਉਂਕਿ ਸ਼ਾਂਤ ਲੌਗ ਅਤੇ ਕੰਮ ਕਰਦਾ ਕਨੈਕਸ਼ਨ ਵੱਖਰੇ ਨਤੀਜੇ ਹਨ।