mDNS WireGuard ਉੱਤੇ: ਸਾਥੀ ਦੇ ਜਵਾਬ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਤਿੰਨ ਗੇਟ
Avahi ਨੂੰ ਇੱਕ ਯੋਗ ਇੰਟਰਫੇਸ, ਸਮੂਹ ਤੱਕ ਰੂਟ ਅਤੇ ਮੰਜ਼ਿਲ ਦਾ ਮਾਲਕ ਸਾਥੀ ਚਾਹੀਦਾ ਹੈ। ਤਿੰਨ ਗੇਟ, ਤਿੰਨ ਵੱਖਰੀਆਂ ਜਾਂਚਾਂ ਅਤੇ ਕੋਈ ਫੈਨ-ਆਊਟ ਨਹੀਂ।
WireGuard ਡਿਵਾਈਸ ਉੱਤੇ multicast ਫਲੈਗ ਸੈੱਟ ਕਰਨਾ ਇੰਟਰਫੇਸ ਨੂੰ ਖੋਜ ਸੌਫਟਵੇਅਰ ਲਈ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ, ਅਤੇ ਫਲੈਗ ਇੰਨਾ ਹੀ ਕਰਦਾ ਹੈ। ਇਹ ਪ੍ਰੋਟੋਕੋਲ ਨੂੰ ਨਹੀਂ ਦੱਸਦਾ ਕਿ ਸਮੂਹ ਪੈਕਟ ਕਿੱਥੇ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਕਈ ਸਾਥੀਆਂ ਵਾਲੇ ਡਿਵਾਈਸ ਉੱਤੇ ਇੱਕ ਵੀ ਸਪਸ਼ਟ ਜਵਾਬ ਨਹੀਂ ਹੁੰਦਾ। ਚੱਲ ਰਹੇ ਡੈਮਨ ਅਤੇ ਖੋਜੀ ਗਈ ਸੇਵਾ ਵਿਚਕਾਰ ਤਿੰਨ ਵੱਖਰੇ ਗੇਟ ਖੜ੍ਹੇ ਹਨ।
ਇਹਨਾਂ ਨੂੰ ਕ੍ਰਮ ਵਿੱਚ ਪਰਖੋ, ਕਿਉਂਕਿ ਇੱਕ ਪਾਸ ਕਰਨਾ ਅਗਲੇ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਦੱਸਦਾ।
ਪਹਿਲਾ ਗੇਟ: ਫਲੈਗ ਅਤੇ ਡੈਮਨ ਦੀ ਨੀਤੀ
Linux WireGuard ਡਿਵਾਈਸ ARP ਤੋਂ ਬਿਨਾਂ ਪੁਆਇੰਟ-ਟੂ-ਪੁਆਇੰਟ ਲਿੰਕ ਵਜੋਂ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ multicast ਫਲੈਗ ਨਹੀਂ ਰੱਖਦਾ। ਫਲੈਗ ਜੋੜਨਾ ਇੱਕ ਸਥਾਨਕ ਇੰਟਰਫੇਸ ਬਦਲਾਅ ਹੈ, ਜੋ ਡਿਵਾਈਸ ਦਾ ਪ੍ਰਬੰਧ ਕਰਨ ਵਾਲਾ ਕੋਈ ਵੀ ਕਰਦਾ ਹੈ। Avahi ਦਾ ਇਸ ਦੇ ਉੱਪਰ ਆਪਣਾ ਸੰਸਾਰ-ਦ੍ਰਿਸ਼ ਹੈ, ਅਤੇ ਇਸਦੀ ਡਿਫਾਲਟ ਨੀਤੀ ਪੁਆਇੰਟ-ਟੂ-ਪੁਆਇੰਟ ਇੰਟਰਫੇਸ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਛੱਡ ਦਿੰਦੀ ਹੈ। ਇਸ ਲਈ ਇੱਕ ਪੈਕਟ ਦੇ ਹਿੱਲਣ ਤੋਂ ਪਹਿਲਾਂ ਦੋ ਸੁਤੰਤਰ ਯੋਗਤਾ ਟੈਸਟ ਲਾਗੂ ਹੁੰਦੇ ਹਨ।
ਇਸ ਲਈ ਡੈਮਨ ਨੂੰ ਸਪਸ਼ਟ ਫੈਸਲਾ ਚਾਹੀਦਾ ਹੈ, ਸਿਰਫ਼ ਚੱਲ ਰਹੀ ਪ੍ਰਕਿਰਿਆ ਨਹੀਂ। ਇਸਦੇ ਦਸਤਾਵੇਜ਼ੀ ਨਿਯੰਤਰਣਾਂ ਵਿੱਚ allow-interfaces, deny-interfaces ਅਤੇ allow-point-to-point ਸ਼ਾਮਲ ਹਨ, ਅਤੇ ਆਖਰੀ ਉਹ ਸੈਟਿੰਗ ਹੈ ਜੋ ਲੋਕ ਛੱਡ ਦਿੰਦੇ ਹਨ।
ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਜਾਂਚਾਂ ਲਿੰਕ ਫਲੈਗ, multicast ਰੂਟ ਅਤੇ ਇਹ ਦੱਸਦੀਆਂ ਹਨ ਕਿ ਡੈਮਨ ਦੀ ਸੰਰਚਨਾ ਪਾਰਸ ਹੁੰਦੀ ਹੈ ਜਾਂ ਨਹੀਂ:
ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check
ਸਫਲਤਾਪੂਰਵਕ ਸ਼ੁਰੂ ਹੋਇਆ ਡੈਮਨ ਤੁਹਾਡੇ ਲਈ ਮਹੱਤਵਪੂਰਨ ਇੰਟਰਫੇਸ ਉੱਤੇ ਸਾਕਟ ਖੋਲ੍ਹੇ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ। ਸੇਵਾ ਦੀ ਸਥਿਤੀ ਨੂੰ ਕਵਰੇਜ ਦੇ ਬਰਾਬਰ ਮੰਨਣ ਦੀ ਬਜਾਏ ਇਸਦੀ ਪ੍ਰਭਾਵੀ ਸੰਰਚਨਾ ਪੜ੍ਹੋ।
ਦੂਜਾ ਗੇਟ: ਸਮੂਹ ਤੱਕ ਰੂਟ
ਦੂਜਾ ਗੇਟ ਆਮ ਰੂਟਿੰਗ ਹੈ। 224.0.0.251 ਵੱਲ ਭੇਜਿਆ ਪੈਕਟ ਬਾਕੀ ਸਭ ਵਾਂਗ ਫਾਰਵਰਡਿੰਗ ਟੇਬਲ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ, ਅਤੇ ਜੇ ਟੇਬਲ ਇਸਨੂੰ ਭੌਤਿਕ LAN ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਬਾਹਰ ਭੇਜਦਾ ਹੈ ਤਾਂ ਕੋਈ ਵੀ WireGuard ਸੰਰਚਨਾ ਇਸਨੂੰ ਨਹੀਂ ਬਦਲੇਗੀ। ਪਹਿਲਾਂ ਰੂਟ ਠੀਕ ਕਰੋ, ਫਿਰ ਬਾਕੀ ਜਾਂਚ ਛੋਟੀ ਹੋ ਜਾਵੇਗੀ। ਕਿਸੇ ਵੀ ਸਾਥੀ ਕੁੰਜੀ ਨੂੰ ਛੂਹਣ ਤੋਂ ਪਹਿਲਾਂ ਵੇਖੋ ਕਿ ਕਰਨਲ ਸਮੂਹ ਪਤੇ ਬਾਰੇ ਕੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ।
| Observation | Gate it belongs to | What it does not prove |
|---|---|---|
Multicast flag present on wg0 | Interface eligibility | The daemon will use the interface |
Route to the group via wg0 | Forwarding | Any peer will receive it |
| Destination inside a peer's allowed list | Peer selection | That peer's network will answer |
ਖਾਸ ਰੂਟ ਤੋਂ ਬਿਨਾਂ, ਕਰਨਲ ਲਿੰਕ ਦੀ ਆਪਣੀ multicast ਸੰਭਾਲ ਵੱਲ ਪਰਤਦਾ ਹੈ, ਇਸੇ ਲਈ ਡਿਫਾਲਟ ਸਮਤਲ LAN ਉੱਤੇ ਸਹੀ ਦਿਸਦਾ ਹੈ ਅਤੇ ਉਹੀ ਸਮੂਹ ਟ੍ਰੈਫਿਕ ਸੁਰੰਗ ਰਾਹੀਂ ਬਾਹਰ ਜਾਣਾ ਹੋਵੇ ਤਾਂ ਗਲਤ ਦਿਸਦਾ ਹੈ। ਅਸਫਲਤਾ ਭੇਜਣ ਵਾਲੇ ਪਾਸਿਓਂ ਚੁੱਪ ਹੁੰਦੀ ਹੈ: ਕੁਐਰੀ ਕਿਤੇ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਜਵਾਬ ਕਦੇ ਨਹੀਂ ਆਉਂਦਾ।
ਤੀਜਾ ਗੇਟ: WireGuard ਹਰ ਪੈਕਟ ਲਈ ਇੱਕ ਸਾਥੀ ਚੁਣਦਾ ਹੈ
WireGuard ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਪਤਾ ਸੈੱਟਾਂ ਵਿੱਚ ਮੰਜ਼ਿਲ ਲੱਭ ਕੇ ਬਾਹਰ ਜਾਣ ਵਾਲਾ ਸਾਥੀ ਚੁਣਦਾ ਹੈ, ਅਤੇ Linux ਦਾ ਟ੍ਰਾਂਸਮਿਟ ਮਾਰਗ ਉਹ ਭਾਲ ਹਰ ਪੈਕਟ ਲਈ ਇੱਕ ਵਾਰ ਕਰਦਾ ਹੈ। ਨਤੀਜਾ ਇੱਕੋ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਪੈਕਟ ਉਸ ਸਾਥੀ ਲਈ ਇਨਕ੍ਰਿਪਟ ਹੁੰਦਾ ਹੈ। ਇੱਕੋ ਸਮੂਹ ਪ੍ਰੀਫਿਕਸ ਕਈ ਸਾਥੀਆਂ ਦੀਆਂ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਸੂਚੀਆਂ ਵਿੱਚ ਦਿਸਣ ਨਾਲ ਮੈਂਬਰਸ਼ਿਪ ਜਾਂ ਨਕਲ ਨਹੀਂ ਬਣਦੀ; ਇਹ ਇੱਕ ਅਸਪਸ਼ਟ ਭਾਲ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਉਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਉੱਤੇ ਨਿਬੇੜਿਆ ਜਾਂਦਾ ਹੈ।
ਦੋ ਸਿਰਿਆਂ ਵਾਲੇ ਸਮਰਪਿਤ ਲਿੰਕ ਉੱਤੇ ਇਹ ਠੀਕ ਉਹੀ ਹੈ ਜੋ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ, ਕਿਉਂਕਿ ਜਾਣ-ਬੁੱਝ ਕੇ ਢੋਏ ਜਾਣ ਵਾਲੇ ਸਮੂਹ ਟ੍ਰੈਫਿਕ ਲਈ ਇੱਕੋ ਇੱਛਤ ਪ੍ਰਾਪਤਕਰਤਾ ਹੁੰਦਾ ਹੈ। ਪੰਜ ਸਾਥੀਆਂ ਵਾਲੇ ਇੰਟਰਫੇਸ ਉੱਤੇ ਇਹ ਸੀਮਾ ਹੈ, ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ, ਅਤੇ ਸੁਧਾਰ ਕਿਸੇ ਇੱਕ ਸਾਥੀ ਦੀ ਸੰਰਚਨਾ ਵਿੱਚ ਨਹੀਂ, ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
ਫੈਨ-ਆਊਟ ਡਿਜ਼ਾਈਨ ਨੂੰ ਸਪਸ਼ਟ ਰਿਲੇ, ਵੱਖਰੇ ਲਿੰਕ ਜਾਂ ਬਿਲਕੁਲ ਵੱਖਰੀ ਖੋਜ ਵਿਧੀ ਚਾਹੀਦੀ ਹੈ। ਹਰ ਕਲਾਇੰਟ ਗੇਟਵੇ ਨੂੰ ਪਿੰਗ ਕਰ ਸਕਦਾ ਹੈ ਇਸ ਲਈ ਦੋ-ਸਿਰੀ ਵਿਧੀ ਨੂੰ ਬਹੁ-ਕਲਾਇੰਟ ਹੱਲ ਵਜੋਂ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਨਾ — ਇਸੇ ਤਰ੍ਹਾਂ ਇਹ ਗਲਤ ਢੰਗ ਨਾਲ ਤੈਨਾਤ ਹੁੰਦਾ ਹੈ।
ਆਉਣ ਵਾਲੀ ਦਿਸ਼ਾ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਜਾਂਚੀ ਜਾਂਦੀ ਹੈ: ਪ੍ਰਾਪਤ ਪੈਕਟ ਦਾ ਸਰੋਤ ਪ੍ਰਮਾਣਿਤ ਸਾਥੀ ਦੀ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਸੂਚੀ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਉੱਥੇ multicast ਮੰਜ਼ਿਲ ਜੋੜਨਾ ਭੇਜਣ ਵਾਲੇ ਦੀ ਅਸਲ ਸਰੋਤ-ਮਾਲਕੀ ਦੀ ਥਾਂ ਨਹੀਂ ਲੈਂਦਾ।
ਪਰਾਵਰਤਨ ਇੱਕ ਸੀਮਾ ਹੈ, ਪੁਲ ਨਹੀਂ
Avahi ਦਾ ਪਰਾਵਰਤਕ ਆਪਣੇ ਚੁਣੇ ਇੰਟਰਫੇਸਾਂ ਵਿਚਕਾਰ mDNS ਸੁਨੇਹੇ ਐਪਲੀਕੇਸ਼ਨ ਪੱਧਰ ਉੱਤੇ ਦੁਬਾਰਾ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਇਹ ਨੈੱਟਵਰਕਾਂ ਵਿਚਕਾਰ ਖੋਜ ਸੀਮਾ ਹੈ, ਈਥਰਨੈੱਟ ਪੁਲ ਨਹੀਂ ਅਤੇ ਆਮ multicast ਰਾਊਟਰ ਨਹੀਂ। ਇੱਕੋ ਨੈੱਟਵਰਕਾਂ ਨਾਲ ਜੁੜੇ ਦੋ ਪਰਾਵਰਤਕ ਆਸਾਨੀ ਨਾਲ ਦੁਹਰਾਈਆਂ ਘੋਸ਼ਣਾਵਾਂ ਦਾ ਲੂਪ ਬਣਾ ਦੇਣਗੇ।
ਪਰਾਵਰਤਨ ਸੇਵਾ ਨਾਮ ਅਤੇ ਉਹਨਾਂ ਦਾ ਮੈਟਾਡੇਟਾ ਕਿਸੇ ਹੋਰ ਨੈੱਟਵਰਕ ਨੂੰ ਵੀ ਸੌਂਪਦਾ ਹੈ, ਜੋ ਰੂਟਿੰਗ ਫੈਸਲੇ ਜਿੰਨਾ ਹੀ ਪਰਦੇਦਾਰੀ ਦਾ ਫੈਸਲਾ ਹੈ। ਚੁਣੇ ਇੰਟਰਫੇਸ ਸੀਮਿਤ ਕਰੋ, ਅਤੇ ਜਿੱਥੇ ਸਥਾਪਿਤ ਸੰਸਕਰਣ ਸਮਰਥਨ ਦਿੰਦਾ ਹੈ ਉੱਥੇ ਸੇਵਾ ਫਿਲਟਰ ਵਰਤੋ, ਤਾਂ ਜੋ ਸਿਰਫ਼ ਅਧਿਕਾਰਤ ਵਰਤੋਂਕਾਰ ਨੂੰ ਲੋੜੀਂਦੀਆਂ ਘੋਸ਼ਣਾਵਾਂ ਹੀ ਸੀਮਾ ਪਾਰ ਕਰਨ।
ਖੋਜ ਅਤੇ ਵਰਤੋਂ ਵੱਖਰੇ ਨਤੀਜੇ ਰਹਿੰਦੇ ਹਨ। ਕਲਾਇੰਟ ਉਸ ਸੇਵਾ ਦੀ ਘੋਸ਼ਣਾ ਵੇਖ ਸਕਦਾ ਹੈ ਜਿਸਦਾ ਘੋਸ਼ਿਤ ਪਤਾ ਕਲਾਇੰਟ ਜਿੱਥੇ ਹੈ ਉੱਥੋਂ ਪਹੁੰਚ ਤੋਂ ਬਾਹਰ ਹੈ, ਜਾਂ ਜਿਸਦਾ ਪੋਰਟ ਉਸਦੀ ਪਹੁੰਚ ਨੀਤੀ ਨਾਮਨਜ਼ੂਰ ਕਰਦੀ ਹੈ। ਘੋਸ਼ਣਾ ਦਿਸਣ ਤੋਂ ਬਾਅਦ ਸੇਵਾ ਕਨੈਕਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ, ਅਤੇ ਜੇ ਐਪਲੀਕੇਸ਼ਨ ਸਥਿਰ DNS ਨਾਮ ਜਾਂ ਸਪਸ਼ਟ ਸਰਵਰ ਪਤਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ ਤਾਂ ਲਿੰਕ-ਸਥਾਨਕ ਖੋਜ ਵਧਾਉਣ ਦੀ ਬਜਾਏ ਉਸਨੂੰ ਤਰਜੀਹ ਦਿਓ। ਕ੍ਰਿਪਟੋਕੀ ਰੂਟਿੰਗ ਦਾ ਵੇਰਵਾ ਉਸ ਮੰਜ਼ਿਲ-ਆਧਾਰਿਤ ਸਾਥੀ ਚੋਣ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ ਜਿਸ ਉੱਤੇ ਇਹ ਸਭ ਨਿਰਭਰ ਹੈ।