ਬਲੈਕਹੋਲ ਰੂਟ ਬਨਾਮ VPN ਕਿੱਲ ਸਵਿੱਚ: ਹਰ ਇੱਕ ਕੀ ਕਰਦਾ ਹੈ
ਬਲੈਕਹੋਲ ਰੂਟ ਮੇਲ ਖਾਂਦੀ ਟ੍ਰੈਫਿਕ ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ ਅਤੇ ਨਾਕਾਮੀ ਵੇਲੇ ਬੰਦ ਰਾਹ ਲਾਗੂ ਕਰਦਾ ਹੈ। ਇਸ ਦੇ ਦਾਇਰੇ ਅਤੇ ਅੰਨ੍ਹੇ ਥਾਵਾਂ ਦੀ ਤੁਲਨਾ ਪੈਕਟ ਫਿਲਟਰ ਵਾਲੀ ਕਿੱਲ ਸਵਿੱਚ ਨਾਲ ਕਰੋ।
ਇੱਕ ਪੈਕਟ ਲੈਪਟਾਪ ਤੋਂ ਨਿਕਲਦਾ ਹੈ, ਕਦੇ VPN ਗੇਟਵੇ ਤੱਕ ਨਹੀਂ ਪਹੁੰਚਦਾ, ਅਤੇ ਕੋਈ ਫਾਇਰਵਾਲ ਕਾਊਂਟਰ ਨਹੀਂ ਹਿਲਦਾ। ਰੂਟ ਟੇਬਲ ਪਹਿਲਾਂ ਹੀ ਪੈਕਟ ਦੀ ਕਿਸਮਤ ਤੈਅ ਕਰ ਚੁੱਕੀ ਹੈ: ਇੱਕ ਬਲੈਕਹੋਲ ਐਂਟਰੀ ਉਸ ਨਾਲ ਮੇਲ ਖਾ ਗਈ ਅਤੇ ਕਰਨਲ ਨੇ ਕਿਸੇ ਵੀ ਇੰਟਰਫੇਸ ਦੇ ਵੇਖਣ ਤੋਂ ਪਹਿਲਾਂ ਉਸ ਨੂੰ ਛੱਡ ਦਿੱਤਾ। ਇਹ ਵਿਵਹਾਰ ਉਦੋਂ ਲਾਹੇਵੰਦ ਹੈ ਜਦੋਂ ਕਿਸੇ ਮੰਜ਼ਿਲ ਨੂੰ ਬੰਦ-ਨਾਕਾਮ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਪਰ ਇਹ ਤੰਗ ਦਾਇਰੇ ਦੀ ਰੂਟਿੰਗ ਕਾਰਵਾਈ ਹੈ। ਇਸ ਨੂੰ ਪੂਰੀ ਕਿੱਲ ਸਵਿੱਚ ਮੰਨਣਾ ਹੀ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਡਿਜ਼ਾਈਨ ਗਲਤ ਹੁੰਦੇ ਹਨ।
ਛੱਡਣ ਦੀ ਕਾਰਵਾਈ ਅਸਲ ਵਿੱਚ ਕਿਸ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ
ਰੂਟ ਖੋਜ ਇੱਕ ਟੇਬਲ ਚੁਣਦੀ ਹੈ, ਫਿਰ ਉਸ ਵਿੱਚ ਸਭ ਤੋਂ ਲੰਮਾ ਮੇਲ ਖਾਂਦਾ ਪ੍ਰੀਫਿਕਸ ਚੁਣਦੀ ਹੈ। ਬਲੈਕਹੋਲ ਰੂਟ ਇੱਕ ਆਮ ਐਂਟਰੀ ਹੈ ਜਿਸ ਦੀ ਕਾਰਵਾਈ ਛੱਡਣਾ ਹੈ, ਇਸ ਲਈ ਇਹ ਸਿਰਫ਼ ਉਹਨਾਂ ਪੈਕਟਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ ਜੋ ਪੂਰੇ ਫੈਸਲੇ ਤੋਂ ਬਾਅਦ ਉਹ ਐਂਟਰੀ ਚੁਣਦੇ। ਪਾਲਿਸੀ ਨਿਯਮ ਨਾਲ ਟੇਬਲ ਬਦਲੋ, ਜਾਂ ਵਧੇਰੇ ਖਾਸ ਪ੍ਰੀਫਿਕਸ ਜੋੜੋ, ਅਤੇ ਛੱਡਣਾ ਲਾਗੂ ਨਹੀਂ ਰਹਿੰਦਾ।
ਇਸ ਲਈ ਬਲੈਕਹੋਲ ਦਾ ਦਾਇਰਾ ਸਟੀਕ ਅਤੇ ਦੱਸਣਾ ਸੌਖਾ ਹੈ: ਇਹ ਪ੍ਰੀਫਿਕਸ ਨੂੰ, ਟੇਬਲ ਵਿੱਚ, ਉਸ ਪਤਾ ਪਰਿਵਾਰ ਲਈ ਢਕਦਾ ਹੈ। ਇਹ ਉਸ ਮੰਜ਼ਿਲ ਨੂੰ ਨਹੀਂ ਢਕਦਾ ਜੋ ਕੋਈ ਹੋਰ ਟੇਬਲ ਜਿੱਤ ਲਵੇ, ਅਤੇ ਸਿਰਫ਼ IPv4 ਪ੍ਰੀਫਿਕਸ ਛੱਡੇ ਜਾਣ ਕਾਰਨ IPv6 ਨੂੰ ਨਹੀਂ ਢਕਦਾ।
ip route get ਕੁਝ ਵੀ ਤੈਨਾਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਫੈਸਲਾ ਦਿਖਾਉਂਦਾ ਹੈ, ਟੇਬਲ ਅਤੇ ਰੂਟ ਕਿਸਮ ਸਮੇਤ। ਉਹ ਆਉਟਪੁੱਟ ਪੜ੍ਹਨਾ ਨਾਕਾਮ ਬੇਨਤੀ ਤੋਂ ਅੰਦਾਜ਼ਾ ਲਾਉਣ ਨਾਲੋਂ ਤੇਜ਼ ਹੈ ਕਿ ਕਿਹੜਾ ਨਿਯਮ ਜਾਂ ਪ੍ਰੀਫਿਕਸ ਕੰਮ ਕੀਤਾ।
ਬਲੈਕਹੋਲ unreachable ਜਾਂ prohibit ਵਰਗਾ ਨਹੀਂ ਹੈ
Linux ਛੱਡਣ ਵਰਗੀਆਂ ਤਿੰਨ ਰੂਟ ਕਿਸਮਾਂ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਇਹ ਇਸ ਵਿੱਚ ਵੱਖਰੀਆਂ ਹਨ ਕਿ ਭੇਜਣ ਵਾਲਾ ਕੀ ਦੇਖਦਾ ਹੈ। ਬਲੈਕਹੋਲ ਪੈਕਟ ਨੂੰ ਜਵਾਬ ਤੋਂ ਬਿਨਾਂ ਸੁੱਟ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਕਲਾਇੰਟ ਸਮਾਂ ਸਮਾਪਤੀ ਦੇਖਦਾ ਹੈ। unreachable ਰੂਟ ICMP unreachable ਸੁਨੇਹਾ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਕਨੈਕਸ਼ਨ ਹੋਸਟ ਜਾਂ ਨੈੱਟਵਰਕ ਗਲਤੀ ਨਾਲ ਜਲਦੀ ਨਾਕਾਮ ਹੁੰਦਾ ਹੈ। prohibit ਰੂਟ ਪ੍ਰਬੰਧਕੀ ਪਾਬੰਦੀ ਦੀ ਗਲਤੀ ਦਿੰਦਾ ਹੈ, ਜੋ ਜਾਣ-ਬੁੱਝ ਕੇ ਪਾਲਿਸੀ ਇਨਕਾਰ ਦੇ ਵਧੇਰੇ ਨੇੜੇ ਹੈ।
ਉਹ ਵਿਵਹਾਰ ਚੁਣੋ ਜੋ ਤੁਸੀਂ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ। ਜਦੋਂ ਤੁਸੀਂ ਪਾਲਿਸੀ ਜ਼ਾਹਰ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਤਾਂ ਚੁੱਪ ਛੱਡਣਾ ਢੁੱਕਵਾਂ ਹੈ, ਅਤੇ ਜਦੋਂ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਸਮਝਣਾ ਹੋਵੇ ਕਿ ਮੰਜ਼ਿਲ ਕਿਉਂ ਉਪਲਬਧ ਨਹੀਂ ਤਾਂ ਤੁਰੰਤ ਗਲਤੀ ਬਿਹਤਰ ਹੈ। ਨੈੱਟਵਰਕ ਭਰ ਵਿੱਚ ਕਿਸਮਾਂ ਮਿਲਾਉਣ ਨਾਲ ਅਜਿਹੇ ਸਹਾਇਤਾ ਟਿਕਟ ਬਣਦੇ ਹਨ ਜੋ ਇੱਕੋ ਪਾਲਿਸੀ ਨੂੰ ਤਿੰਨ ਵੱਖਰੀਆਂ ਖਰਾਬੀਆਂ ਵਜੋਂ ਦੱਸਦੇ ਹਨ।
ਕਨੈਕਸ਼ਨ ਦਾ ਨਿਦਾਨ ਕਰਦੇ ਸਮੇਂ ਇਹ ਨਾ ਮੰਨੋ ਕਿ ਹਰ ਛੱਡਣ ਵਾਲੀ ਐਂਟਰੀ ਬਦਲਣ ਯੋਗ ਹੈ। ਗਲਤੀ ਦਾ ਪਾਠ, ਸਮਾਂ ਅਤੇ ਪੈਕਟ ਕੈਪਚਰ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਟੇਬਲ ਵਿੱਚ ਰੂਟ ਕਿਸਮ ਦੱਸਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਹੜੀ ਦੇਖ ਰਹੇ ਹੋ। ip-route ਦਸਤਾਵੇਜ਼ ਕਿਸਮਾਂ ਅਤੇ ਉਹਨਾਂ ਦੇ ਗਲਤੀ ਵਿਵਹਾਰ ਦੀ ਸੂਚੀ ਦਿੰਦਾ ਹੈ।
ਇਹ ਕਿੱਲ ਸਵਿੱਚ ਨਾਲ ਕਿਵੇਂ ਤੁਲਨਾ ਕਰਦਾ ਹੈ
ਕਿੱਲ ਸਵਿੱਚ ਪੈਕਟ ਫਿਲਟਰਿੰਗ ਹੈ: ਇੱਕ ਫਾਇਰਵਾਲ ਨਿਯਮ ਜੋ ਟਨਲ ਤੋਂ ਬਾਹਰ ਜਾਣ ਵਾਲੀ ਬਾਹਰੀ ਟ੍ਰੈਫਿਕ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਬਲੈਕਹੋਲ ਰੂਟ ਸਟੈਕ ਵਿੱਚ ਪਹਿਲਾਂ ਲਿਆ ਗਿਆ ਫਾਰਵਰਡਿੰਗ ਫੈਸਲਾ ਹੈ। ਦੋਵੇਂ ਟ੍ਰੈਫਿਕ ਰੋਕ ਸਕਦੇ ਹਨ, ਪਰ ਉਹ ਵੱਖਰੀਆਂ ਚੀਜ਼ਾਂ ਦੇਖਦੇ ਹਨ ਅਤੇ ਵੱਖਰੇ ਕੇਸ ਖੁੰਝਾਉਂਦੇ ਹਨ।
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No tunnel route, direct egress |
ਤੁਲਨਾ ਉੱਥੇ ਮਹੱਤਵਪੂਰਨ ਹੈ ਜਿੱਥੇ ਦਾਇਰਾ ਹੈ। ਫਾਇਰਵਾਲ ਮਾਲਕ, ਪੋਰਟ ਜਾਂ ਇੰਟਰਫੇਸ ਨਾਲ ਮੇਲ ਖਾ ਸਕਦਾ ਹੈ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਰੋਕ ਸਕਦਾ ਹੈ ਜਦੋਂ ਕਿ ਐਂਡਪੁਆਇੰਟ ਪਹੁੰਚਯੋਗ ਰਹਿੰਦਾ ਹੈ; ਰੂਟ ਇਹ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਉਲਟਾ, ਰੂਟ ਕੋਈ ਪੈਕਟ ਫਿਲਟਰ ਲੋਡ ਕੀਤੇ ਬਿਨਾਂ ਪੂਰਾ ਪ੍ਰੀਫਿਕਸ ਛੱਡਣ ਵੱਲ ਭੇਜ ਸਕਦਾ ਹੈ, ਜੋ ਘੱਟੋ-ਘੱਟ ਸਿਸਟਮ ਉੱਤੇ ਲਾਹੇਵੰਦ ਹੈ।
WireGuard ਦਾ AllowedIPs ਕ੍ਰਿਪਟੋਕੀ ਰੂਟਿੰਗ ਹੈ, ਫਾਇਰਵਾਲ ਨਹੀਂ। ਇਹ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਕਿਹੜੇ ਮੰਜ਼ਿਲ ਪ੍ਰੀਫਿਕਸ ਇੰਟਰਫੇਸ ਵਿੱਚ ਸਵੀਕਾਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਸਿਰਫ਼ ਟਨਲ ਸਬਨੈੱਟ ਸੂਚੀਬੱਧ ਕਰਨ ਵਾਲੀ ਪ੍ਰੋਫਾਈਲ ਹੋਰ ਮੰਜ਼ਿਲਾਂ ਨੂੰ ਆਮ ਡਿਫਾਲਟ ਰੂਟ ਉੱਤੇ ਛੱਡ ਦਿੰਦੀ ਹੈ। ਇਸੇ ਲਈ ਪੂਰੀ ਟਨਲ ਪ੍ਰੋਫਾਈਲਾਂ 0.0.0.0/0 ਵਰਤਦੀਆਂ ਹਨ ਅਤੇ ਇਸੇ ਲਈ wg-quick ਵੀ ਜਦੋਂ ਕਰ ਸਕੇ ਫਾਇਰਵਾਲ ਨਿਯਮ ਲਾਉਂਦਾ ਹੈ।
ਟਨਲ ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਛੱਡਣ ਤੋਂ ਬਾਹਰ ਰੱਖੋ
ਐਂਡਪੁਆਇੰਟ ਦਾ ਬਾਹਰੀ ਪਤਾ ਭੌਤਿਕ ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਪਹੁੰਚਯੋਗ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੋ ਛੱਡਣਾ ਉਸ ਪਤੇ ਨੂੰ ਵੀ ਫੜ ਲੈਂਦਾ ਹੈ ਉਹ ਹੈਂਡਸ਼ੇਕ ਨੂੰ ਬਾਹਰ ਜਾਣ ਤੋਂ ਰੋਕਦਾ ਹੈ, ਅਤੇ ਟਨਲ ਕਦੇ ਨਹੀਂ ਉੱਠਦਾ, ਜੋ ਰੂਟਿੰਗ ਪਾਲਿਸੀ ਦੀ ਥਾਂ VPN ਖਰਾਬੀ ਵਾਂਗ ਦਿਖਦਾ ਹੈ। ਬਦਲਾਅ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਐਂਡਪੁਆਇੰਟ ਦਾ ਰੂਟ ਜਾਂਚੋ।
ਪ੍ਰਬੰਧਨ ਪਹੁੰਚ ਵੀ ਉਸੇ ਸਮੀਖਿਆ ਵਿੱਚ ਆਉਂਦੀ ਹੈ। ਜੇ ਰਾਊਟਰ ਜਾਂ ਕਲਾਇੰਟ ਤੱਕ ਇੱਕੋ ਰਾਹ ਟਨਲ ਹੈ, ਤਾਂ ਬਹੁਤ ਚੌੜਾ ਛੱਡਣਾ ਤੁਹਾਨੂੰ ਉਸ ਮਸ਼ੀਨ ਤੋਂ ਬਾਹਰ ਕਰ ਸਕਦਾ ਹੈ ਜੋ ਇਸ ਨੂੰ ਹਟਾਉਣ ਦਿੰਦੀ। ਇੱਕ ਦਸਤਾਵੇਜ਼ੀ ਆਊਟ-ਆਫ-ਬੈਂਡ ਰੂਟ, ਕੰਸੋਲ ਜਾਂ ਸਮਾਂਬੱਧ ਰੋਲਬੈਕ ਰੱਖੋ।
IPv6 ਨੂੰ ਆਪਣੀ ਐਂਟਰੀ ਅਤੇ ਆਪਣੀ ਸਮੀਖਿਆ ਚਾਹੀਦੀ ਹੈ। ਜੋ ਡਿਜ਼ਾਈਨ IPv4 ਨੂੰ ਬਲੈਕਹੋਲ ਵਿੱਚ ਛੱਡਦਾ ਹੈ ਅਤੇ IPv6 ਨੂੰ ਡਿਫਾਲਟ ਰੂਟ ਉੱਤੇ ਛੱਡ ਦਿੰਦਾ ਹੈ, ਉਹ ਠੀਕ ਉਹੀ ਟ੍ਰੈਫਿਕ ਲੀਕ ਕਰਦਾ ਹੈ ਜੋ ਪਾਲਿਸੀ ਰੋਕਣਾ ਚਾਹੁੰਦੀ ਸੀ, ਅਤੇ ਗਲਤੀ ਸਿਰਫ਼ IPv4 ਵਾਲੇ ਟੈਸਟ ਵਿੱਚ ਅਦਿੱਖ ਰਹਿੰਦੀ ਹੈ।
ਇਸ ਨੂੰ ਟਾਈਮਰ ਅਤੇ ਰੋਲਬੈਕ ਨਾਲ ਪੜਾਅਵਾਰ ਲਾਗੂ ਕਰੋ
ਰੂਟ ਨੂੰ ਛੋਟੇ ਆਪਣੇ-ਆਪ ਹਟਾਉਣ ਨਾਲ ਲਾਗੂ ਕਰੋ ਤਾਂ ਜੋ ਗਲਤੀ ਰੀਬੂਟ ਤੋਂ ਬਾਅਦ ਵੀ ਨਾ ਰਹੇ। ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡ ਦਸਤਾਵੇਜ਼ੀ ਰੇਂਜ ਵਰਤਦੇ ਹਨ; ਇਸ ਨੂੰ ਉਸ ਪ੍ਰੀਫਿਕਸ ਨਾਲ ਬਦਲੋ ਜੋ ਤੁਹਾਡਾ ਡਿਜ਼ਾਈਨ ਅਸਲ ਵਿੱਚ ਛੱਡਦਾ ਹੈ:
sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8ਦੂਜੀ ਕਮਾਂਡ ਨੂੰ ਬਲੈਕਹੋਲ ਰੂਟ ਅਤੇ ਉਹ ਟੇਬਲ ਦੱਸਣੀ ਚਾਹੀਦੀ ਹੈ ਜਿਸ ਤੋਂ ਇਹ ਆਇਆ। ਤੀਜੀ ਇੱਕ ਮਿੰਟ ਵਿੱਚ ਹਟਾਉਣ ਦਾ ਸਮਾਂ ਤੈਅ ਕਰਦੀ ਹੈ, ਜੋ ਪਾਲਿਸੀ ਦੀ ਪੁਸ਼ਟੀ ਲਈ ਕਾਫ਼ੀ ਸਮਾਂ ਹੈ ਅਤੇ ਦੂਰ ਦੇ ਹੋਸਟ ਉੱਤੇ ਗਲਤੀ ਤੋਂ ਉੱਭਰਨ ਲਈ ਕਾਫ਼ੀ ਛੋਟਾ ਹੈ। ਵਿਵਹਾਰ ਦੀ ਪੁਸ਼ਟੀ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਹੋਰ ਰੂਟਾਂ ਦੇ ਮਾਲਕ ਉਸੇ ਸੰਰਚਨਾ ਪ੍ਰਬੰਧਨ ਰਾਹੀਂ ਐਂਟਰੀ ਨੂੰ ਪੱਕੀ ਬਣਾਓ।
ਪ੍ਰੀਫਿਕਸ, ਟੇਬਲ, ਪਤਾ ਪਰਿਵਾਰ ਅਤੇ ਰੋਲਬੈਕ ਢੰਗ ਦਰਜ ਕਰਕੇ ਬਦਲਾਅ ਬੰਦ ਕਰੋ। ਛੱਡਣਾ ਰੂਟਿੰਗ ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਜਾਣ-ਬੁੱਝ ਕੇ ਕੀਤਾ ਅਪਵਾਦ ਹੈ, ਅਤੇ ਅਗਲੇ ਇੰਜੀਨੀਅਰ ਨੂੰ ਇਹ ਜਾਣਨਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਇਹ ਕਿਹੜੀ ਟ੍ਰੈਫਿਕ ਰੋਕਣ ਲਈ ਸੀ, ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਉਹ ਤੈਅ ਕਰੇ ਕਿ ਇਹ ਅਜੇ ਵੀ ਉੱਥੇ ਹੈ ਜਾਂ ਨਹੀਂ।