ਕੋਈ ਬ੍ਰਾਊਜ਼ਰ ਟਨਲ ਵਰਤੇ ਦੀ ਮੰਗ ਕਰਦਾ ਹੈ, ਅਤੇ ਜਵਾਬ ਮੰਜ਼ਿਲ ਪੋਰਟ 80 ਅਤੇ 443 ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਫਾਇਰਵਾਲ ਨਿਯਮ ਵਜੋਂ ਵਾਪਸ ਆਉਂਦਾ ਹੈ। ਇਹ ਸਟੀਕ ਲੱਗਦਾ ਹੈ ਅਤੇ ਹੈ ਨਹੀਂ। ਪੋਰਟ ਮਿਲਾਨ ਪੈਕਟਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੇ ਢੁਆਈ ਹੈਡਰ ਅਨੁਸਾਰ ਚੁਣਦਾ ਹੈ, ਇਸ ਗੱਲ ਅਨੁਸਾਰ ਨਹੀਂ ਕਿ ਕਿਹੜੇ ਪ੍ਰੋਗਰਾਮ ਨੇ ਸਾਕਟ ਖੋਲ੍ਹਿਆ, ਅਤੇ ਆਧੁਨਿਕ ਬ੍ਰਾਊਜ਼ਿੰਗ TCP ਉੱਤੇ ਉਨ੍ਹਾਂ ਦੋ ਪੋਰਟਾਂ ਤੱਕ ਸੀਮਿਤ ਨਹੀਂ। ਨਿਯਮ ਤੁਹਾਡੇ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੇ ਕੁਝ ਟ੍ਰੈਫਿਕ ਨੂੰ ਖੁੰਝਾ ਦੇਵੇਗਾ ਅਤੇ ਉਹ ਟ੍ਰੈਫਿਕ ਫੜੇਗਾ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਕਦੇ ਛੂਹਣਾ ਨਹੀਂ ਚਾਹੁੰਦੇ ਸੀ। ਇਹ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਤੈਅ ਕਰੋ ਕਿ ਤਿੰਨ ਵੱਖਰੀਆਂ ਹੱਦਾਂ ਵਿੱਚੋਂ ਤੁਹਾਨੂੰ ਅਸਲ ਵਿੱਚ ਕਿਹੜੀ ਚਾਹੀਦੀ ਹੈ।

ਨਿਯਮ ਢੁਆਈ ਸ਼੍ਰੇਣੀ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ, ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਨਹੀਂ

Linux ਵਿੱਚ, ਮੰਜ਼ਿਲ-ਪੋਰਟ ਮਿਲਾਨ TCP ਹੈਡਰ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ ਅਤੇ ਉਸ ਤੋਂ ਉੱਪਰ ਕੁਝ ਨਹੀਂ। ਉਹ ਪੈਕਟ ਨਿਸ਼ਾਨਿਤ ਕਰਕੇ ਨੀਤੀ-ਮਾਰਗ ਰਾਹੀਂ ਭੇਜਣਾ ਠੀਕ ਦਸਤਾਵੇਜ਼ੀ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਨ੍ਹਾਂ ਤੰਤਰਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਨਹੀਂ ਜਾਣਦਾ ਕਿ ਪੇਲੋਡ ਦਾ ਕੀ ਅਰਥ ਹੈ ਜਾਂ ਕਿਹੜੀ ਪ੍ਰਕਿਰਿਆ ਨੇ ਇਸ ਨੂੰ ਭੇਜਿਆ। ਨਿਸ਼ਾਨ ਪੈਕਟ ਨਾਲ ਜੁੜੀ ਸੰਖਿਆ ਹੈ, ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਜੁੜੀ ਪਛਾਣ ਨਹੀਂ।

nft add rule inet mangle output tcp dport { 80, 443 } meta mark set 0x1
ip rule add fwmark 0x1 table 100
ip route add default dev wg0 table 100

ਤੁਰੰਤ ਦੋ ਨਤੀਜੇ ਆਉਂਦੇ ਹਨ। TCP 443 ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਵਾਲਾ ਸਾਫਟਵੇਅਰ ਅੱਪਡੇਟਰ ਬ੍ਰਾਊਜ਼ਰ ਵਰਗਾ ਵਿਵਹਾਰ ਪਾਉਂਦਾ ਹੈ, ਜੋ ਠੀਕ ਹੋ ਸਕਦਾ ਹੈ ਜਾਂ ਅਗਲੇ ਅੱਪਡੇਟ ਚੱਕਰ ਦੀ ਉਡੀਕ ਕਰਦੀ ਰੁਕਾਵਟ ਹੋ ਸਕਦੀ ਹੈ। ਅਤੇ ਜਾਣਬੁੱਝ ਕੇ ਕਿਸੇ ਹੋਰ ਪੋਰਟ ਉੱਤੇ, ਮੰਨ ਲਓ 8443, ਪ੍ਰਕਾਸ਼ਿਤ ਵੈੱਬ ਸੇਵਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਨਿਯਮ ਤੋਂ ਬਾਹਰ ਰਹਿ ਜਾਂਦੀ ਹੈ, ਜਦਕਿ ਉਹ ਅਜੇ ਵੀ ਉਹੀ ਵੈੱਬ ਟ੍ਰੈਫਿਕ ਹੈ ਜਿਸ ਦੀ ਵਰਤੋਂਕਾਰ ਨੂੰ ਚਿੰਤਾ ਸੀ।

ਸੰਖਿਆਵਾਂ ਵੈਧ ਚੋਣਕਾਰ ਹਨ ਜਦੋਂ ਲੋੜ ਅਸਲ ਵਿੱਚ ਉਨ੍ਹਾਂ ਪੋਰਟਾਂ ਦੀ ਹੋਵੇ। ਉਹ ਕਲਪਨਾ ਬਣ ਜਾਂਦੀਆਂ ਹਨ ਜਦੋਂ ਟਿਕਟ ਵਿੱਚ «ਬ੍ਰਾਊਜ਼ਰ» ਲਿਖਿਆ ਹੋਵੇ ਅਤੇ ਨਿਯਮ-ਸਮੂਹ ਵਿੱਚ ਪੋਰਟ-ਸੀਮਾ ਲਾਗੂ ਕੀਤੀ ਜਾਵੇ। ਇਹ ਖੱਪਾ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਦੀ ਬਾਰੀਕੀ ਨਹੀਂ। ਇਹ ਉਸ ਨਿਯਮ ਵਿਚਕਾਰ ਫ਼ਰਕ ਹੈ ਜਿਸ ਦਾ ਤੁਸੀਂ ਸਮੀਖਿਆ ਵਿੱਚ ਬਚਾਅ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਉਸ ਵਿਚਕਾਰ ਜਿਸ ਨੂੰ ਕੋਈ ਜਾਂਚ ਨਹੀਂ ਸਕਦਾ।

HTTP/3 ਤੁਹਾਡਾ TCP ਨਿਯਮ ਚੁੱਪਚਾਪ ਛੱਡ ਦਿੰਦਾ ਹੈ

HTTP/3 QUIC ਉੱਤੇ ਚੱਲਦਾ ਹੈ, ਅਤੇ QUIC UDP ਵਿੱਚ ਢੋਇਆ ਜਾਂਦਾ ਹੈ। ਸਿਰਫ਼ TCP ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਨਿਯਮ ਇਸ ਨੂੰ ਦੇਖ ਨਹੀਂ ਸਕਦਾ, ਇਸ ਲਈ ਜੋ ਬ੍ਰਾਊਜ਼ਰ ਤੁਹਾਡੇ ਟੈਸਟ ਪੰਨੇ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ, ਉਹੀ ਬਾਅਦ ਦੀ ਬੇਨਤੀ UDP ਉੱਤੇ ਭੇਜ ਕੇ ਟਨਲ ਨੂੰ ਬਚਾ ਸਕਦਾ ਹੈ, ਕਿਸੇ ਦੇ ਵੀ ਸੈਟਿੰਗ ਬਦਲੇ ਬਿਨਾਂ। RFC 9114 HTTP/3 ਨੂੰ QUIC-ਅਧਾਰਿਤ ਪ੍ਰੋਟੋਕਾਲ ਦੱਸਦਾ ਹੈ, ਅਤੇ ਆਮ ਤੈਨਾਤੀ ਵਿੱਚ QUIC ਡਿਫ਼ਾਲਟ ਪੋਰਟ 443 ਵਾਲਾ UDP ਵਰਤਦਾ ਹੈ।

ਕੋਈ ਦਿੱਤਾ ਬ੍ਰਾਊਜ਼ਰ HTTP/3 ਅਜ਼ਮਾਏਗਾ ਜਾਂ ਨਹੀਂ, ਇਹ ਉਸ ਦੀ ਸੰਰਚਨਾ, ਸਾਈਟ ਅਤੇ ਪਿਛਲੀ ਕੋਸ਼ਿਸ਼ ਸਫਲ ਹੋਣ ’ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਇਸ ਕਰਕੇ ਇਸ ਬਾਰੇ ਯਾਦ ਤੋਂ ਤਰਕ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੈ। ਇਸ ਦੀ ਥਾਂ ਸਾਧਨ ਨੂੰ ਪੁੱਛੋ:

curl --http3 -sS -o /dev/null -w '%{http_version} %{time_total}\n' https://example.com
ss -tunp | grep -E ':443\b'

curl ਲਾਈਨ ਸਹਿਮਤ ਹੋਈ ਆਵਿਰਤੀ ਛਾਪਦੀ ਹੈ, ਇਸ ਲਈ 3 ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ ਕਿ UDP ਮਾਰਗ ਵਰਤਿਆ ਗਿਆ। ਫਿਰ ਸਾਕਟ ਸੂਚੀ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਉਹ ਕਨੈਕਸ਼ਨ ਟਨਲ ਇੰਟਰਫ਼ੇਸ ਨਾਲ ਬੱਝਾ ਹੈ ਜਾਂ ਭੌਤਿਕ ਨਾਲ। ਜੇ ਤੁਹਾਡੇ curl ਬਿਲਡ ਵਿੱਚ HTTP/3 ਨਹੀਂ, ਤਾਂ ਫ਼ਲੈਗ ਚੁੱਪਚਾਪ ਪਿੱਛੇ ਹਟਣ ਦੀ ਥਾਂ ਉੱਚੀ ਅਵਾਜ਼ ਵਿੱਚ ਫੇਲ੍ਹ ਹੁੰਦਾ ਹੈ, ਜੋ ਉਸ ਦੀ ਆਪਣੀ ਛੋਟੀ ਦਇਆ ਹੈ।

DNS ਇੱਕ ਵੱਖਰਾ ਫ਼ੈਸਲਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਲੈਣਾ ਹੈ

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

ਇਹ ਸਪੱਸ਼ਟ ਤੌਰ ’ਤੇ ਤੈਅ ਕਰੋ। ਜੇ ਅੰਦਰੂਨੀ ਨਾਮ ਟਨਲ ਰਾਹੀਂ ਹੱਲ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ, ਤਾਂ ਰਿਜ਼ੋਲਵਰ ਉਸ ਦੇ ਅੰਦਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਨਿਯਮ-ਸਮੂਹ ਨੂੰ ਉਸ ਰਿਜ਼ੋਲਵਰ ਵੱਲ DNS ਦੀ ਆਗਿਆ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ ਅਤੇ ਹੋਰ ਸਵਾਲ ਬਾਹਰ ਰੱਖਣੇ ਚਾਹੀਦੇ ਹਨ। ਜੇ ਬ੍ਰਾਊਜ਼ਰ ਜਨਤਕ ਪ੍ਰਦਾਤਾ ਵੱਲ DNS over HTTPS ਵਰਤਦਾ ਹੈ, ਤਾਂ ਸਵਾਲ ਤੁਹਾਡੇ ਰਿਜ਼ੋਲਵਰ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬਚਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਪੋਰਟ ਨਿਯਮ ਮਦਦ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਚੋਣ ਨੂੰ ਰਾਊਟਿੰਗ ਨਿਯਮ ਵਾਲੇ ਉਸੇ ਬਦਲਾਅ-ਰਿਕਾਰਡ ਵਿੱਚ ਲਿਖੋ, ਕਿਉਂਕਿ ਅਗਲੀ ਅਸਫਲਤਾ ਡੀਬੱਗ ਕਰਨ ਵਾਲਾ ਦੋਵੇਂ ਇਕੱਠੇ ਪੜ੍ਹਦਾ ਹੈ।

ਫਿਰ ਪੰਨੇ ਨਾਲ ਨਹੀਂ, ਰਿਜ਼ੋਲਵਰ ਨਾਲ ਪੁਸ਼ਟੀ ਕਰੋ:

resolvectl query intranet.example.internal
resolvectl status | grep -A3 'Current DNS Server'

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

ਤਿੰਨ ਹੱਦਾਂ, ਤਿੰਨ ਵੱਖਰੇ ਤੰਤਰ

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

What you actually wantMechanism that fitsWhat it does not cover
These transport ports use this exitFirewall mark plus policy routeApplications, HTTP/3 over UDP, DNS
This browsing session stays separateApplication-aware VPN, or a separate network namespace plus a proxyOther applications in the same session
Only these private sites are reachableDestination-based routes with private DNSPublic sites on the same address family

ਵੱਖਰਾ ਬ੍ਰਾਊਜ਼ਰ ਪਰੋਫ਼ਾਈਲ ਵਿਚਕਾਰਲੀ ਕਤਾਰ ਦਾ ਜਾਲ ਹੈ। ਇਹ ਕੂਕੀਜ਼ ਅਤੇ ਇਤਿਹਾਸ ਵੱਖ ਕਰਦਾ ਹੈ, ਅਤੇ ਹੋਸਟ ਦੀ ਰਾਊਟਿੰਗ ਸਾਰਣੀ ਵਿੱਚ ਕੁਝ ਨਹੀਂ ਬਦਲਦਾ, ਇਸ ਲਈ ਦੋਵੇਂ ਪਰੋਫ਼ਾਈਲ ਇੱਕੋ ਰਾਹ ਲੈਂਦੇ ਹਨ। ਅਲੱਗ-ਥਲੱਗ ਕਰਨ ਲਈ ਕਰਨਲ ਵੱਲੋਂ ਲਾਗੂ ਕੀਤੀ ਕੋਈ ਚੀਜ਼ ਚਾਹੀਦੀ ਹੈ, ਭਾਵ ਨਾਮ-ਸਪੇਸ, ਕੰਟੇਨਰ ਜਾਂ ਆਪਣਾ ਟਨਲ ਇੰਟਰਫ਼ੇਸ ਰੱਖਣ ਵਾਲੀ ਐਪਲੀਕੇਸ਼ਨ।

ਕੋਈ ਵੀ ਕਤਾਰ ਲਾਗੂ ਹੋਵੇ, ਲਿਖੋ ਕਿ ਟਨਲ ਡਿੱਗਣ ’ਤੇ ਕੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇੰਟਰਫ਼ੇਸ ਨਾਲ ਗਾਇਬ ਹੋਣ ਵਾਲਾ ਨਿਸ਼ਾਨ-ਅਧਾਰਿਤ ਮਾਰਗ ਆਮ ਤੌਰ ’ਤੇ ਭੌਤਿਕ ਡਿਫ਼ਾਲਟ ਮਾਰਗ ’ਤੇ ਵਾਪਸ ਆਉਂਦਾ ਹੈ, ਜੋ fail-open ਵਿਵਹਾਰ ਹੈ। ਇਹ ਬ੍ਰਾਊਜ਼ਿੰਗ ਲਈ ਸਵੀਕਾਰਯੋਗ ਅਤੇ ਬਾਕੀ ਸਭ ਲਈ ਅਸਵੀਕਾਰਯੋਗ ਹੋ ਸਕਦਾ ਹੈ, ਅਤੇ ਇਹ ਫ਼ੈਸਲਾ ਹੈ, ਲਾਗੂ ਕਰਨ ਦੀ ਵਿਸਥਾਰ ਨਹੀਂ।

ਤੁਸੀਂ ਢਕਣ ਦਾ ਦਾਅਵਾ ਕਰਦੇ ਹੋ ਉਹ ਪ੍ਰਵਾਹ ਜਾਂਚੋ

ਸਵੀਕ੍ਰਿਤੀ ਜਾਂਚ ਨੇ ਤੁਹਾਡੇ ਲਿਖੀ ਹੱਦ ਦੀ ਪਾਲਣਾ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ, ਸੁਵਿਧਾਜਨਕ ਪੋਰਟ ਨੰਬਰਾਂ ਦੀ ਨਹੀਂ। ਟਨਲ ਰਾਹੀਂ ਜਾਣਾ ਲਾਜ਼ਮੀ ਹੈ ਅਜਿਹਾ ਇੱਕ ਪ੍ਰਵਾਹ, ਨਾ ਜਾਣਾ ਚਾਹੀਦਾ ਦੂਜਾ, ਅਤੇ ਤੁਸੀਂ ਨਾ ਸੋਚਿਆ ਹੋਇਆ ਢੁਆਈ ਵਰਤਣ ਵਾਲਾ ਤੀਜਾ ਚੁਣੋ:

ip route get 203.0.113.40
curl -sS -o /dev/null -w 'v4 %{http_version} %{remote_ip}\n' https://example.com
nft list ruleset | grep -A2 'dport'

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

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

ਸੰਬੰਧਿਤ ਲੇਖ