ZeroTier ਐਗਜ਼ਿਟ ਨੋਡ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ? ਰੂਟ, NAT ਅਤੇ ਕਲਾਇੰਟ ਜਾਂਚੋ
ਕਲਾਇੰਟ ਵਿੱਚ 0.0.0.0/0 ਰੂਟ ਹੋਣਾ ਐਗਜ਼ਿਟ ਨਹੀਂ ਹੈ। ਨੋਡ ਨੂੰ ਅੱਗੇ ਭੇਜਣਾ ਅਤੇ ਅਨੁਵਾਦ ਕਰਨਾ ਪਵੇਗਾ, ਨੈੱਟਵਰਕ ਨੂੰ ਰੂਟ ਦੀ ਘੋਸ਼ਣਾ ਕਰਨੀ ਪਵੇਗੀ, ਅਤੇ ਕਲਾਇੰਟ ਨੂੰ ਇਸਨੂੰ ਸਵੀਕਾਰ ਕਰਨਾ ਪਵੇਗਾ।
ਰੂਟ ਟੇਬਲ ZeroTier ਇੰਟਰਫ਼ੇਸ ਰਾਹੀਂ ਇੱਕ ਡਿਫ਼ਾਲਟ ਰੂਟ ਦਿਖਾਉਂਦੀ ਹੈ, ਨੈੱਟਵਰਕ ਆਨਲਾਈਨ ਦੱਸਦਾ ਹੈ, ਅਤੇ ਬ੍ਰਾਊਜ਼ਰ ਅਜੇ ਵੀ ਸਥਾਨਕ ISP ਪਤੇ ਤੋਂ ਬਾਹਰ ਜਾਂਦਾ ਹੈ। ਇਹ ਸੰਜੋਗ ਆਮ ਹੈ ਅਤੇ ਇਹ ਕਲਾਇੰਟ ਦੀ ਗ਼ਲਤੀ ਨਹੀਂ ਹੈ। ਡਿਫ਼ਾਲਟ ਰੂਟ ਸਿਰਫ਼ ਦੱਸਦਾ ਹੈ ਕਿ ਪੈਕਟ ਕਿੱਥੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ; ਦੂਜੇ ਸਿਰੇ ’ਤੇ ਕਿਸੇ ਨੂੰ ਉਹਨਾਂ ਨੂੰ ਅੱਗੇ ਭੇਜਣਾ ਅਤੇ ਅਨੁਵਾਦ ਕਰਨਾ ਪਵੇਗਾ। ਐਗਜ਼ਿਟ ਨੋਡ ਦੇ ਕੰਮ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤਿੰਨ ਵੱਖਰੇ ਹਿੱਸੇ ਸਹੀ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।
ਰੂਟ ਮੌਜੂਦ ਹੈ ਪਰ ਕੁਝ ਬਾਹਰ ਨਹੀਂ ਜਾਂਦਾ
ਪਹਿਲਾਂ ਕਲਾਇੰਟ ਦੀ ਰੂਟ ਟੇਬਲ ਜਾਂਚੋ। default via 10.147.20.5 dev zt0 ਵਰਗੀ ਲਾਈਨ ਸਾਬਤ ਕਰਦੀ ਹੈ ਕਿ ਰੂਟ ਸਥਾਪਿਤ ਹੋਇਆ, ਇਹ ਨਹੀਂ ਕਿ ਮੰਜ਼ਿਲ ਟ੍ਰੈਫ਼ਿਕ ਸਵੀਕਾਰ ਕਰੇਗੀ। ਅਗਲਾ ਹੌਪ ਉਹ ਮੈਂਬਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਇਸਨੂੰ ਅੱਗੇ ਭੇਜਣ ਲਈ ਤਿਆਰ ਅਤੇ ਸਮਰੱਥ ਹੋਵੇ।
ਜੇ ਉਹੀ ਬੇਨਤੀ ਅਜੇ ਵੀ ਭੌਤਿਕ ਇੰਟਰਫ਼ੇਸ ਰਾਹੀਂ ਬਾਹਰ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਕਲਾਇੰਟ ਨੇ ਰੂਟ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤਾ, ਜਾਂ ਸਥਾਨਕ ਡਿਫ਼ਾਲਟ ਤੋਂ ਹਾਰਨ ਵਾਲੇ ਮੈਟ੍ਰਿਕ ਨਾਲ ਸਥਾਪਿਤ ਕੀਤਾ। ਜੇ ਰੂਟ ਸਥਾਪਿਤ ਹੋਣ ਤੋਂ ਬਾਅਦ ਬੇਨਤੀ ਗ਼ਾਇਬ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਐਗਜ਼ਿਟ ਮੈਂਬਰ ਪੈਕਟ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਅੱਗੇ ਭੇਜਣ ਜਾਂ ਅਨੁਵਾਦ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੈ। ਭੌਤਿਕ ਡਿਫ਼ਾਲਟ ਰੱਖਣ ਵਾਲਾ ਕਲਾਇੰਟ ਐਗਜ਼ਿਟ ’ਤੇ ਇੱਕ ਵੀ ਪੈਕਟ ਨਹੀਂ ਭੇਜਦਾ।
ਇਹ ਫ਼ਰਕ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਕਿੱਥੇ ਕੰਮ ਕਰਨਾ ਹੈ। ਬਦਲਾਅ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਜਨਤਕ ਪਤੇ ਦੀ ਤੁਲਨਾ ਕਦੇ ਨਾ ਵਰਤੇ ਗਏ ਰੂਟ ਨੂੰ ਵਰਤੇ ਅਤੇ ਛੱਡ ਦਿੱਤੇ ਗਏ ਰੂਟ ਤੋਂ ਵੱਖ ਕਰਦੀ ਹੈ, ਅਤੇ ਪੂਰੀ ਕਨਫ਼ਿਗਰੇਸ਼ਨ ਦੀ ਸਮੀਖਿਆ ਦੀ ਥਾਂ ਇੱਕ ਹੀ ਕਮਾਂਡ ਮੰਗਦੀ ਹੈ। ਹੋਰ ਕੁਝ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਲਨਾ ਕਰੋ, ਤਾਂ ਜੋ ਦੋਵੇਂ ਨਤੀਜੇ ਇੱਕੋ ਸ਼ੁਰੂਆਤੀ ਹਾਲਤ ਤੋਂ ਆਉਣ।
ਤਿੰਨ ਹਿੱਸੇ ਜੋ ਸਾਰੇ ਸਹੀ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ
ਐਗਜ਼ਿਟ ਇੱਕ ਜ਼ੰਜੀਰ ਹੈ, ਅਤੇ ਸਭ ਤੋਂ ਕਮਜ਼ੋਰ ਕੜੀ ਲੱਛਣ ਤੈਅ ਕਰਦੀ ਹੈ। ਹੇਠਲਾ ਟੇਬਲ ਕੜੀਆਂ ਨੂੰ ਉਸ ਕ੍ਰਮ ਵਿੱਚ ਦਿੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਉਹ ਆਮ ਤੌਰ ’ਤੇ ਫੇਲ੍ਹ ਹੁੰਦੀਆਂ ਹਨ।
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
ਪਹਿਲੀ ਕਤਾਰ ਉਹ ਹੈ ਜੋ ਵਿਕਲਪ ਦਾ ਨਾਮ ਲੁਕਾਉਂਦਾ ਹੈ। ਮੈਂਬਰ ਉਦੋਂ ਹੀ ਐਗਜ਼ਿਟ ਬਣਦਾ ਹੈ ਜਦੋਂ ਉਸਦਾ ਕਰਨਲ ZeroTier ਇੰਟਰਫ਼ੇਸ ਅਤੇ ਇੰਟਰਨੈੱਟ ਵੱਲ ਵਾਲੇ ਇੰਟਰਫ਼ੇਸ ਵਿਚਕਾਰ ਪੈਕਟ ਅੱਗੇ ਭੇਜਦਾ ਹੈ, ਅਤੇ ਜਦੋਂ ਜਵਾਬ ਦਾ ਰਾਹ ਸੁਰੰਗ ਵਿੱਚ ਵਾਪਸ ਅਨੁਵਾਦ ਹੁੰਦਾ ਹੈ। ਉਸ ਫ਼ਾਰਵਰਡਿੰਗ ਤੋਂ ਬਿਨਾਂ ਮੈਂਬਰ ਸਾਥੀ ਹੈ, ਗੇਟਵੇ ਨਹੀਂ।
ਕੰਟਰੋਲਰ ਦੀ ਕਤਾਰ ਅਧਿਕਾਰ ਹੈ, ਕਨਫ਼ਿਗਰੇਸ਼ਨ ਨਹੀਂ। ਮੈਂਬਰ ਰਾਹੀਂ 0.0.0.0/0 ਦੀ ਘੋਸ਼ਣਾ ਹਰ ਕਲਾਇੰਟ ਨੂੰ ਦੱਸਦੀ ਹੈ ਕਿ ਐਗਜ਼ਿਟ ਕਿੱਥੇ ਹੈ; ਪਰ ਇਹ ਉਸ ਮੈਂਬਰ ਨੂੰ ਟ੍ਰੈਫ਼ਿਕ ਢੋਣ ਦੇ ਸਮਰੱਥ ਨਹੀਂ ਬਣਾਉਂਦੀ। ਇਹ ਇਹ ਵੀ ਨਹੀਂ ਜਾਂਚਦੀ ਕਿ ਮੈਂਬਰ ਕੋਲ ਇੰਟਰਨੈੱਟ ਤੱਕ ਕੰਮ ਕਰਨ ਵਾਲਾ ਰਾਹ ਹੈ। ZeroTier ਦਾ ਐਗਜ਼ਿਟ ਨੋਡ ਦਸਤਾਵੇਜ਼ ਨੋਡ, ਰੂਟ ਅਤੇ ਕਲਾਇੰਟ ਵਿਚਕਾਰ ਉਹੀ ਵੰਡ ਕਵਰ ਕਰਦਾ ਹੈ।
ਐਗਜ਼ਿਟ ਨੋਡ ਨੂੰ ਅੱਗੇ ਭੇਜਣ ਅਤੇ ਅਨੁਵਾਦ ਲਈ ਸੈੱਟ ਕਰੋ
IPv4 ਫ਼ਾਰਵਰਡਿੰਗ ਸਥਾਈ ਤੌਰ ’ਤੇ ਸਮਰੱਥ ਕਰੋ, ਫਿਰ WAN ਇੰਟਰਫ਼ੇਸ ਛੱਡਣ ਵਾਲੇ ਟ੍ਰੈਫ਼ਿਕ ਲਈ ਸਰੋਤ NAT ਸ਼ਾਮਲ ਕਰੋ। ਫ਼ਿਲਟਰ ਨਿਯਮਾਂ ਨੂੰ ਫ਼ਾਰਵਰਡ ਕੀਤੇ ਪ੍ਰਵਾਹ ਨੂੰ ਦੋਵੇਂ ਦਿਸ਼ਾਵਾਂ ਵਿੱਚ ਮਨਜ਼ੂਰੀ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ, ਕਿਉਂਕਿ ਫ਼ਾਰਵਰਡਿੰਗ ਅਤੇ ਅਨੁਵਾਦ ਮਨਜ਼ੂਰੀ ਤੋਂ ਵੱਖਰੇ ਹਨ:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTzt0 ਅਤੇ eth0 ਦੀ ਥਾਂ ਹੋਸਟ ’ਤੇ ਮੌਜੂਦ ਨਾਵਾਂ ਰੱਖੋ; ਉਦਾਹਰਨ ਇੰਟਰਫ਼ੇਸ ਲਈ ਸੰਭਾਲਿਆ ਨਿਯਮ ਅਸਲੀ ’ਤੇ ਪੈਕਟਾਂ ਦਾ ਪਿੱਛਾ ਨਹੀਂ ਕਰਦਾ। ਨਿਯਮਾਂ ਦਾ ਮਾਲਕ ਫ਼ਾਇਰਵਾਲ ਮੈਨੇਜਰ ਰਾਹੀਂ ਬਦਲਾਅ ਸਥਾਈ ਕਰੋ, ਕਿਉਂਕਿ ਇੰਟਰਐਕਟਿਵ ਸ਼ੈੱਲ ਵਿੱਚ ਦਿੱਤਾ ਆਦੇਸ਼ ਅਗਲੀ ਰੀਬੂਟ ਵਿੱਚ ਗ਼ਾਇਬ ਹੋ ਜਾਂਦਾ ਹੈ।
ਜੇ ਹੋਸਟ UFW ਜਾਂ firewalld ਵਰਗਾ ਫ਼ਾਇਰਵਾਲ ਮੈਨੇਜਰ ਚਲਾਉਂਦਾ ਹੈ, ਤਾਂ ਕੋਲ iptables ਲਾਈਨਾਂ ਢੇਰ ਕਰਨ ਦੀ ਥਾਂ ਉਸੇ ਮੈਨੇਜਰ ਰਾਹੀਂ ਨਿਯਮ ਸ਼ਾਮਲ ਕਰੋ। ਇੱਕੋ ਜ਼ੰਜੀਰਾਂ ਸੋਧਣ ਵਾਲੇ ਦੋ ਮਾਲਕ ਬੂਟ ਕ੍ਰਮ ’ਤੇ ਨਿਰਭਰ ਨੀਤੀ ਬਣਾਉਂਦੇ ਹਨ। ਜਦੋਂ ਮੈਨੇਜਰ ਆਪਣੀਆਂ ਜ਼ੰਜੀਰਾਂ ਬਣਾਉਂਦਾ ਹੈ ਤਾਂ ਕ੍ਰਮ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਮੈਨੇਜਰ ਮੁੜ ਲੋਡ ਕਰਨ ਤੋਂ ਬਾਅਦ ਕਲਾਇੰਟ ਤੋਂ ਟੈਸਟ ਕਰੋ, ਪਹਿਲਾਂ ਨਹੀਂ।
ਰੂਟ ਦੀ ਘੋਸ਼ਣਾ ਕਰੋ ਅਤੇ ਕਲਾਇੰਟ ’ਤੇ ਇਸਨੂੰ ਸਵੀਕਾਰ ਕਰੋ
ਨੈੱਟਵਰਕ ਕੰਟਰੋਲਰ ’ਤੇ 0.0.0.0/0 ਲਈ ਪ੍ਰਬੰਧਿਤ ਰੂਟ ਸ਼ਾਮਲ ਕਰੋ ਜਿਸਦਾ ਅਗਲਾ ਹੌਪ ਐਗਜ਼ਿਟ ਮੈਂਬਰ ਦਾ ZeroTier ਪਤਾ ਹੋਵੇ। ਫਿਰ ਜਿਸ ਮੈਂਬਰ ਨੂੰ ਇਹ ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ ਉਸ ’ਤੇ ਉਸ ਨੈੱਟਵਰਕ ਲਈ ਓਵਰਰਾਈਡ ਦੀ ਮਨਜ਼ੂਰੀ ਦਿਓ। ਮਨਜ਼ੂਰੀ ਸਥਾਨਕ ਹੈ: ਇਹ ਦੂਜੇ ਮੈਂਬਰਾਂ ਨੂੰ ਮੁੜ ਕਨਫ਼ਿਗਰ ਨਹੀਂ ਕਰਦੀ ਅਤੇ ਕੰਟਰੋਲਰ ਨਹੀਂ ਬਦਲਦੀ।
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1ਆਖਰੀ ਕਮਾਂਡ ਨੂੰ ZeroTier ਇੰਟਰਫ਼ੇਸ ਅਤੇ ਐਗਜ਼ਿਟ ਮੈਂਬਰ ਦਾ ਪਤਾ ਦੱਸਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਇਹ ਅਜੇ ਵੀ ਭੌਤਿਕ ਇੰਟਰਫ਼ੇਸ ਦੱਸਦੀ ਹੈ, ਤਾਂ ਰੂਟ ਗ਼ਾਇਬ ਹੈ ਜਾਂ ਮੁਕਾਬਲੇ ਵਾਲੇ ਡਿਫ਼ਾਲਟ ਦਾ ਮੈਟ੍ਰਿਕ ਬਿਹਤਰ ਹੈ।
ਸੈਟਿੰਗ ਨੂੰ ਸਿਰਫ਼ ਉਸ ਨੈੱਟਵਰਕ ਤੱਕ ਸੀਮਿਤ ਰੱਖੋ ਜਿਸਨੂੰ ਇਸਦੀ ਲੋੜ ਹੈ। ਡਿਫ਼ਾਲਟ ਰੂਟ ਦੀ ਸਵੀਕ੍ਰਿਤੀ ਨੂੰ ਵਿਸ਼ਵ ਪੱਧਰ ’ਤੇ ਸਮਰੱਥ ਕਰਨਾ, ਜਾਂ ਅਜਿਹੇ ਨੈੱਟਵਰਕ ’ਤੇ ਜਿਸਨੂੰ ਸਿਰਫ਼ ਨਿੱਜੀ ਸਬਨੈੱਟ ਦੇਣਾ ਹੈ, ਟ੍ਰੈਫ਼ਿਕ ਨੂੰ ਅਜਿਹੇ ਐਗਜ਼ਿਟ ਰਾਹੀਂ ਭੇਜਦਾ ਹੈ ਜੋ ਕਦੇ ਇਸ ਲਈ ਮਾਪਿਆ ਨਹੀਂ ਗਿਆ।
ਐਗਜ਼ਿਟ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ ਅਤੇ ਦੂਜੇ ਪਤਾ ਪਰਿਵਾਰ ਦੇਖੋ
ਸਰੋਤ ਦੱਸਣ ਵਾਲੀ ਸੇਵਾ ਤੋਂ ਜਨਤਕ ਪਤਾ ਮੰਗੋ, ਅਤੇ ਇਸਦੀ ਤੁਲਨਾ ਐਗਜ਼ਿਟ ਨੋਡ ਦੇ WAN ਪਤੇ ਨਾਲ ਕਰੋ। ਫਿਰ ਨਾਮ ਵਾਲੀ ਸਾਈਟ ਲੋਡ ਕਰੋ ਤਾਂ ਜੋ ਪੁਸ਼ਟੀ ਹੋਵੇ ਕਿ DNS ਅਜੇ ਵੀ ਹੱਲ ਕਰਦਾ ਹੈ, ਅਤੇ ਸਿਰਫ਼ ਬ੍ਰਾਊਜ਼ਰ ਨਹੀਂ ਸਗੋਂ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਐਪਲੀਕੇਸ਼ਨ ਵੀ ਜਾਂਚੋ।
ਡਿਊਲ-ਸਟੈਕ ਕਲਾਇੰਟ ਆਪਣਾ ਮੂਲ IPv6 ਰਾਹ ਵਰਤਦਾ ਰਹਿ ਸਕਦਾ ਹੈ ਜਦੋਂ ਕਿ IPv4 ZeroTier ਰਾਹੀਂ ਬਾਹਰ ਜਾਂਦਾ ਹੈ। ਜੇ ਟੀਚਾ ਸਾਰਾ ਟ੍ਰੈਫ਼ਿਕ ਲੁਕਾਉਣਾ ਜਾਂ ਨਿਯੰਤਰਿਤ ਕਰਨਾ ਹੈ, ਤਾਂ ਵੱਖਰਾ ::/0 ਰੂਟ ਅਤੇ ਐਗਜ਼ਿਟ ’ਤੇ IPv6 ਫ਼ਾਰਵਰਡਿੰਗ ਲੋੜੀਂਦਾ ਹੈ, ਅਤੇ IPv4 ਟੈਸਟ ਉਹਨਾਂ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਦੱਸਦਾ।
Linux ਦੀ ਉਲਟ-ਰਾਹ ਫ਼ਿਲਟਰਿੰਗ ਕਲਾਇੰਟ ’ਤੇ ਵੈਧ ਐਗਜ਼ਿਟ ਟ੍ਰੈਫ਼ਿਕ ਵੀ ਡਾ ਸਕਦੀ ਹੈ। ZeroTier ਭਾਗ ਲੈਣ ਵਾਲੇ ਮੈਂਬਰਾਂ ਲਈ rp_filter ਵਿਚਾਰ ਦਸਤਾਵੇਜ਼ ਕਰਦਾ ਹੈ; ਉਹ ਸੈਟਿੰਗ ਜਾਣ-ਬੁੱਝ ਕੇ ਅਤੇ ਸਿਰਫ਼ ਰੂਟ ਅਤੇ NAT ਦੀ ਪੁਸ਼ਟੀ ਤੋਂ ਬਾਅਦ ਬਦਲੋ, ਪਹਿਲੇ ਪ੍ਰਯੋਗ ਵਜੋਂ ਨਹੀਂ।
ਜੇ ਲੋੜ NAS ਜਾਂ ਇੱਕ ਦਫ਼ਤਰ ਸਬਨੈੱਟ ਤੱਕ ਪਹੁੰਚ ਹੈ, ਤਾਂ ਉਸ ਪ੍ਰੀਫ਼ਿਕਸ ਲਈ ਪ੍ਰਬੰਧਿਤ ਰੂਟ ਪੂਰੇ ਐਗਜ਼ਿਟ ਨਾਲੋਂ ਛੋਟਾ ਅਤੇ ਸੁਰੱਖਿਅਤ ਬਦਲਾਅ ਹੈ। ਸਾਰੀ ਬ੍ਰਾਊਜ਼ਿੰਗ ਕਿਸੇ ਹੋਰ ਡਿਵਾਈਸ ਰਾਹੀਂ ਭੇਜਣਾ ਇੱਕ ਨਿੱਜੀ ਸਰੋਤ ਤੱਕ ਪਹੁੰਚਣ ਨਾਲੋਂ ਵੱਖਰਾ ਫ਼ੈਸਲਾ ਹੈ, ਅਤੇ ਇਹ ਵੱਖਰੀ ਸਮੀਖਿਆ ਦਾ ਹੱਕਦਾਰ ਹੈ।