ਟਨਲ ਸਿਰਫ਼ ਤਦ ਕੰਮ ਕਰਦੀ ਦਿਖਦੀ ਹੈ ਜਦੋਂ ਸਰਵਰ ਪਹਿਲਾਂ ਕੁਝ ਭੇਜਦਾ ਹੈ। ਕਲਾਇੰਟ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ ਕੁਝ ਨਹੀਂ ਹੁੰਦਾ, ਕੁਝ ਸਕਿੰਟ ਉਡੀਕੋ, ਫਿਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਅਤੇ ਇਹ ਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ। ਆਮ ਨਿਦਾਨ ਟੁੱਟਿਆ ਹੋਇਆ NAT ਹੈ, ਅਤੇ ਆਮ ਨਿਦਾਨ ਗਲਤ ਹੈ। ਜੋ ਬਦਲਿਆ ਉਹ ਇਹ ਹੈ ਕਿ ਇੱਕ ਪੀਅਰ ਨੇ ਸਿੱਖ ਲਿਆ ਕਿ ਦੂਜਾ ਕਿੱਥੇ ਰਹਿੰਦਾ ਹੈ।

ਐਂਡਪੌਇੰਟ ਦੀ ਜਾਣਕਾਰੀ, ਪਹੁੰਚ ਨਹੀਂ

WireGuard ਪੀਅਰ ਹੱਥ ਮਿਲਾਉਣਾ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰੇਗਾ ਜਦੋਂ ਤੱਕ ਇਹ ਨਹੀਂ ਜਾਣਦਾ ਕਿ ਇਸਨੂੰ ਕਿੱਥੇ ਭੇਜਣਾ ਹੈ। ਕਾਨਫ਼ਿਗਰੇਸ਼ਨ ਇਸਨੂੰ ਪਤੇ ਅਤੇ ਪੋਰਟ ਦੇ ਐਂਡਪੌਇੰਟ ਵਜੋਂ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਚੱਲ ਰਹੀ ਸਥਿਤੀ ਉਸ ਐਂਡਪੌਇੰਟ ਦਾ ਪਤਾ ਰੱਖਦੀ ਹੈ ਜਿਸ ’ਤੇ ਇਹ ਹੁਣ ਭਰੋਸਾ ਕਰਦਾ ਹੈ।

wg show ਉਸ ਤਸਵੀਰ ਦੇ ਦੋਵੇਂ ਪਾਸੇ ਛਾਪਦਾ ਹੈ, ਅਤੇ ਆਉਟਪੁੱਟ ਵਿੱਚ ਐਂਡਪੌਇੰਟ ਤੋਂ ਬਿਨਾਂ ਪੀਅਰ ਕੁਝ ਵੀ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਭਾਵੇਂ ਇਸਦੀ ਜਨਤਕ ਕੁੰਜੀ ਅਤੇ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਪ੍ਰੀਫ਼ਿਕਸ ਕਿੰਨੇ ਵੀ ਸਹੀ ਹੋਣ। ਕੋਈ ਵੀ ਨਿਯਮ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਕਲਾਇੰਟ ਦੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਦੀ ਸਰਵਰ ਨਾਲ ਤੁਲਨਾ ਕਰੋ, ਕਿਉਂਕਿ ਦੋਵੇਂ ਅਕਸਰ ਇਸ ਗੱਲ ’ਤੇ ਸਹਿਮਤ ਨਹੀਂ ਹੁੰਦੇ ਕਿ ਕਿਸਨੂੰ ਕੀ ਪਤਾ ਹੈ।

ਪੀਅਰ ਐਂਡਪੌਇੰਟ ਕਿਵੇਂ ਸਿੱਖਦਾ ਹੈ

WireGuard ਜਾਣਬੁੱਝ ਕੇ ਚੁੱਪ ਹੈ। ਜਦੋਂ ਸਹੀ ਢੰਗ ਨਾਲ ਪ੍ਰਮਾਣਿਤ ਪੈਕੇਟ ਅਜਿਹੇ ਪਤੇ ਤੋਂ ਆਉਂਦਾ ਹੈ ਜਿਸਦੀ ਪੀਅਰ ਨੂੰ ਉਮੀਦ ਨਹੀਂ ਸੀ, ਤਾਂ ਲਾਗੂਕਰਨ ਉਸ ਪੀਅਰ ਦਾ ਐਂਡਪੌਇੰਟ ਨਵੇਂ ਸਰੋਤ ’ਤੇ ਅੱਪਡੇਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਨੈੱਟਵਰਕ ਬਦਲਣ ਵਾਲੇ ਲੈਪਟਾਪ ’ਤੇ ਰੋਮਿੰਗ ਇਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦੀ ਹੈ। ਉਹ ਵਿਵਹਾਰ ਦਿਸ਼ਾ-ਨਿਰਭਰਤਾ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ: ਜੇ ਸਰਵਰ ਪਹਿਲਾਂ ਭੇਜਦਾ ਹੈ ਅਤੇ ਉਸਦਾ ਪੈਕੇਟ ਕਲਾਇੰਟ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ, ਤਾਂ ਕਲਾਇੰਟ ਸਰਵਰ ਦਾ ਮੌਜੂਦਾ ਪਤਾ ਸਿੱਖ ਲੈਂਦਾ ਹੈ ਅਤੇ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ। ਉਦੋਂ ਤੱਕ ਉਸ ਕੋਲ ਭੇਜਣ ਦੀ ਜਗ੍ਹਾ ਨਹੀਂ ਹੈ। ਇਹ ਵਿਧੀ ਪਹਿਲੀ ਵਰਤੋਂ ਵੇਲੇ ਭਰੋਸੇ ਦੀ ਸ਼ਾਰਟਕੱਟ ਨਹੀਂ, ਪ੍ਰਮਾਣਿਤ ਰੋਮਿੰਗ ਹੈ, ਕਿਉਂਕਿ ਐਂਡਪੌਇੰਟ ਖਿਸਕਣ ਤੋਂ ਪਹਿਲਾਂ ਪੈਕੇਟ ਦਾ ਵੈਧ ਹੋਣਾ ਜ਼ਰੂਰੀ ਸੀ।

wg ਲਈ ਸਾਧਨ ਦਸਤਾਵੇਜ਼ ਉਸ ਅੱਪਡੇਟ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਜੇ ਤੁਸੀਂ ਇਸਦੇ ਆਲੇ-ਦੁਆਲੇ ਡਿਜ਼ਾਈਨ ਕਰਨਾ ਹੈ ਤਾਂ ਇੱਕ ਵਾਰ ਪੜ੍ਹਨਾ ਯੋਗ ਹੈ।

ਸਥਿਤੀ ਵਾਲਾ ਅਨੁਵਾਦ ਆਪਣੀ ਦਿਸ਼ਾ ਜੋੜਦਾ ਹੈ

ਜਿੱਥੇ UDP ਅਨੁਵਾਦ ਕਰਨ ਵਾਲੇ ਗੇਟਵੇ ਵਿੱਚੋਂ ਲੰਘਦਾ ਹੈ, ਗੇਟਵੇ ਉਸ ਪਹਿਲੇ ਪੈਕੇਟ ਲਈ ਸਥਿਤੀ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਉਹ ਵੇਖਦਾ ਹੈ। RFC 4787 ਉਸ ਵਿਵਹਾਰ ਅਤੇ ਉਹਨਾਂ ਸਮਾਂ-ਸੀਮਾਵਾਂ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ ਜੋ ਅਖੀਰ ਮੈਪਿੰਗ ਹਟਾ ਦਿੰਦੀਆਂ ਹਨ। ਨਿਸ਼ਕਿਰਿਆ ਮੈਪਿੰਗ ਦੀ ਮਿਆਦ ਪੁੱਗ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਦੂਰ ਵਾਲੇ ਪਾਸਿਓਂ ਆਉਣ ਵਾਲਾ ਪੈਕੇਟ ਫਿਰ ਮੇਜ਼ਬਾਨ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਗੇਟਵੇ ਵੱਲੋਂ ਸੁੱਟ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਸਾਰੀ ਸਵੇਰ ਕੰਮ ਕਰਨ ਵਾਲੀ ਟਨਲ ਦੁਪਹਿਰ ਤੋਂ ਬਾਅਦ ਜਵਾਬ ਦੇਣਾ ਬੰਦ ਕਰ ਦਿੰਦੀ ਹੈ, ਬਿਲਕੁਲ ਇਸੇ ਕਾਰਨ।

ਇਹ ਦੂਜੀ ਅਤੇ ਸੁਤੰਤਰ ਵਿਧੀ ਹੈ ਜੋ ਉਹੀ ਦਿਸ਼ਾਤਮਕ ਲੱਛਣ ਪੈਦਾ ਕਰਦੀ ਹੈ। ਐਂਡਪੌਇੰਟ ਦੀ ਜਾਣਕਾਰੀ ਅਤੇ ਅਨੁਵਾਦ ਸਥਿਤੀ ਦੋਵੇਂ ਸਹੀ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ, ਅਤੇ ਇੱਕ ਨੂੰ ਠੀਕ ਕਰਨ ਨਾਲ ਦੂਜੀ ਠੀਕ ਨਹੀਂ ਹੁੰਦੀ।

ਉਹ ਦਿਸ਼ਾ ਸੰਰਚਿਤ ਕਰੋ ਜੋ ਤੁਸੀਂ ਅਸਲ ਵਿੱਚ ਚਾਹੁੰਦੇ ਹੋ

ਜਿਸ ਕਲਾਇੰਟ ਨੂੰ ਕਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ, ਉਸਦੇ ਪੀਅਰ ਭਾਗ ਵਿੱਚ ਸਰਵਰ ਦਾ ਐਂਡਪੌਇੰਟ ਰੱਖੋ ਅਤੇ ਉੱਥੇ ਹੀ ਰਹਿਣ ਦਿਓ। ਸਰਵਰ ਦੇ ਪਹਿਲਾਂ ਭੇਜਣ ’ਤੇ ਭਰੋਸਾ ਕਰਨਾ ਟਰੈਫ਼ਿਕ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਉਸ ਸੰਜੋਗ ’ਤੇ ਭਰੋਸਾ ਕਰਨਾ ਹੈ ਜੋ ਸ਼ਾਂਤ ਨੈੱਟਵਰਕ ਵਿੱਚ ਬਦਲ ਜਾਵੇਗਾ। ਕਾਨਫ਼ਿਗਰੇਸ਼ਨ ਨੂੰ ਇੱਛਤ ਦਿਸ਼ਾ ਦੱਸਣੀ ਚਾਹੀਦੀ ਹੈ, ਉਸਨੂੰ ਲੱਭਣਾ ਨਹੀਂ ਚਾਹੀਦਾ।

ਅਨੁਵਾਦ ਪਿੱਛੇ ਰਹਿਣ ਵਾਲੇ ਅਤੇ ਪਹੁੰਚਯੋਗ ਰਹਿਣ ਲਈ ਜ਼ਰੂਰੀ ਪੀਅਰ ਲਈ, ਉਸ ਪਾਸੇ ਲਗਾਤਾਰ keepalive ਸਮਰੱਥ ਕਰੋ। ਹਰ 25 ਸਕਿੰਟ ਬਾਅਦ keepalive ਆਮ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਹੈ, ਅਤੇ ਇਸਦਾ ਮਕਸਦ ਟਨਲ ਦੀ ਜਾਂਚ ਨਹੀਂ ਸਗੋਂ ਮੈਪਿੰਗ ਖੁੱਲ੍ਹੀ ਰੱਖਣਾ ਹੈ। ਇਸਨੂੰ ਚੁੱਕਣ ਲਈ ਇੱਕ ਪਾਸਾ ਚੁਣੋ, ਕਿਉਂਕਿ ਦੋਵੇਂ ਪਾਸੇ ਸਮਰੱਥ ਕਰਨ ਨਾਲ ਨਤੀਜਾ ਸੁਧਾਰੇ ਬਿਨਾਂ ਟਰੈਫ਼ਿਕ ਅਤੇ ਲੌਗ ਦਾ ਸ਼ੋਰ ਦੁੱਗਣਾ ਹੋ ਜਾਂਦਾ ਹੈ।

ਟ੍ਰਿਗਰ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਦੀ ਸਥਿਤੀ ਦੀ ਤੁਲਨਾ ਕਰੋ

ਜਿਸ ਪਲ ਇਹ ਅਸਫਲ ਹੁੰਦਾ ਹੈ, ਦੋਵੇਂ ਦ੍ਰਿਸ਼ ਕੈਪਚਰ ਕਰੋ, ਫਿਰ ਸਰਵਰ ਦੇ ਭੇਜਣ ਤੋਂ ਬਾਅਦ ਦੁਬਾਰਾ। ਪਹਿਲਾ ਕਮਾਂਡ ਐਂਡਪੌਇੰਟ ਅਤੇ ਹੱਥ ਮਿਲਾਉਣ ਦੀ ਉਮਰ ਦਿਖਾਉਂਦਾ ਹੈ। ਦੂਜਾ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਪੋਰਟ ਲਈ ਅਨੁਵਾਦ ਐਂਟਰੀ ਮੌਜੂਦ ਹੈ ਜਾਂ ਨਹੀਂ। ਕੈਪਚਰ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਿਹੜੀ ਦਿਸ਼ਾ ਅਸਲ ਵਿੱਚ ਤਾਰ ਵਿੱਚੋਂ ਲੰਘੀ, ਅਤੇ ਰੂਟ ਜਾਂਚ ਪੁਸ਼ਟੀ ਕਰਦੀ ਹੈ ਕਿ ਕਲਾਇੰਟ ਉਹ ਟਰੈਫ਼ਿਕ ਬਿਲਕੁਲ ਕਿਤੇ ਹੋਰ ਨਹੀਂ ਭੇਜ ਰਿਹਾ।

wg show
conntrack -L -p udp 2>/dev/null | grep 51820
tcpdump -ni any -c 20 'udp port 51820'
ip route get 198.51.100.7

ਐਂਡਪੌਇੰਟ ਕਾਲਮ ਅਤੇ ਅਨੁਵਾਦ ਐਂਟਰੀ ਇਕੱਠੇ ਲਿਖੋ। ਬਿਨਾਂ ਐਂਡਪੌਇੰਟ ਵਾਲਾ ਪੀਅਰ ਅਤੇ ਬਿਨਾਂ ਮੈਪਿੰਗ ਵਾਲਾ ਗੇਟਵੇ ਦੋ ਵੱਖਰੀਆਂ ਖਰਾਬੀਆਂ ਹਨ। ਇਹਨਾਂ ਵਿੱਚੋਂ ਸਿਰਫ਼ ਇੱਕ ਹੀ keepalive ਨਾਲ ਠੀਕ ਹੁੰਦੀ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ