nftables OpenVPN ਦੇ ਕਲਾਇੰਟਾਂ ਵਿਚਕਾਰ ਟ੍ਰੈਫਿਕ ਕਿਉਂ ਨਹੀਂ ਦੇਖ ਸਕਦਾ
ਪੀਅਰਾਂ ਵਿਚਕਾਰ ਟ੍ਰੈਫਿਕ VPN ਪ੍ਰਕਿਰਿਆ ਦੇ ਅੰਦਰ ਹੀ ਪਹੁੰਚਾਇਆ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈ ਫਾਰਵਰਡ ਕਾਊਂਟਰ ਕਦੇ ਨਹੀਂ ਹਿੱਲਦੇ। ਇਸ ਨੂੰ ਗਿਣਨ ਲਈ ਕਰਨਲ ਮਾਰਗ ਅਤੇ ਪ੍ਰਕਿਰਿਆ ਮਾਰਗ ਵਿਚੋਂ ਇੱਕ ਚੁਣਨਾ ਪੈਂਦਾ ਹੈ।
ਇੱਕੋ ਸਰਵਰ ਉੱਤੇ ਦੋ ਕਲਾਇੰਟ ਫਾਇਲਾਂ ਦਾ ਆਦਾਨ-ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ, ਟ੍ਰਾਂਸਫਰ ਸਫਲ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਟਨਲ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਨ ਵਾਲਾ ਹਰ ਫਾਰਵਰਡ ਨਿਯਮ ਜ਼ੀਰੋ ਪੈਕੇਟ ਦੱਸਦਾ ਹੈ। ਨਿਯਮ ਟੁੱਟੇ ਨਹੀਂ ਹਨ ਅਤੇ ਚੇਨ ਗਲਤ ਥਾਂ ਉੱਤੇ ਨਹੀਂ ਹੈ। ਪੀਅਰ-ਟੂ-ਪੀਅਰ ਫਾਰਵਰਡਿੰਗ ਚਾਲੂ ਹੋਣ ’ਤੇ ਪੈਕੇਟ ਸਰਵਰ ਪ੍ਰਕਿਰਿਆ ਦੇ ਅੰਦਰ ਹੀ ਪਹੁੰਚਾਇਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਹੋਸਟ ਸਟੈਕ ਕਦੇ ਰਾਊਟਰ ਨਹੀਂ ਬਣਦਾ, ਇਸ ਲਈ ਕਰਨਲ ਫਾਇਰਵਾਲ ਕੋਲ ਗਿਣਨ ਲਈ ਕੁਝ ਨਹੀਂ ਬਚਦਾ। ਇਸ ਵੰਡ ਨੂੰ ਸਮਝਣਾ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਸ਼ਾਰਟਕਟ ਰੱਖਦੇ ਹੋ ਜਾਂ ਕਰਨਲ ਰਾਹੀਂ ਮਾਰਗ ਦੁਬਾਰਾ ਬਣਾਉਂਦੇ ਹੋ।
ਸਰਵਰ ਵਿਚੋਂ ਇੱਕ ਪੈਕੇਟ ਦਾ ਪਿੱਛਾ ਕਰੋ
ਰਾਊਟ ਕੀਤੇ ਟਨਲ ਵਿੱਚ ਡੈਮਨ ਹਰ ਕਲਾਇੰਟ ਦਾ ਡਿਕ੍ਰਿਪਟ ਕੀਤਾ ਪੈਕੇਟ ਟਨਲ ਡਿਵਾਈਸ ਨੂੰ ਦਿੰਦਾ ਹੈ। ਉੱਥੋਂ ਹੋਸਟ ਇਸ ਨੂੰ ਰਾਊਟ ਕਰਦਾ ਹੈ, ਫਾਰਵਰਡ ਹੁੱਕ ਚੱਲਦਾ ਹੈ, ਅਤੇ ਟਨਲ ਡਿਵਾਈਸ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਨਿਯਮ ਟ੍ਰੈਫਿਕ ਗਿਣ ਸਕਦਾ ਹੈ ਜਾਂ ਸੁੱਟ ਸਕਦਾ ਹੈ। ਇਹੀ ਉਹ ਮਾਰਗ ਹੈ ਜੋ ਬਹੁਤੇ ਫਾਇਰਵਾਲ ਉਦਾਹਰਨ ਮੰਨਦੇ ਹਨ।
| Forwarding path | Who decides | What the host firewall sees |
|---|---|---|
| Kernel routing between clients | Host routing table and forward rules | Every inner packet, with interface names |
| Peer forwarding inside the server process | The VPN daemon's own peer table | Only the outer encrypted transport |
ਸ਼ਾਰਟਕਟ ਹੋਸਟ ਨੂੰ ਵਿਚਕਾਰੋਂ ਹਟਾ ਦਿੰਦਾ ਹੈ। ਇੱਕ ਸੈਸ਼ਨ ਦਾ ਡਿਕ੍ਰਿਪਟ ਕੀਤਾ ਪੈਕੇਟ ਡੈਮਨ ਦੇ ਅੰਦਰ ਹੀ ਦੂਜੇ ਸੈਸ਼ਨ ਨੂੰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਅੰਦਰਲਾ ਪੈਕੇਟ ਕਦੇ ਟਨਲ ਡਿਵਾਈਸ ਉੱਤੇ ਬਾਹਰ ਨਹੀਂ ਜਾਂਦਾ ਅਤੇ ਨਾ ਹੀ ਹੋਸਟ ਇਸ ਨੂੰ ਰਾਊਟ ਕਰਦਾ ਹੈ। ਐਨਕੈਪਸੂਲੇਟਡ ਟ੍ਰੈਫਿਕ ਫਿਰ ਵੀ ਭੌਤਿਕ ਇੰਟਰਫੇਸ ਲੰਘਦਾ ਹੈ, ਇਸ ਲਈ ਬਾਹਰੀ ਕੈਪਚਰ ਰੁੱਝਿਆ ਦਿਸਦਾ ਹੈ ਜਦਕਿ ਅੰਦਰਲੇ ਨਿਯਮ ਚੁੱਪ ਰਹਿੰਦੇ ਹਨ। ਟਨਲ ਡਿਵਾਈਸ ਉੱਤੇ ਲਿਆ ਕੈਪਚਰ ਕੁਝ ਵੀ ਨਹੀਂ ਦਿਖਾਉਂਦਾ, ਜੋ ਉੱਥੇ ਟ੍ਰਾਂਸਫਰ ਦੇਖਣ ਦੀ ਉਮੀਦ ਰੱਖਣ ਵਾਲੇ ਹਰ ਵਿਅਕਤੀ ਨੂੰ ਹੈਰਾਨ ਕਰਦਾ ਹੈ। ਇਹੀ ਅਸਮਾਨਤਾ ਡੈਮਨ ਤੋਂ ਬਾਹਰੋਂ ਸ਼ਾਰਟਕਟ ਪਛਾਣਨ ਦਾ ਸਭ ਤੋਂ ਤੇਜ਼ ਤਰੀਕਾ ਹੈ।
ਕਿਹੜਾ ਮਾਰਗ ਚੱਲਿਆ, ਇਹ ਤੈਅ ਕਰਨ ਵਾਲੀ ਕਾਊਂਟਰ ਪਰਖ
ਜਿਹੜਾ ਨਿਯਮ ਲਾਗੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਉਸ ਉੱਤੇ ਕਾਊਂਟਰ ਲਗਾਓ, ਜਿਨ੍ਹਾਂ ਦੋ ਕਲਾਇੰਟਾਂ ਵਿਚਕਾਰ ਉਹ ਨਿਯਮ ਰੋਕਣਾ ਚਾਹੀਦਾ ਹੈ ਉਨ੍ਹਾਂ ਵਿਚਕਾਰ ਟ੍ਰਾਂਸਫਰ ਚਲਾਓ, ਅਤੇ ਫਿਰ ਕਾਊਂਟਰ ਪੜ੍ਹੋ।
sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward
ਜੇ ਟ੍ਰਾਂਸਫਰ ਸਫਲ ਹੋਵੇ ਅਤੇ ਕਾਊਂਟਰ ਜ਼ੀਰੋ ਉੱਤੇ ਹੀ ਰਹੇ, ਤਾਂ ਕਰਨਲ ਨੇ ਉਹ ਪੈਕੇਟ ਕਦੇ ਸੰਭਾਲੇ ਹੀ ਨਹੀਂ, ਅਤੇ ਨਿਯਮ ਕਿੰਨਾ ਵੀ ਸੋਧੋ ਇਹ ਨਹੀਂ ਬਦਲੇਗਾ। ਉਹੀ ਪਰਖ ਸਰਵਰ ਉੱਤੇ ਹੀ ਕਿਸੇ ਸੇਵਾ ਵਿਰੁੱਧ ਦੁਹਰਾਓ, ਕਿਉਂਕਿ ਉਹ ਵਹਾਅ ਹੋਸਟ ਸਟੈਕ ਵਿਚੋਂ ਲੰਘਦਾ ਹੈ ਅਤੇ ਉਸ ਦਾ ਕਾਊਂਟਰ ਹਿੱਲਦਾ ਹੈ। ਦੋਵੇਂ ਨਤੀਜਿਆਂ ਦੀ ਤੁਲਨਾ ਹੀ ਜਵਾਬ ਦਿੰਦੀ ਹੈ।
ਦੋ ਗੱਲਾਂ ਗਲਤ ਪੜ੍ਹਤ ਰੋਕਦੀਆਂ ਹਨ। ਚੇਨ ਲੇਬਲ ਵਿੱਚ ਲਿਖਿਆ ਇੰਟਰਫੇਸ ਨਾਮ ਆਪਣੇ ਆਪ ਕੁਝ ਫਿਲਟਰ ਨਹੀਂ ਕਰਦਾ, ਕਿਉਂਕਿ ਮੇਲ ਨਿਯਮਾਂ ਦੇ ਅੰਦਰਲੇ ਇੰਟਰਫੇਸ ਖੇਤਰਾਂ ਉੱਤੇ ਹੁੰਦਾ ਹੈ। ਅਤੇ ਬ੍ਰਿਜ ਕੀਤੀ ਤਹਿ-2 ਬਣਤਰ ਫਿਰ ਵੱਖਰਾ ਵਿਵਹਾਰ ਕਰਦੀ ਹੈ: ਉੱਥੇ ਕਲਾਇੰਟ ਇੱਕੋ ਪ੍ਰਸਾਰਨ ਡੋਮੇਨ ਸਾਂਝਾ ਕਰਦੇ ਹਨ, ਇਸ ਲਈ ਪੀਅਰ ਖੋਜ ਉਮੀਦਵਾਰ ਹੈ, ਰਾਊਟਿੰਗ ਦੋਸ਼ ਨਹੀਂ।
ਸਵਿੱਚ ਪਹੁੰਚ ਸੂਚੀ ਨਹੀਂ ਹੈ
ਇਹ ਉਹ ਹਿੱਸਾ ਹੈ ਜੋ ਅੱਧਾ ਦਿਨ ਖਾਂਦਾ ਹੈ। ਪੀਅਰ ਫਾਰਵਰਡਿੰਗ ਇੱਕ ਹੀ ਚਾਲੂ-ਬੰਦ ਸੈਟਿੰਗ ਹੈ, ਅਤੇ ਜਦ ਤੱਕ ਇਹ ਚਾਲੂ ਹੈ ਡੈਮਨ ਹੀ ਇੱਕੋ-ਇੱਕ ਫਾਰਵਰਡਿੰਗ ਬਿੰਦੂ ਹੈ। ਹੋਸਟ ਫਾਇਰਵਾਲ ਇਹ ਨਹੀਂ ਦੱਸ ਸਕਦਾ ਕਿ ਕੌਣ ਕਿਸ ਤੱਕ ਪਹੁੰਚ ਸਕਦਾ ਹੈ, ਅਤੇ ਪ੍ਰਤੀ-ਕਲਾਇੰਟ ਫਾਇਲਾਂ ਸਵਿੱਚ ਨੂੰ ਨੀਤੀ ਮੈਟ੍ਰਿਕਸ ਨਹੀਂ ਬਣਾਉਂਦੀਆਂ।
ਜੇ ਤੁਹਾਨੂੰ ਪ੍ਰਤੀ-ਪੀਅਰ ਨਿਯਮ ਚਾਹੀਦੇ ਹਨ, ਤਾਂ ਚੋਣ ਸ਼ਾਰਟਕਟ ਛੱਡਣ ਅਤੇ ਨਿਯੰਤਰਣ ਵਜੋਂ ਹੋਸਟ ਫਾਇਰਵਾਲ ਛੱਡਣ ਵਿਚਕਾਰ ਹੈ। ਇਸ ਨੂੰ ਬੰਦ ਕਰਨ ਨਾਲ ਕਰਨਲ ਫਾਰਵਰਡਿੰਗ ਵਾਪਸ ਆਉਂਦੀ ਹੈ, ਜਿਸ ਲਈ ਸਰਵਰ ਉੱਤੇ IP ਫਾਰਵਰਡਿੰਗ ਚਾਲੂ ਅਤੇ ਤੁਹਾਡੇ ਚਾਹੇ ਵਹਾਅ ਲਈ ਸਪਸ਼ਟ ਨਿਯਮ ਚਾਹੀਦੇ ਹਨ। ਇਸ ਨੂੰ ਚਾਲੂ ਰੱਖਣ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਨੀਤੀ ਡੈਮਨ ਦੀ ਸੰਰਚਨਾ ਵਿੱਚ ਰਹਿੰਦੀ ਹੈ, ਜੋ ਵਿਵਹਾਰ ਵਿੱਚ ਸਾਰੇ ਪੀਅਰ ਜਾਂ ਕੋਈ ਪੀਅਰ ਨਹੀਂ।
ਆਪਣੇ ਪਤਾ ਪੂਲ ਅਤੇ ਪੋਰਟ ਵਾਲੀਆਂ ਵੱਖਰੀਆਂ ਸਰਵਰ ਪ੍ਰਕਿਰਿਆਵਾਂ ਕੰਮ ਲੱਗਣ ਵਾਲਾ ਮੱਧ ਮਾਰਗ ਹਨ। ਹਰ ਪ੍ਰਕਿਰਿਆ ਠੀਕ ਇੱਕ ਪਹੁੰਚ ਫੈਸਲਾ ਰੱਖਦੀ ਹੈ, ਇਸ ਲਈ ਦੋ ਸਮੂਹ ਨੀਤੀ ਮੈਟ੍ਰਿਕਸ ਤੋਂ ਬਿਨਾਂ ਵੱਖਰੇ ਨਿਯਮ ਰੱਖ ਸਕਦੇ ਹਨ। ਹੋਸਟ ਲੋੜ ਪੈਣ ’ਤੇ ਪੂਲਾਂ ਵਿਚਕਾਰ ਰਾਊਟ ਕਰ ਸਕਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਫਾਇਰਵਾਲ ਉਹ ਵਹਾਅ ਦੇਖਦਾ ਹੈ ਕਿਉਂਕਿ ਉਹ ਹੋਸਟ ਲੰਘਦੇ ਹਨ। ਕੀਮਤ ਵਾਧੂ ਪੋਰਟ, ਵਾਧੂ ਸਰਟੀਫਿਕੇਟ ਅਤੇ ਹਰ ਸਮੂਹ ਲਈ ਇੱਕ ਪ੍ਰੋਫਾਈਲ ਹੈ।
ਫਾਰਵਰਡਿੰਗ ਬਿੰਦੂ ਚੁਣਨਾ
ਕਰਨਲ ਫਾਰਵਰਡਿੰਗ ਚੁਣੋ ਜਦੋਂ ਫਾਇਰਵਾਲ ਨੀਤੀ ਦਾ ਇੰਜਣ ਹੋਵੇ, ਜਦੋਂ ਤੁਹਾਨੂੰ ਪ੍ਰਤੀ ਵਹਾਅ ਲੌਗ ਚਾਹੀਦਾ ਹੋਵੇ, ਜਾਂ ਜਦੋਂ ਹਿਸਾਬ ਮਹੱਤਵਪੂਰਨ ਹੋਵੇ। ਕੀਮਤ ਹੋਸਟ ਸਟੈਕ ਰਾਹੀਂ ਥ੍ਰੂਪੁਟ ਅਤੇ ਸੰਭਾਲਣ ਲਈ ਵਧੇਰੇ ਨਿਯਮ ਹਨ। ਲਾਭ ਇਹ ਹੈ ਕਿ ਕਾਊਂਟਰਾਂ ਤੋਂ ਲੈ ਕੇ ਵਹਾਅ ਨਿਰਯਾਤਕਾਂ ਤੱਕ ਹਰ ਮੌਜੂਦਾ ਸਾਧਨ ਟ੍ਰੈਫਿਕ ਦਾ ਦੁਬਾਰਾ ਵਰਣਨ ਕਰਦਾ ਹੈ। ਛੋਟੇ ਸਰਵਰ ਉੱਤੇ ਇਹ ਕੀਮਤ ਅਦ੍ਰਿਸ਼ ਹੈ; ਰੁੱਝੇ ਰੀਲੇ ਉੱਤੇ ਨਹੀਂ।
ਪ੍ਰਕਿਰਿਆ ਦੇ ਅੰਦਰਲੀ ਫਾਰਵਰਡਿੰਗ ਚੁਣੋ ਜਦੋਂ ਪੀਅਰਾਂ ਵਿਚਕਾਰ ਟ੍ਰੈਫਿਕ ਜਾਂ ਤਾਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਮਨਜ਼ੂਰ ਹੈ ਜਾਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਵਰਜਿਤ ਅਤੇ ਸਰਵਰ ਉਸ ਲਈ ਮਾਪਿਆ ਗਿਆ ਹੈ। ਕੀਮਤ ਇਹ ਹੈ ਕਿ ਕਾਊਂਟਰ, ਕਤਾਰ ਅਨੁਸ਼ਾਸਨ ਅਤੇ ਕਨੈਕਸ਼ਨ ਟ੍ਰੈਕਿੰਗ ਹੁਣ ਅੰਦਰਲੇ ਵਹਾਅ ਦਾ ਵਰਣਨ ਨਹੀਂ ਕਰਦੇ; ਇਹ ਤਾਂ ਹੀ ਮਨਜ਼ੂਰ ਹੈ ਜੇ ਬਾਅਦ ਵਿੱਚ ਕੋਈ ਉਨ੍ਹਾਂ ਉੱਤੇ ਨਿਰਭਰ ਨਾ ਕਰੇ।
ਤੁਸੀਂ ਜੋ ਵੀ ਚੁਣੋ, ਇਸ ਨੂੰ ਫਾਇਰਵਾਲ ਨਿਯਮਾਂ ਦੇ ਕੋਲ ਲਿਖੋ। ਜਿਹੜਾ ਨਿਯਮ-ਸਮੂਹ ਪੀਅਰਾਂ ਵਿਚਕਾਰ ਟ੍ਰੈਫਿਕ ਦੀ ਮਨਜ਼ੂਰੀ ਦਿੰਦਾ ਜਾਪਦਾ ਹੈ ਜਦਕਿ ਡੈਮਨ ਕਿਵੇਂ ਵੀ ਫੈਸਲਾ ਕਰਦਾ ਹੈ, ਉਹ ਅਗਲੇ ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਭਰਮਾਉਂਦਾ ਹੈ ਜੋ ਅਸਫਲ ਟ੍ਰਾਂਸਫਰ ਡੀਬੱਗ ਕਰੇਗਾ। ਸਿਰਫ ਨਿਯਮ ਪੜ੍ਹਨ ਵਾਲਾ ਕੋਈ ਵੀ ਮੰਨ ਲਵੇਗਾ ਕਿ ਕਰਨਲ ਹੀ ਦਰਵਾਜ਼ਾ ਹੈ।
ਨਿਯਮ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਕੀ ਜਾਂਚਣਾ ਹੈ
ਸਰਵਰ ਨੇ ਅਸਲ ਵਿੱਚ ਜੋ ਸੰਰਚਨਾ ਲੋਡ ਕੀਤੀ ਹੈ ਉਹ ਪੜ੍ਹੋ, ਤੁਹਾਨੂੰ ਸੋਧਿਆ ਯਾਦ ਹੈ ਉਹ ਫਾਇਲ ਨਹੀਂ, ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਪੀਅਰ ਵਿਕਲਪ ਮੌਜੂਦ ਹੈ ਜਾਂ ਨਹੀਂ। ਜੇ ਤੁਸੀਂ ਇਸ ਨੂੰ ਬਦਲਿਆ ਹੈ, ਤਾਂ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸੇਵਾ ਦੁਬਾਰਾ ਲੋਡ ਹੋਈ ਹੈ, ਸਿਰਫ ਡਿਸਕ ਉੱਤੇ ਫਾਇਲ ਦੁਬਾਰਾ ਨਹੀਂ ਲਿਖੀ।
ਫਿਰ ਨਿਯਮ ਅਸਲ ਵਿੱਚ ਮੇਲ ਖਾਂਦਾ ਹੈ ਇਹ ਸਾਬਤ ਕਰਨ ਲਈ ਕਲਾਇੰਟ ਤੋਂ ਸਰਵਰ ਵੱਲ ਵਹਾਅ ਨਾਲ ਪਰਖ ਦੁਹਰਾਓ, ਅਤੇ ਭੇਜੇ ਮਾਰਗ ਜਾਂਚੋ, ਕਿਉਂਕਿ ਗੁੰਮ ਮਾਰਗ ਕਲਾਇੰਟ ਵੱਲੋਂ ਠੀਕ ਫਾਇਰਵਾਲ ਰੋਕ ਵਾਂਗ ਦਿਸਦਾ ਹੈ। ਨਿਯਮਾਂ ਦਾ ਕ੍ਰਮ ਤਾਂ ਹੀ ਬਦਲੋ ਜਦੋਂ ਤੁਸੀਂ ਜਾਣਦੇ ਹੋ ਕਿ ਕਿਹੜਾ ਫਾਰਵਰਡਿੰਗ ਬਿੰਦੂ ਫੈਸਲੇ ਦਾ ਮਾਲਕ ਹੈ।