ਇਸ ਐਪ ਨੂੰ ਬਾਹਰ ਰੱਖਣ ਦਾ ਕੋਈ ਸਵਿੱਚ ਨਹੀਂ: ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਉਸ ਦਾ ਆਪਣਾ ਸਰੋਤ ਦਿਓ
ਰਾਊਟਿੰਗ ਪਤੇ ਮਿਲਾਉਂਦੀ ਹੈ, ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੇ ਨਾਮ ਨਹੀਂ। ਬਾਹਰ ਰੱਖੇ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਉਸ ਦਾ ਆਪਣਾ ਸਰੋਤ ਤੇ ਟੇਬਲ ਦਿਓ, ਜਾਂ ਫ਼ੈਸਲਾ ਰਾਊਟਰ ਕੋਲ ਭੇਜੋ, ਜਿੱਥੇ ਇਹ ਇਮਾਨਦਾਰ ਹੈ।
ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਆਮ ਕਨੈਕਸ਼ਨ ਵਰਤੇ ਜਦੋਂ ਕਿ ਬਾਕੀ ਸਭ ਟਨਲ ’ਤੇ ਰਹੇ, ਅਤੇ ਕਲਾਇੰਟ ਕੋਲ ਇਸ ਲਈ ਕੋਈ ਸਵਿੱਚ ਨਹੀਂ। ਕੋਈ ਲੁਕਿਆ ਮੀਨੂੰ ਵੀ ਲੱਭਣ ਨੂੰ ਨਹੀਂ। ਰੂਟ ਪੈਕਟ ਦੇ ਅੰਦਰਲੇ ਖੇਤਰਾਂ ਵਿੱਚੋਂ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਪੈਕਟ ਪਤੇ ਤੇ ਪੋਰਟ ਲੈ ਕੇ ਚੱਲਦਾ ਹੈ, ਉਸ ਨੂੰ ਬਣਾਉਣ ਵਾਲੀ ਪ੍ਰਕਿਰਿਆ ਦੀ ਪਛਾਣ ਨਹੀਂ, ਇਸ ਲਈ ਬਾਹਰ ਰੱਖਣਾ ਉਨ੍ਹਾਂ ਖੇਤਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਵਿੱਚ ਹੀ ਦੱਸਣਾ ਪਵੇਗਾ। ਇੱਕ ਵਾਰ ਪੈਕਟ ਦਾ ਪਿੱਛਾ ਕਰੋ ਤੇ ਉਪਲਬਧ ਚੋਣਾਂ ਰਹੱਸਮਈ ਰਹਿਣਾ ਬੰਦ ਕਰ ਦਿੰਦੀਆਂ ਹਨ।
ਕਲਾਇੰਟ ਇਹ ਕਿਉਂ ਨਹੀਂ ਦੇ ਸਕਦਾ
ਮੰਤਵ ਰਾਊਟਿੰਗ ਮੰਤਵ ਪਤੇ ਦੀ ਤੁਲਨਾ ਪ੍ਰੀਫ਼ਿਕਸ ਨਾਲ ਕਰਦੀ ਹੈ ਤੇ ਸਭ ਤੋਂ ਲੰਮਾ ਮੇਲ ਰੱਖਦੀ ਹੈ। ਉਸ ਪਲ ਹਰ ਪੈਕਟ ਇੱਕੋ ਜਿਹਾ ਦਿਸਦਾ ਹੈ, ਭਾਵੇਂ ਉਸ ਨੂੰ ਕਿਸੇ ਨੇ ਵੀ ਬਣਾਇਆ ਹੋਵੇ। ਸਰੋਤ ਨੀਤੀ ਰਾਊਟਿੰਗ ਤੁਲਨਾ ਨੂੰ ਸਰੋਤ ਪਤੇ ਤੱਕ ਫੈਲਾਉਂਦੀ ਹੈ, ਅਤੇ ਇਹੀ ਉਹ ਹੁੱਕ ਹੈ ਜੋ ਹਰ ਵਿਹਾਰਕ ਹੱਲ ਵਰਤਦਾ ਹੈ: ਸਰੋਤ ਬਦਲੋ, ਤੇ ਦੂਜਾ ਟੇਬਲ ਯੋਗ ਹੋ ਜਾਂਦਾ ਹੈ।
ਪੋਰਟ ਮਦਦ ਨਹੀਂ ਕਰਦੇ। ਪੋਰਟ ਦੇ ਆਧਾਰ ’ਤੇ ਬਾਹਰ ਰੱਖਣ ਦਾ ਮੁਲਾਂਕਣ ਮੰਤਵ ਖੋਜ ਤੋਂ ਪਹਿਲਾਂ ਕਰਨਾ ਪੈਂਦਾ, ਅਤੇ ਉਸ ਫ਼ੈਸਲੇ ਵਿੱਚ ਪੋਰਟ ਦਾ ਕੋਈ ਹਿੱਸਾ ਨਹੀਂ। ਪੋਰਟ-ਆਧਾਰਿਤ ਬਾਹਰ ਰੱਖਣ ਵਜੋਂ ਜੋ ਵੀ ਪ੍ਰਚਾਰਿਆ ਜਾਂਦਾ ਹੈ, ਉਹ ਅਸਲ ਵਿੱਚ ਕਿਸੇ ਹੋਰ ਖੇਤਰ ਰਾਹੀਂ ਬਾਹਰ ਰੱਖਦਾ ਹੈ ਤੇ ਇਸ ਨੂੰ ਢਿੱਲਾ ਵਰਣਨ ਕਰਦਾ ਹੈ।
ਸੱਚੀ ਐਪ-ਵਾਰ ਰਾਊਟਿੰਗ ਉੱਥੇ ਹੀ ਹੈ ਜਿੱਥੇ ਪਲੇਟਫ਼ਾਰਮ ਨੇ ਇਸ ਲਈ ਤੰਤਰ ਜੋੜਿਆ ਹੈ, ਜਿਵੇਂ Windows ’ਤੇ ਫ਼ਿਲਟਰ ਕਾਲਆਊਟ ਜਾਂ Android ’ਤੇ VPN ਸੇਵਾ ਬਾਈਂਡਿੰਗ। ਡੈਸਕਟਾਪ OpenVPN ਇੰਸਟੈਂਸ ਇਸ ਵਿੱਚੋਂ ਕੁਝ ਨਹੀਂ ਲਿਆਉਂਦਾ, ਅਤੇ ਕੋਈ ਕਾਨਫ਼ਿਗਰੇਸ਼ਨ ਫ਼ਲੈਗ ਇਹ ਨਹੀਂ ਘੜਦਾ।
Linux: ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਨਿਸ਼ਾਨ ਲਗਾਓ, ਫਿਰ ਨਿਸ਼ਾਨ ਨੂੰ ਰਾਊਟ ਕਰੋ
ਸਭ ਤੋਂ ਸਾਫ਼ ਤਰੀਕਾ ਫ਼ੈਸਲੇ ਨੂੰ ਉਸ ਪ੍ਰਕਿਰਿਆ ਨਾਲ ਬੰਨ੍ਹਦਾ ਹੈ ਜੋ ਸਾਕਟ ਦੀ ਮਾਲਕ ਹੈ। owner ਮੇਲ OUTPUT ਲੜੀ ਵਿੱਚ ਸਥਾਨਕ ਤੌਰ ’ਤੇ ਪੈਦਾ ਹੋਏ ਟ੍ਰੈਫ਼ਿਕ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਉੱਥੇ ਲਗਾਇਆ ਨਿਸ਼ਾਨ ਵੱਖਰਾ ਟੇਬਲ ਚੁਣ ਸਕਦਾ ਹੈ:
iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 0x1
ip rule add fwmark 0x1 table 200
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.0 table 200
ip route add default via 192.168.1.1 dev eth0 table 200
ਵਰਤੋਂਕਾਰ 1001 ਦੇ ਪੈਕਟ ਫਿਰ ਟੇਬਲ 200 ਨੂੰ ਪੁੱਛਦੇ ਹਨ ਤੇ ਆਮ ਗੇਟਵੇ ਰਾਹੀਂ ਬਾਹਰ ਜਾਂਦੇ ਹਨ, ਜਦੋਂ ਕਿ ਮੁੱਖ ਟੇਬਲ ਬਾਕੀ ਸਭ ਟਨਲ ਵਿੱਚ ਭੇਜਦਾ ਰਹਿੰਦਾ ਹੈ। owner ਮੇਲ ਸਿਰਫ਼ ਸਥਾਨਕ ਤੌਰ ’ਤੇ ਪੈਦਾ ਹੋਏ ਪੈਕਟਾਂ ’ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ, ਜੋ ਇੱਥੇ ਮਹੱਤਵਪੂਰਨ ਟ੍ਰੈਫ਼ਿਕ ਹੈ, ਅਤੇ ਇਹ ਕਿਸੇ ਹੋਰ ਹੋਸਟ ਲਈ ਅੱਗੇ ਭੇਜੇ ਪੈਕਟਾਂ ਦਾ ਵਰਗੀਕਰਨ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇਰਾਦੇ ਨਾਲ ਨਹੀਂ, ਸੰਦਾਂ ਨਾਲ ਜਾਂਚੋ: ss -tnp ਸਥਾਪਿਤ ਕਨੈਕਸ਼ਨਾਂ ਦਾ ਸਥਾਨਕ ਪਤਾ ਤੇ ਮਾਲਕ ਪ੍ਰਕਿਰਿਆ ਦਿਖਾਉਂਦਾ ਹੈ, ਅਤੇ ip route get 1.1.1.1 mark 0x1 ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਨਿਸ਼ਾਨ ਕਿਹੜਾ ਟੇਬਲ ਚੁਣਦਾ ਹੈ।
ਨੈੱਟਵਰਕ ਨਾਮ-ਥਾਂ ਖ਼ੁਦਮੁਖ਼ਤਾਰ ਪ੍ਰੋਗਰਾਮ ਲਈ ਵਧੇਰੇ ਮਜ਼ਬੂਤ ਜਵਾਬ ਹੈ, ਕਿਉਂਕਿ ਇਸ ਦੇ ਅੰਦਰ ਬਣਿਆ ਹਰ ਸਾਕਟ ਬਣਾਵਟ ਕਰਕੇ ਹੀ ਇਸ ਨਾਲ ਬੱਝਾ ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਸਹਾਇਕ ਪ੍ਰਕਿਰਿਆਵਾਂ ਤੇ ਸੰਤਾਨ ਕਨੈਕਸ਼ਨ ਬਿਨਾਂ ਕਿਸੇ ਵਰਗੀਕਰਨ ਦੇ ਵਿਵਹਾਰ ਵਿਰਾਸਤ ਵਿੱਚ ਲੈਂਦੇ ਹਨ। ਕੀਮਤ ਪਲੰਬਿੰਗ ਹੈ: ਇੱਕ veth ਜੋੜਾ, ਹਰ ਸਿਰੇ ’ਤੇ ਇੱਕ ਪਤਾ, ਅਤੇ ਨਾਮ-ਥਾਂ ਦੇ ਅੰਦਰ ਹੋਸਟ ਵੱਲ ਵਾਪਸ ਸੰਕੇਤ ਕਰਨ ਵਾਲਾ ਡਿਫ਼ਾਲਟ ਰੂਟ।
ip netns add novpn
ip link add veth-host type veth peer name veth-ns
ip link set veth-ns netns novpn
ip addr add 10.200.0.1/24 dev veth-host
ip netns exec novpn ip addr add 10.200.0.2/24 dev veth-ns
ip netns exec novpn ip route add default via 10.200.0.1
Windows: ਮੰਤਵ ਹੀ ਫ਼ੈਸਲਾ ਕਰਦਾ ਹੈ
Windows ਮੰਤਵ ਤੋਂ ਬਾਹਰ ਜਾਣ ਵਾਲਾ ਇੰਟਰਫ਼ੇਸ ਚੁਣਦਾ ਹੈ, ਇਸ ਲਈ ਵੱਖਰਾ ਰਾਹ ਚਾਹੁਣ ਵਾਲੇ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਉਸ ਚੋਣ ਤੋਂ ਪਹਿਲਾਂ ਸਟੈਕ ਜੋ ਪੁੱਛਦਾ ਹੈ ਉਹ ਕੁਝ ਬਦਲਣਾ ਪਵੇਗਾ। ForceBindIP ਪਹਿਲਾ ਅੱਧ ਸੰਭਾਲਦਾ ਹੈ: ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ ਕਿ ਉਸ ਦੇ ਸਾਕਟ ਪਹਿਲਾਂ ਹੀ ਤੁਹਾਡੇ ਦੱਸੇ ਸਥਾਨਕ ਪਤੇ ਨਾਲ ਬੱਝੇ ਹੁੰਦੇ ਹਨ। ਸਿਰਫ਼ ਇਸ ਨਾਲ ਇਹ ਨਹੀਂ ਬਦਲਦਾ ਕਿ ਪੈਕਟ ਕਿਸ ਇੰਟਰਫ਼ੇਸ ਰਾਹੀਂ ਬਾਹਰ ਜਾਂਦਾ ਹੈ, ਕਿਉਂਕਿ ਰੂਟ ਹਾਲੇ ਵੀ ਮੰਤਵ ਹੀ ਚੁਣਦਾ ਹੈ। ਜਿਸ ਦਾ ਡਿਫ਼ਾਲਟ ਰੂਟ ਟਨਲ ਵੱਲ ਸੰਕੇਤ ਕਰਦਾ ਹੈ ਅਜਿਹੇ ਲੈਪਟਾਪ ’ਤੇ ਸਰੋਤ ਬੰਨ੍ਹੋ, ਪੈਕਟ ਫਿਰ ਵੀ ਟਨਲ ਵਿੱਚ ਜਾਂਦਾ ਹੈ।
ਲੱਛਣ ਦੀ ਇੱਕ ਵਾਰ ਪਛਾਣ ਹੋਣ ’ਤੇ ਪੜ੍ਹਨਯੋਗ ਸ਼ਕਲ ਹੁੰਦੀ ਹੈ। ਇਹ ਉਸ LAN ਪਤੇ ਲਈ ਲਾਗੂ ਹੁੰਦਾ ਹੈ ਜਿੱਥੇ ਚੁਣਿਆ ਇੰਟਰਫ਼ੇਸ ਸਿੱਧਾ ਪਹੁੰਚਦਾ ਹੈ, ਅਤੇ ਇੰਟਰਨੈੱਟ ’ਤੇ ਹਰ ਉਸ ਚੀਜ਼ ਲਈ ਫੇਲ੍ਹ ਹੁੰਦਾ ਹੈ ਜਿਸ ਦਾ ਰੂਟ ਟਨਲ ਵੱਲ ਸੰਕੇਤ ਕਰਦਾ ਹੈ। ਇਹ ਕੰਮ ਕਰਦਾ ਵੀ ਲੱਗਦਾ ਹੈ ਜਦ ਤੱਕ ਪ੍ਰੋਗਰਾਮ ਕੰਮ ਕਿਸੇ ਸਹਾਇਕ ਨੂੰ ਨਹੀਂ ਸੌਂਪਦਾ, ਕਿਉਂਕਿ ਆਪਣਾ ਸਾਕਟ ਖੋਲ੍ਹਣ ਵਾਲੇ ਸਹਾਇਕ ਨੂੰ ਬੰਧਨ ਬਾਰੇ ਕਦੇ ਨਹੀਂ ਦੱਸਿਆ ਗਿਆ।
ਜਦੋਂ ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਗ਼ਲਤ ਇਕਾਈ ਹੋਵੇ ਤਾਂ ਫ਼ੈਸਲਾ ਹਟਾਓ
ਜੇ ਅਸਲੀ ਲੋੜ ਪ੍ਰੋਗਰਾਮ ਨਹੀਂ ਸਗੋਂ ਡਿਵਾਈਸ ਹੈ, ਤਾਂ ਇਸ ਨੂੰ ਆਪਣੇ SSID ਜਾਂ VLAN ’ਤੇ ਰੱਖੋ ਤੇ ਰਾਊਟਰ ਨੂੰ ਫ਼ੈਸਲਾ ਕਰਨ ਦਿਓ: ਉਹ ਸਰੋਤ ਆਮ ਰਾਹ ਲੈਂਦਾ ਹੈ ਜਦੋਂ ਕਿ ਹੋਰ ਸਰੋਤ ਟਨਲ ਵਰਤਦੇ ਹਨ। ਸਮਰਪਿਤ ਗੇਟਵੇ ਮਸ਼ੀਨ ਦੂਜਾ ਇਮਾਨਦਾਰ ਡਿਜ਼ਾਈਨ ਹੈ: ਇਹ VPN ਰੱਖਦੀ ਹੈ ਤੇ ਸਿਰਫ਼ ਉਹ ਮੰਤਵ ਲੈਂਦੀ ਹੈ ਜੋ ਰਾਊਟਰ ਇਸ ਨੂੰ ਭੇਜਦਾ ਹੈ। VLAN ’ਤੇ ਨੀਤੀ ਡਿਵਾਈਸ ਵੱਲੋਂ ਖੋਲ੍ਹੇ ਹਰ ਪ੍ਰਵਾਹ ਨੂੰ ਕਵਰ ਕਰਦੀ ਹੈ, ਉਨ੍ਹਾਂ ਸਹਾਇਕ ਪ੍ਰਕਿਰਿਆਵਾਂ ਸਮੇਤ ਜਿਨ੍ਹਾਂ Windows ਤਰੀਕਾ ਤੋੜਿਆ। ਬਦਲਾ ਦਾਇਰਾ ਹੈ: ਉਸ ਡਿਵਾਈਸ ’ਤੇ ਦੋ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਹੁਣ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਨਹੀਂ ਵੇਖਿਆ ਜਾ ਸਕਦਾ।
ਦੋਵੇਂ ਇੱਕ ਵਾਕ ਵਿੱਚ ਦੱਸੇ ਜਾ ਸਕਣ ਵਾਲੇ ਦਾਇਰੇ ਵਾਲੀਆਂ ਸਰੋਤ ਜਾਂ ਮੰਤਵ ਨੀਤੀਆਂ ਹਨ। ਕੋਈ ਵੀ ਐਪ-ਵਾਰ ਨਹੀਂ, ਅਤੇ ਜੋ ਡਿਜ਼ਾਈਨ ਆਪਣੇ ਆਪ ਨੂੰ ਐਪ-ਵਾਰ ਕਹਿੰਦਾ ਹੈ ਉਹ ਪਹਿਲੀ ਵਾਰ ਉਦੋਂ ਫੇਲ੍ਹ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਪ੍ਰੋਗਰਾਮ ਆਪਣਾ ਕੰਮ ਦੂਜੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੌਂਪਦਾ ਹੈ।