WireGuard ਹੈਂਡਸ਼ੇਕ ਕੰਮ ਕਰਦਾ ਹੈ, ਪਰ ਦਫ਼ਤਰ ਦਾ ਸਬਨੈੱਟ ਜਵਾਬ ਨਹੀਂ ਦਿੰਦਾ
WireGuard ਚਾਲੂ ਹੈ ਅਤੇ ਸਰਵਰ ਨੂੰ ਪਿੰਗ ਜਾਂਦਾ ਹੈ, ਪਰ ਇਸਦੇ LAN ਉੱਤੇ ਕੁਝ ਵੀ ਜਵਾਬ ਨਹੀਂ ਦਿੰਦਾ। ਕਲਾਇੰਟ ਪ੍ਰੀਫਿਕਸ, ਸਰਵਰ ਫਾਰਵਰਡਿੰਗ ਅਤੇ ਜਵਾਬ ਦਾ ਰਾਹ ਜਾਂਚੋ।
ਹੈਂਡਸ਼ੇਕ ਪੂਰਾ ਹੁੰਦਾ ਹੈ, wg show ਹਾਲੀਆ ਟ੍ਰਾਂਸਫਰ ਦੀ ਜਾਣਕਾਰੀ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਸਰਵਰ ਦਾ ਟਨਲ ਪਤਾ ਪਿੰਗ ਦਾ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਪਰ ਸਰਵਰ ਦੇ LAN ਉੱਤੇ ਇੱਕ ਹੋਸਟ ਨਹੀਂ ਦਿੰਦਾ। ਤਿੰਨ ਸ਼ਰਤਾਂ ਇੱਕੋ ਸਮੇਂ ਪੂਰੀਆਂ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ: ਕਲਾਇੰਟ ਨੂੰ LAN ਪ੍ਰੀਫਿਕਸ ਟਨਲ ਵਿੱਚ ਰੂਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਸਰਵਰ ਨੂੰ ਪੈਕਟ ਫਾਰਵਰਡ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ, ਅਤੇ ਜਵਾਬ ਨੂੰ ਵਾਪਸੀ ਦਾ ਰਾਹ ਚਾਹੀਦਾ ਹੈ। ਤਿੰਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਖੁੰਝੇ ਤਾਂ ਲੱਛਣ ਉਹੀ ਰਹਿੰਦਾ ਹੈ।
AllowedIPs ਇੱਕੋ ਸਮੇਂ ਪਹੁੰਚ ਸੂਚੀ ਅਤੇ ਰੂਟਿੰਗ ਸਾਰਣੀ ਹੈ
ਕਲਾਇੰਟ ਉੱਤੇ, AllowedIPs ਸੂਚੀ ਉਸ ਪੀਅਰ ਨੂੰ ਕੀ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ WireGuard ਕਿਹੜੇ ਰੂਟ ਇੰਸਟਾਲ ਕਰਦਾ ਹੈ ਦੋਵੇਂ ਤੈਅ ਕਰਦੀ ਹੈ। ਸਿਰਫ਼ ਸਰਵਰ ਦਾ ਟਨਲ ਪਤਾ ਸੂਚੀਬੱਧ ਕਰਨ ਵਾਲੀ ਪੀਅਰ ਐਂਟਰੀ ਇੱਕ ਹੋਸਟ ਰੂਟ ਇੰਸਟਾਲ ਕਰਦੀ ਹੈ, ਇਸ ਲਈ LAN ਦੇ ਟਿਕਾਣੇ ਕਦੇ ਟਨਲ ਵਿੱਚ ਨਹੀਂ ਆਉਂਦੇ। LAN ਪ੍ਰੀਫਿਕਸ ਜੋੜਨਾ ਪਹਿਲੀ ਜਾਂਚਣ ਵਾਲੀ ਚੀਜ਼ ਹੈ, ਅਤੇ ਕਾਪੀ ਕੀਤੀ ਕਾਨਫਿਗਰੇਸ਼ਨ ਤੋਂ ਬਾਅਦ ਸਭ ਤੋਂ ਵੱਧ ਖੁੰਝਣ ਵਾਲਾ ਬਦਲਾਅ ਵੀ ਇਹੀ ਹੈ। ਡਿਫਾਲਟ ਰੂਟ ਤੱਕ ਫੈਲਾਇਆ ਪੀਅਰ ਵੱਖਰਾ ਡਿਜ਼ਾਈਨ ਹੈ, ਅਤੇ ਇਹ ਕਲਾਇੰਟ ਦਾ ਇੰਟਰਨੈੱਟ ਟ੍ਰੈਫਿਕ ਵੀ ਹਿਲਾ ਦੇਵੇਗਾ।
ਹੋਸਟ ਰੂਟ ਅਤੇ LAN ਪ੍ਰੀਫਿਕਸ ਨੂੰ ਵੱਖਰੀਆਂ ਐਂਟਰੀਆਂ ਵਜੋਂ ਰੱਖੋ। ਜੇ ਦਫ਼ਤਰ ਵਿੱਚ ਦੋ ਸਬਨੈੱਟ ਹਨ, ਦੋਵੇਂ ਸੂਚੀ ਵਿੱਚ ਆਉਂਦੇ ਹਨ, ਅਤੇ ਖੁੰਝਦਾ ਦੂਜਾ ਪ੍ਰੀਫਿਕਸ ਪੂਰੀ ਨਹੀਂ ਸਗੋਂ ਚੋਣਵੀਂ ਦਿਸਣ ਵਾਲੀ ਅਸਫਲਤਾ ਪੈਦਾ ਕਰਦਾ ਹੈ।
[Peer] PublicKey = <server public key> Endpoint = vpn.example.net:51820 AllowedIPs = 10.66.0.1/32, 192.168.50.0/24
ਫਾਰਵਰਡਿੰਗ ਅਤੇ ਅਨੁਵਾਦ ਸਰਵਰ ਉੱਤੇ ਹੀ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ
ਸਰਵਰ ਨੂੰ IP ਫਾਰਵਰਡਿੰਗ ਸਮਰੱਥ, ਟਨਲ ਤੋਂ ਆਉਣ ਵਾਲਾ ਟ੍ਰੈਫਿਕ ਸਵੀਕਾਰ ਕਰਨ ਵਾਲਾ ਫਾਰਵਰਡ ਨਿਯਮ, ਅਤੇ ਆਪਣੇ LAN ਇੰਟਰਫੇਸ ਵੱਲ ਅਨੁਵਾਦ ਨਿਯਮ ਚਾਹੀਦਾ ਹੈ। ਅਨੁਵਾਦ ਹੀ ਦਫ਼ਤਰ ਨੈੱਟਵਰਕ ਦੇ ਹਰ ਹੋਸਟ ਨੂੰ ਛੂਹੇ ਬਿਨਾਂ ਡਿਜ਼ਾਈਨ ਨੂੰ ਕੰਮ ਕਰਾਉਂਦਾ ਹੈ। ਫਿਰ ਜਵਾਬ LAN ਨੇ ਕਦੇ ਨਾ ਸੁਣੀ ਅਜਿਹੀ ਪਤੇ ਉੱਤੇ ਨਹੀਂ, ਸਗੋਂ ਸਰਵਰ ਉੱਤੇ ਵਾਪਸ ਆਉਂਦੇ ਹਨ। ਇਸ ਤੋਂ ਬਿਨਾਂ ਹਰ ਹੋਸਟ ਨੂੰ ਟਨਲ ਸਬਨੈੱਟ ਲਈ ਰੂਟ ਅਤੇ ਇਸ ਨੂੰ ਮਨਜ਼ੂਰੀ ਦੇਣ ਵਾਲਾ ਫਾਇਰਵਾਲ ਨਿਯਮ ਚਾਹੀਦਾ ਹੈ, ਜੋ ਕਿਸੇ ਹੋਰ ਵੱਲੋਂ ਸੰਭਾਲੇ ਨੈੱਟਵਰਕ ਉੱਤੇ ਘੱਟ ਹੀ ਮਨਜ਼ੂਰ ਹੁੰਦਾ ਹੈ।
sysctl -w net.ipv4.ip_forward=1 iptables -A FORWARD -i wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ਹੱਥ ਨਾਲ ਜੋੜੇ ਨਿਯਮ ਰੀਬੂਟ ਉੱਤੇ ਗਾਇਬ ਹੋ ਜਾਂਦੇ ਹਨ, ਇਸ ਲਈ ਸਰਵਰ ਕਾਨਫਿਗਰੇਸ਼ਨ ਦੇ hook ਕਮਾਂਡਾਂ ਨਾਲ ਉਹਨਾਂ ਨੂੰ ਇੰਟਰਫੇਸ ਨਾਲ ਬੰਨ੍ਹੋ। ਜੋ ਨਿਯਮ ਸਮੂਹ ਆਪਣੇ ਇੰਟਰਫੇਸ ਤੋਂ ਵੱਧ ਜੀਵੇ, ਉਸੇ ਤਰ੍ਹਾਂ ਮਸ਼ੀਨ ਉਸ ਟਨਲ ਲਈ ਟ੍ਰੈਫਿਕ ਦਾ ਅਨੁਵਾਦ ਕਰਨ ਲੱਗਦੀ ਹੈ ਜੋ ਹੁਣ ਮੌਜੂਦ ਨਹੀਂ।
ਜਦੋਂ LAN ਹਿਲਿਆ ਪਰ ਨਿਯਮ ਨਹੀਂ
ਦਫ਼ਤਰ ਸਬਨੈੱਟ ਦੀ ਮੁੜ-ਨੰਬਰਿੰਗ ਕਰਨ ਵਾਲਾ ਰਾਊਟਰ ਬਦਲਣਾ ਇਸ ਅਸਫਲਤਾ ਦਾ ਕਲਾਸਿਕ ਰੂਪ ਹੈ। ਟਨਲ ਚਾਲੂ ਰਹਿੰਦਾ ਹੈ, ਹੈਂਡਸ਼ੇਕ ਤਾਜ਼ਾ ਰਹਿੰਦਾ ਹੈ, ਅਤੇ ਸਰਵਰ ਪਿੱਛੇ ਕੁਝ ਵੀ ਜਵਾਬ ਨਹੀਂ ਦਿੰਦਾ, ਕਿਉਂਕਿ ਅਨੁਵਾਦ ਨਿਯਮ ਅਜੇ ਵੀ ਪੁਰਾਣੇ ਪਤੇ ਦਾ ਨਾਮ ਲੈਂਦਾ ਹੈ। ਇੰਸਟਾਲਰ ਸਕ੍ਰਿਪਟਾਂ ਅਕਸਰ ਸਰਵਰ ਦਾ LAN ਪਤਾ POSTROUTING ਨਿਯਮ ਵਿੱਚ ਪਾ ਦਿੰਦੀਆਂ ਹਨ, ਅਤੇ ਮੁੜ-ਨੰਬਰਿੰਗ ਤੋਂ ਬਾਅਦ ਉਹ ਪਤਾ ਕਿਸੇ ਇੰਟਰਫੇਸ ਉੱਤੇ ਨਹੀਂ ਹੁੰਦਾ। ਫਿਰ ਪੈਕਟ ਜਵਾਬ ਨਾ ਦੇ ਸਕਣ ਵਾਲੇ ਟਿਕਾਣੇ ਵੱਲ ਮੁੜ ਲਿਖੇ ਜਾਂਦੇ ਹਨ।
iptables -t nat -n -L POSTROUTING ip -br addr show
ਦੋਵੇਂ ਆਉਟਪੁੱਟ ਦੀ ਤੁਲਨਾ ਕਰੋ। ਇੰਟਰਫੇਸ ਸੂਚੀ ਵਿੱਚ ਨਾ ਦਿਸਣ ਵਾਲਾ ਅਨੁਵਾਦ ਟੀਚਾ ਹੀ ਬੱਗ ਹੈ, ਅਤੇ ਇੱਕ ਵਾਰ ਵੇਖ ਲੈਣ ਤੋਂ ਬਾਅਦ ਇਸਨੂੰ ਠੀਕ ਕਰਨਾ ਇੱਕ ਲਾਈਨ ਦਾ ਬਦਲਾਅ ਹੈ। ਨਿਯਮ WireGuard ਕਾਨਫਿਗਰੇਸ਼ਨ ਵਿੱਚ ਨਹੀਂ ਸਗੋਂ ਬਣਾਏ ਗਏ unit ਵਿੱਚ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਸੰਪਾਦਨ ਤੋਂ ਬਾਅਦ ਉਹ unit ਮੁੜ ਲੋਡ ਕਰੋ ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਅਗਲਾ ਬੂਟ ਤੁਹਾਡਾ ਬਦਲਾਅ ਮੁੜ ਨਹੀਂ ਲਿਖਦਾ।
NAT ਪਿੱਛੇ ਦੇ ਦੋ ਸਾਈਟਾਂ ਨੂੰ ਮਿਲਣ ਦੀ ਥਾਂ ਚਾਹੀਦੀ ਹੈ
ਜਦੋਂ ਕੋਈ ਵੀ ਧਿਰ ਅੰਦਰ ਆਉਣ ਵਾਲੇ ਕਨੈਕਸ਼ਨ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰਦੀ, ਤਾਂ ਵਿਹਾਰਕ ਜਵਾਬ ਹੈ ਜਨਤਕ ਪਤਾ ਅਤੇ ਦੋ WireGuard ਇੰਟਰਫੇਸ ਵਾਲਾ ਛੋਟਾ ਹੋਸਟ। ਹਰ ਸਾਈਟ ਬਾਹਰ ਵੱਲ ਜੁੜਦੀ ਹੈ, ਵਿਚਕਾਰਲਾ ਹੋਸਟ ਹਰ ਪੀਅਰ ਦਾ LAN ਆਪਣੇ AllowedIPs, ਯਾਨੀ ਆਪਣੀ ਸੂਚੀ ਵਿੱਚ, ਸੂਚੀਬੱਧ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਾਰਵਰਡਿੰਗ ਦੋਵੇਂ ਟਨਲਾਂ ਵਿਚਕਾਰ ਪੈਕਟ ਲੈ ਜਾਂਦੀ ਹੈ। ਕਿਸੇ ਵੀ ਸਾਈਟ ਦੇ ਫਾਇਰਵਾਲ ਵਿੱਚ ਕੁਝ ਬਦਲਣ ਦੀ ਲੋੜ ਨਹੀਂ, ਇਸ ਲਈ ਇਹ ਡਿਜ਼ਾਈਨ ਆਸਾਨੀ ਨਾਲ ਫੈਲਦਾ ਹੈ।
ਸਾਈਟਾਂ ਵਿਚਕਾਰ ਰੂਟਿੰਗ ਮੂਲ ਸਰੋਤ ਪਤੇ ਰੱਖਦੀ ਹੈ ਅਤੇ ਇਸ ਲਈ ਪ੍ਰਤੀ-ਹੋਸਟ ਲਾਗਿੰਗ ਨੂੰ ਅਰਥਪੂਰਨ ਰੱਖਦੀ ਹੈ। ਜਦੋਂ ਦੋਵੇਂ LAN ਓਵਰਲੈਪ ਹੁੰਦੇ ਹਨ ਤਾਂ ਵਿਚਕਾਰਲੇ ਹੋਸਟ ਉੱਤੇ ਅਨੁਵਾਦ ਕਰਨਾ ਸੌਖਾ ਹੈ, ਪਰ ਲਾਗਾਂ ਵਿੱਚ ਸਰੋਤ ਦੀ ਪਛਾਣ ਗੁਆਉਣ ਦੀ ਕੀਮਤ ਉੱਤੇ। ਚੁਣਨ ਤੋਂ ਪਹਿਲਾਂ ਤੈਅ ਕਰੋ ਕਿ ਕਿਹੜਾ ਗੁਣ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਚਾਰ ਜਾਂਚਾਂ ਨਾਲ ਪਰਤਾਂ ਨੂੰ ਵੱਖ ਕਰੋ
ਤਿੰਨ ਚੀਜ਼ਾਂ ਬਦਲ ਕੇ ਆਸ ਰੱਖਣ ਦੀ ਥਾਂ ਹਰ ਪਰਤ ਲਈ ਇੱਕ ਜਾਂਚ ਕਰੋ। ਪਹਿਲੀ ਹਰ ਪੀਅਰ ਲਈ ਹੈਂਡਸ਼ੇਕ ਦੀ ਉਮਰ ਅਤੇ ਕਾਊਂਟਰ ਦਿਖਾਉਂਦੀ ਹੈ। ਦੂਜੀ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਕਲਾਇੰਟ ਉਸ ਟਿਕਾਣੇ ਨੂੰ ਸੱਚਮੁੱਚ ਟਨਲ ਵਿੱਚ ਰੂਟ ਕਰਦਾ ਹੈ ਜਾਂ ਨਹੀਂ। ਤੀਜੀ ਅਤੇ ਚੌਥੀ ਦੱਸਦੀਆਂ ਹਨ ਕਿ ਬੇਨਤੀ ਪਹੁੰਚੀ ਜਾਂ ਨਹੀਂ ਅਤੇ ਪਹੁੰਚਣ ਤੋਂ ਬਾਅਦ ਕਿਸੇ ਨੀਤੀ ਨੇ ਇਸਨੂੰ ਡੇਗ ਦਿੱਤਾ ਜਾਂ ਨਹੀਂ।
wg show ip route get 192.168.50.20 tcpdump -ni wg0 icmp iptables -vnL FORWARD --line-numbers
ਪਹੁੰਚ ਕੇ ਵੀ ਜਵਾਬ ਨਾ ਲਿਆਉਣ ਵਾਲੀ ਬੇਨਤੀ ਜਵਾਬ ਦੇ ਰਾਹ ਵੱਲ ਜਾਂ LAN ਹੋਸਟ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀ ਹੈ। ਕਦੇ ਨਾ ਪਹੁੰਚਣ ਵਾਲੀ ਬੇਨਤੀ AllowedIPs ਜਾਂ ਕਲਾਇੰਟ ਦੇ ਰੂਟ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀ ਹੈ। ਇਹਨਾਂ ਦੋ ਨਤੀਜਿਆਂ ਲਈ ਵੱਖਰੀ ਸੋਧ ਚਾਹੀਦੀ ਹੈ, ਅਤੇ ਕੈਪਚਰ ਹੀ ਉਹਨਾਂ ਨੂੰ ਵੱਖ ਕਰਦਾ ਹੈ।