WireGuard DNS DNAT: ਜਵਾਬ ਦਾ ਰਾਹ ਚਾਲੂ ਰੱਖੋ
DNAT ਮੰਜ਼ਿਲ ਨੂੰ ਮੁੜ ਲਿਖਦਾ ਹੈ, ਸਰੋਤ ਨੂੰ ਨਹੀਂ। ਨਿਯਮ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ ਤੈਅ ਕਰੋ ਕਿ ਅਪਸਟ੍ਰੀਮ ਰਿਜ਼ੋਲਵਰ ਕਿਵੇਂ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ, ਅਤੇ ਹਰ ਮੇਲ ਨੂੰ ਤੰਗ ਰੱਖੋ।
WireGuard ਕਲਾਇੰਟ ਦੀ DNS ਪੁੱਛਗਿੱਛ ਨੂੰ ਕਿਸੇ ਹੋਰ ਰਿਜ਼ੋਲਵਰ ਵੱਲ ਭੇਜਣਾ ਇੱਕ ਨਿਯਮ ਵਰਗਾ ਲੱਗਦਾ ਹੈ ਪਰ ਤਿੰਨ ਫੈਸਲਿਆਂ ਵਾਂਗ ਵਿਵਹਾਰ ਕਰਦਾ ਹੈ। ਮੰਜ਼ਿਲ ਮੁੜ ਲਿਖਣੀ ਪੈਂਦੀ ਹੈ, ਪੈਕਟ ਅੱਗੇ ਭੇਜਣਾ ਪੈਂਦਾ ਹੈ, ਅਤੇ ਜਵਾਬ ਨੂੰ ਗੇਟਵੇ ਵੱਲੋਂ ਬਣਾਈ ਗਈ ਅਨੁਵਾਦ ਅਵਸਥਾ ਵਿੱਚੋਂ ਵਾਪਸੀ ਦਾ ਰਾਹ ਲੱਭਣਾ ਪੈਂਦਾ ਹੈ। ਤੀਜਾ ਛੱਡ ਦਿਓ ਤਾਂ ਪੁੱਛਗਿੱਛ ਸਾਫ਼ ਨਿਕਲ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਕਿ ਕਲਾਇੰਟ ਸਦਾ ਲਈ ਉਡੀਕਦਾ ਰਹਿੰਦਾ ਹੈ।
10.77.0.0/24 ਵਿੱਚ ਅਧਿਕਾਰਤ ਕਲਾਇੰਟ wg0 ਰਾਹੀਂ ਆਉਂਦੇ ਹਨ, ਐਲਾਨਿਆ ਪਤਾ 10.77.0.1 ਪੁੱਛਦੇ ਹਨ ਅਤੇ 203.0.113.53 'ਤੇ ਰਿਜ਼ੋਲਵਰ ਚਾਹੀਦਾ ਹੈ — ਇਹ ਉਦਾਹਰਨ ਲਓ। ਅਪਸਟ੍ਰੀਮ ਪਤਾ ਦਸਤਾਵੇਜ਼ ਲਈ ਪਲੇਸਹੋਲਡਰ ਹੈ, ਚੱਲਦੀ ਸੇਵਾ ਨਹੀਂ।
ਪੁੱਛਗਿੱਛ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਨਾਲ ਸਿਰਫ਼ ਇਸ ਦੀ ਮੰਜ਼ਿਲ ਬਦਲਦੀ ਹੈ
PREROUTING ਵਿੱਚ ਮੰਜ਼ਿਲ-NAT ਨਿਯਮ ਰਾਊਟਿੰਗ ਫੈਸਲੇ ਤੋਂ ਪਹਿਲਾਂ ਪਤਾ ਮੁੜ ਲਿਖਦਾ ਹੈ, ਇਸ ਲਈ ਪੈਕਟ ਬਾਅਦ ਵਿੱਚ ਪੁਰਾਣੀ ਮੰਜ਼ਿਲ ਦੀ ਥਾਂ ਨਵੀਂ ਵੱਲ ਰਾਊਟ ਹੁੰਦਾ ਹੈ। ਕਲਾਇੰਟ ਦਾ ਸਰੋਤ ਪਤਾ ਉਸ ਕਾਰਵਾਈ ਨਾਲ ਅਛੂਤ ਰਹਿੰਦਾ ਹੈ। ਇਸੇ ਲਈ ਪੂਰਾ ਦਿਸਦਾ ਨਿਯਮ ਵੀ ਚੁੱਪ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ: ਬੇਨਤੀ ਹੁਣ ਇੱਕ ਅਜਿਹੇ ਰਿਜ਼ੋਲਵਰ ਕੋਲ ਜਾਂਦੀ ਹੈ ਜਿਸਨੇ ਕਲਾਇੰਟ ਦੀ ਨਿੱਜੀ ਰੇਂਜ ਬਾਰੇ ਕਦੇ ਨਹੀਂ ਸੁਣਿਆ। ਗੇਟਵੇ ਨੇ ਇੱਕ ਫ਼ੀਲਡ ਦਾ ਅਨੁਵਾਦ ਕੀਤਾ ਅਤੇ ਦੂਜੀ ਸਮੱਸਿਆ ਵਿਰਾਸਤ ਵਿੱਚ ਲਈ।
ਦੋਵੇਂ DNS ਟਰਾਂਸਪੋਰਟਾਂ ਨੂੰ ਮਿਲਦੇ ਨਿਯਮ ਚਾਹੀਦੇ ਹਨ, ਕਿਉਂਕਿ ਜਵਾਬ ਕੱਟਿਆ ਜਾਣ 'ਤੇ ਕਲਾਇੰਟ TCP 'ਤੇ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ।
ਹੇਠਾਂ ਦਿੱਤੇ ਨਿਯਮ ਇੱਕ ਆਉਣ ਵਾਲਾ ਇੰਟਰਫ਼ੇਸ, ਇੱਕ ਕਲਾਇੰਟ ਰੇਂਜ ਅਤੇ ਇੱਕ ਅਸਲੀ ਮੰਜ਼ਿਲ ਪਤਾ ਚੁਣਦੇ ਹਨ। ਗੇਟਵੇ 'ਤੇ ਹੋਰ ਕੁਝ ਵੀ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦਾ, ਅਤੇ ਗੇਟਵੇ ਦੀ ਆਪਣੀ ਪੁੱਛਗਿੱਛ ਬਿਲਕੁਲ ਨਹੀਂ ਮਿਲਦੀ।
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p udp --dport 53 -j DNAT --to-destination 203.0.113.53:53
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p tcp --dport 53 -j DNAT --to-destination 203.0.113.53:53
ਜਵਾਬ ਦਾ ਰਾਹ ਇੱਕ ਵੱਖਰਾ ਫੈਸਲਾ ਹੈ
ਦੋ ਬੰਦੋਬਸਤਾਂ ਜਵਾਬ ਨੂੰ ਵਾਪਸ ਆਉਣ ਦਿੰਦੀਆਂ ਹਨ, ਅਤੇ ਇੱਕ ਨੂੰ ਜਲਦੀ ਚੁਣਨਾ ਇੱਕ ਡੀਬੱਗਿੰਗ ਸੈਸ਼ਨ ਬਚਾਉਂਦਾ ਹੈ। ਜਾਂ ਤਾਂ ਅਪਸਟ੍ਰੀਮ ਰਿਜ਼ੋਲਵਰ ਕੋਲ ਇਸ ਗੇਟਵੇ ਰਾਹੀਂ 10.77.0.0/24 ਵੱਲ ਵਾਪਸੀ ਦਾ ਰੂਟ ਹੈ, ਜਾਂ ਗੇਟਵੇ ਨਿਕਾਸ 'ਤੇ ਸਰੋਤ ਦਾ ਅਨੁਵਾਦ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਜਵਾਬ ਅਜਿਹੇ ਪਤੇ 'ਤੇ ਪਹੁੰਚੇ ਜੋ ਅਪਸਟ੍ਰੀਮ ਪਹਿਲਾਂ ਹੀ ਜਾਣਦਾ ਹੈ। ਦੋਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ; ਅਪਸਟ੍ਰੀਮ 'ਤੇ ਤੁਹਾਡੇ ਨਿਯੰਤਰਣ ਨਾਲ ਸਿਰਫ਼ ਇੱਕ ਮਿਲਦਾ ਹੈ।
ਰਾਊਟਿੰਗ ਪਹਿਲੇ ਯਤਨ ਦੀ ਹੱਕਦਾਰ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਕਲਾਇੰਟ ਦਾ ਪਤਾ ਰਿਜ਼ੋਲਵਰ ਲਈ ਦਿੱਸਦਾ ਰੱਖਦੀ ਹੈ ਅਤੇ ਦੂਜੀ ਅਨੁਵਾਦ ਪਰਤ ਤੋਂ ਬਚਦੀ ਹੈ। ਜਦੋਂ ਅਪਸਟ੍ਰੀਮ ਤੁਹਾਡੇ ਨਿਯੰਤਰਣ ਤੋਂ ਬਾਹਰ ਹੋਵੇ, ਤਾਂ ਖ਼ਾਸ ਨਿਕਾਸ ਇੰਟਰਫ਼ੇਸ 'ਤੇ ਸਰੋਤ ਦਾ ਅਨੁਵਾਦ ਵਿਹਾਰਕ ਚੋਣ ਹੈ।
ਉਸ ਅਨੁਵਾਦ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਜਿੰਨਾ ਹੀ ਸਖ਼ਤ ਸੀਮਤ ਰੱਖੋ, ਨਹੀਂ ਤਾਂ ਨਿਯਮ ਉਸ ਨਾਲ ਸੰਜੋਗਵੱਸ਼ ਮਿਲਣ ਵਾਲੀ ਹਰ ਚੀਜ਼ ਲਈ ਆਮ ਮਕਸਦ ਦਾ NAT ਬਣ ਜਾਵੇਗਾ:
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p udp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p tcp --dport 53 -j MASQUERADE
ਕਨੈਕਸ਼ਨ ਟ੍ਰੈਕਿੰਗ ਮੈਪਿੰਗ ਨੂੰ ਜੋੜੀ ਵਿੱਚ ਰੱਖਦੀ ਹੈ, ਇਸ ਲਈ ਵਾਪਸ ਆਉਂਦੇ ਸਮੇਂ ਜਵਾਬ ਕਲਾਇੰਟ ਦੇ ਮੂਲ ਟਿਊਪਲ ਵਿੱਚ ਮੁੜ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ। ਨਿਕਾਸ ਨਿਯਮ ਤੋਂ ਬਿਨਾਂ, ਰਿਜ਼ੋਲਵਰ ਆਪਣਾ ਜਵਾਬ ਅਜਿਹੇ ਨਿੱਜੀ ਪਤੇ 'ਤੇ ਭੇਜਦਾ ਹੈ ਜਿੱਥੇ ਪਹੁੰਚ ਨਹੀਂ ਸਕਦਾ, ਅਤੇ ਕਲਾਇੰਟ ਗਲਤੀ ਦੀ ਥਾਂ ਸਮਾਂ ਸਮਾਪਤੀ ਦੇਖਦਾ ਹੈ।
ਨਿਯਮ ਕੰਮ ਦਿੱਸਣ ਨਾਲੋਂ ਤੰਗ ਲਿਖੋ
ਫਾਰਵਰਡਿੰਗ ਇਜਾਜ਼ਤ ਉਸੇ ਘੇਰੇ ਦੀ ਹੈ। ਮਸ਼ੀਨ 'ਤੇ ਹਰ DNAT ਕਨੈਕਸ਼ਨ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਥਾਂ ਕਲਾਇੰਟ ਤੋਂ ਰਿਜ਼ੋਲਵਰ ਵੱਲ ਵਹਾਅ ਅਤੇ ਉਹ ਵਾਪਸੀ ਟ੍ਰੈਫ਼ਿਕ ਮਨਜ਼ੂਰ ਕਰੋ ਜਿਸਨੂੰ conntrack ਪਹਿਲਾਂ ਹੀ ਪਛਾਣਦਾ ਹੈ। ਵਿਆਪਕ ਮਨਜ਼ੂਰੀ DNS ਨਾਲ ਕੋਈ ਸੰਬੰਧ ਨਾ ਰੱਖਣ ਵਾਲੇ ਪੋਰਟ ਫਾਰਵਰਡਿੰਗ ਨੂੰ ਵੀ ਅਧਿਕਾਰ ਦਿੰਦੀ ਹੈ।
ਗੇਟਵੇ ਦਾ ਆਪਣਾ ਰਿਜ਼ੋਲਵਰ ਇੱਕ ਵੱਖਰਾ ਕੋਡ ਰਾਹ ਹੈ। ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਜਾਰੀ ਪੁੱਛਗਿੱਛ OUTPUT ਵਿੱਚੋਂ ਲੰਘਦੀ ਹੈ, ਇਸ ਲਈ ਗੇਟਵੇ ਸ਼ੈੱਲ ਤੋਂ ਜਾਂਚ PREROUTING ਨਿਯਮ ਜਾਂ ਫਾਰਵਰਡਿੰਗ ਨੀਤੀ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਅਭਿਆਸ ਨਹੀਂ ਕਰਦੀ। ਇਸੇ ਲਈ ਸਥਾਨਕ ਜਾਂਚ ਪਾਸ ਹੋ ਸਕਦੀ ਹੈ ਜਦੋਂ ਕਿ ਹਰ ਕਲਾਇੰਟ ਫੇਲ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਉਲਟ ਵੀ ਓਨਾ ਹੀ ਆਮ ਹੈ।
ਇੱਥੇ ਕੁਝ ਵੀ ਪੋਰਟ 443 'ਤੇ HTTPS ਉੱਤੇ DNS ਜਾਂ ਪੋਰਟ 853 'ਤੇ TLS ਉੱਤੇ DNS ਨੂੰ ਕਵਰ ਨਹੀਂ ਕਰਦਾ, ਅਤੇ ਕੁਝ ਵੀ IPv6 ਨੂੰ ਕਵਰ ਨਹੀਂ ਕਰਦਾ। IPv6 ਰਿਜ਼ੋਲਵਰ ਸੰਰਚਿਤ ਕਲਾਇੰਟ ਪੂਰੀ ਬੰਦੋਬਸਤ ਨੂੰ ਖ਼ੁਸ਼ੀ ਨਾਲ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰੇਗਾ।
ਨਵੀਂ ਪੁੱਛਗਿੱਛ ਕੀ ਸਾਬਤ ਕਰਦੀ ਹੈ
ਕਨੈਕਸ਼ਨ ਟ੍ਰੈਕਿੰਗ ਪਿਛਲੀਆਂ ਮੈਪਿੰਗਾਂ ਯਾਦ ਰੱਖਦੀ ਹੈ, ਇਸ ਲਈ ਨਿਯਮ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਭੇਜੀ ਪੁੱਛਗਿੱਛ ਪੁਰਾਣੀ ਅਵਸਥਾ ਤੋਂ ਜਵਾਬ ਪਾ ਸਕਦੀ ਹੈ ਅਤੇ ਨਵੇਂ ਨਿਯਮ ਨੂੰ ਟੁੱਟਿਆ ਦਿਖਾ ਸਕਦੀ ਹੈ। ਨਵੇਂ ਸਰੋਤ ਪੋਰਟ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ, ਜਿੱਥੇ ਕਲਾਇੰਟ ਜਵਾਬ ਕੈਸ਼ ਕਰਦਾ ਹੈ, ਨਵੇਂ ਨਾਮ ਨਾਲ।
dig @10.77.0.1 example.com A +short
conntrack -L -p udp --dport 53 | head
ਪਹਿਲਾ ਕਮਾਂਡ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਲਾਇੰਟ ਰਾਹ ਬਿਲਕੁਲ ਹੱਲ ਹੁੰਦਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਅਤੇ ਦੂਜਾ ਉਹ ਅਨੁਵਾਦ ਦਿਖਾਉਂਦਾ ਹੈ ਜੋ ਗੇਟਵੇ ਨੇ ਅਸਲ ਵਿੱਚ ਸਥਾਪਿਤ ਕੀਤਾ, ਟਿਊਪਲ ਦੀਆਂ ਦੋਵੇਂ ਦਿਸ਼ਾਵਾਂ ਸਮੇਤ। ਸਹੀ ਰਿਜ਼ੋਲਵਰ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀ ਪਰ ਜਵਾਬ ਕਾਊਂਟਰ ਜ਼ੀਰੋ 'ਤੇ ਅਟਕੀ ਮੈਪਿੰਗ ਫਿਲਟਰ ਦੀ ਸਮੱਸਿਆ ਨਹੀਂ, ਵਾਪਸੀ ਰਾਹ ਦੀ ਸਮੱਸਿਆ ਹੈ।
ਕੁਝ ਵੀ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਰਿਜ਼ੋਲਵਰ ਉਹ ਨਾਮ ਜਾਣਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਤੁਸੀਂ ਉਮੀਦ ਕਰਦੇ ਹੋ। ਅਜਿਹਾ ਬਦਲ ਜੋ ਜਨਤਕ ਨਾਮਾਂ ਦਾ ਜਵਾਬ ਦਿੰਦਾ ਹੈ ਪਰ ਤੁਹਾਡੇ ਨਿੱਜੀ ਜ਼ੋਨ ਦਾ ਨਹੀਂ ਇੱਕ ਚੱਲਦੀ ਖੋਜ ਨੂੰ NXDOMAIN ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ ਜੋ ਟੁੱਟੀ ਟਨਲ ਵਰਗਾ ਦਿਸਦਾ ਹੈ। ਕਲਾਇੰਟ ਰਾਹ ਸ਼ਾਮਲ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਗੇਟਵੇ ਤੋਂ ਸਿੱਧਾ ਰਿਜ਼ੋਲਵਰ ਜਾਂਚੋ। ਅਤੇ iptables ਐਕਸਟੈਂਸ਼ਨ ਹਵਾਲਾ ਉਸ DNAT ਅਤੇ masquerade ਅਰਥਸ਼ਾਸਤਰ ਦਾ ਦਸਤਾਵੇਜ਼ੀਕਰਣ ਕਰਦਾ ਹੈ ਜਿਸ 'ਤੇ ਇਹ ਨਿਯਮ ਨਿਰਭਰ ਕਰਦੇ ਹਨ।