DNS ਨਾਲ ਭਰਿਆ nftables ਸੈੱਟ WireGuard ਤੱਕ: ਹੈਂਡਓਫ਼ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ
DNS ਜਵਾਬ nftables ਸੈੱਟ ਭਰ ਸਕਦਾ ਹੈ, ਪਰ ਸੈੱਟ ਆਪ ਕੁਝ ਵੀ ਰੂਟ ਨਹੀਂ ਕਰਦਾ। ਚਾਰ ਹੈਂਡਓਫ਼ ਅਤੇ ਤਿੰਨ ਆਯੂ ਦਾ ਪਾਲਣ ਕਰੋ ਜੋ ਤੈਅ ਕਰਦੇ ਹਨ ਕਿ ਸਟੀਅਰਿੰਗ ਕੰਮ ਕਰੇਗੀ ਜਾਂ ਨਹੀਂ।
ਨਾਮ ਪਤਿਆਂ ਵਿੱਚ ਹੱਲ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਉਹ ਪਤੇ ਫਾਇਰਵਾਲ ਸੈੱਟ ਵਿੱਚ ਪੈ ਸਕਦੇ ਹਨ ਜੋ ਬਾਅਦ ਵਿੱਚ ਰੂਟਿੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਪ੍ਰੌਕਸੀ ਤੋਂ ਬਿਨਾਂ ਨਾਮ-ਆਧਾਰਿਤ ਸਟੀਅਰਿੰਗ ਸੰਭਵ ਹੋ ਜਾਂਦੀ ਹੈ। ਪੇਚ ਇਹ ਹੈ ਕਿ ਚਾਰ ਹਿੱਸਿਆਂ ਨੇ ਠੀਕ ਤਰ੍ਹਾਂ ਹੈਂਡਓਫ਼ ਕਰਨਾ ਹੁੰਦਾ ਹੈ: ਰਿਜ਼ਾਲਵਰ, ਸੈੱਟ, ਨਵੇਂ ਫਲੋ ਨੂੰ ਨਿਸ਼ਾਨ ਲਗਾਉਣ ਵਾਲਾ ਵਰਗੀਕਰਨਕਰਤਾ, ਅਤੇ ਇਸ ਨੂੰ ਢੋਣ ਵਾਲਾ ਪੀਅਰ। ਹਰ ਹੈਂਡਓਫ਼ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਫੇਲ੍ਹ ਹੁੰਦਾ ਹੈ ਅਤੇ ਹਰ ਇੱਕ ਆਪਣਾ ਸਮਾਂ ਰੱਖਦਾ ਹੈ।
ਡਿਜ਼ਾਈਨ ਨੂੰ ਕਨਫ਼ਿਗਰੇਸ਼ਨ ਨਹੀਂ, ਸਗੋਂ ਸੰਗਲੀ ਸਮਝੋ। ਹਰ ਕਦਮ ਤੇ ਸਵਾਲ ਇਹ ਹੈ ਕਿ ਕਿਹੜਾ ਹਿੱਸਾ ਫ਼ੈਸਲੇ ਦਾ ਮਾਲਕ ਹੈ ਅਤੇ ਜਦੋਂ ਉਸ ਦਾ ਇਨਪੁਟ ਨਾ ਹੋਵੇ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ।
DNS ਜਵਾਬ ਕੀ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਕੀ ਨਹੀਂ
dnsmasq ਜਵਾਬਾਂ ਵਿੱਚੋਂ ਪਤੇ nftables ਸੈੱਟ ਵਿੱਚ ਕਾਪੀ ਕਰ ਸਕਦਾ ਹੈ, ਇਹ ਭਰਨਾ ਹੈ, ਰੂਟਿੰਗ ਫ਼ੈਸਲਾ ਨਹੀਂ। ਉਹ ਚੋਣ, dnsmasq ਮੈਨੂਅਲ ਵਿੱਚ ਦਰਜ, ਪਰਿਵਾਰ, ਟੇਬਲ ਅਤੇ ਸੈੱਟ ਦਾ ਨਾਮ ਦਿੰਦੀ ਹੈ, ਅਤੇ ਇਸ ਦਾ ਸ਼ੁਰੂਆਤੀ 4# ਸਿਰਫ਼ A ਰਿਕਾਰਡ ਚੁਣਦਾ ਹੈ, ਇਸ ਲਈ v6 ਮੰਜ਼ਿਲਾਂ ਨੂੰ ਆਪਣਾ ਪ੍ਰਬੰਧ ਚਾਹੀਦਾ ਹੈ। ਸੈੱਟ ਪਹਿਲਾਂ ਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਕਿਉਂਕਿ ਰਿਜ਼ਾਲਵਰ ਉਸ ਚੀਜ਼ ਵਿੱਚ ਤੱਤ ਜੋੜਦਾ ਹੈ ਜੋ ਫਾਇਰਵਾਲ ਦੇ ਮਾਲਕ ਨੇ ਬਣਾਈ। ਉਸ ਕਦਮ ਤੇ ਕੁਝ ਵੀ ਇੰਟਰਫ਼ੇਸ, ਟੇਬਲ ਜਾਂ ਪੀਅਰ ਨਹੀਂ ਚੁਣਦਾ।
ਕਲਾਇੰਟ ਨੂੰ ਵੀ ਨਾਮ ਲਈ ਉਹੀ ਰਿਜ਼ਾਲਵਰ ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ। ਆਪਣਾ ਐਨਕ੍ਰਿਪਟਿਡ DNS ਵਾਲਾ ਐਪ, ਜਾਂ ਨੀਤੀ ਤੋਂ ਪਹਿਲਾਂ ਦਾ ਕੈਸ਼ ਜਵਾਬ, ਸੈੱਟ ਵਿੱਚ ਕੋਈ ਐਂਟਰੀ ਬਣਾਏ ਬਿਨਾਂ ਜੁੜ ਜਾਂਦਾ ਹੈ।
ਸੈੱਟ ਇਨਪੁਟ ਹੈ, ਰੂਟ ਨਹੀਂ
ਸੈੱਟ ਵਿੱਚਲਾ ਤੱਤ ਮੇਲ ਦੀ ਸ਼ਰਤ ਹੈ। ਕਿਸੇ ਨੇ ਇਸ ਨੂੰ ਵੇਖਣਾ, ਤੈਅ ਕਰਨਾ ਕਿ ਇਹ ਪੈਕਟ ਨਵਾਂ ਫਲੋ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ, ਅਤੇ ਉਹ ਨੀਤੀ ਲਾਗੂ ਕਰਨੀ ਹੈ ਜੋ ਫਲੋ ਨੂੰ ਟਨਲ ਰਾਹੀਂ ਭੇਜਦੀ ਹੈ। Linux ਤੇ ਇਸ ਦਾ ਆਮ ਅਰਥ ਹੈ ਰੂਟ-ਸਮਰੱਥ ਆਉਟਪੁਟ ਮਾਰਗ ਜੋ ਨਿਸ਼ਾਨ ਲਗਾ ਸਕੇ, ਇੱਕ ਨਿਯਮ ਜੋ ਨਿਸ਼ਾਨ ਲੱਗੇ ਪੈਕਟਾਂ ਨੂੰ ਸਮਰਪਿਤ ਟੇਬਲ ਵਿੱਚ ਭੇਜੇ, ਅਤੇ ਉਸ ਟੇਬਲ ਵਿੱਚ WireGuard ਡਿਵਾਈਸ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦਾ ਰੂਟ। ਸਿਰਫ਼ ਮੈਂਬਰਸ਼ਿਪ ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੁਝ ਵੀ ਸਥਾਪਿਤ ਨਹੀਂ ਕਰਦੀ।
nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips
ਪੀਅਰ ਦੂਜੀ ਕਵਰੇਜ ਜਾਂਚ ਲਾਗੂ ਕਰਦਾ ਹੈ ਜਿਸ ਨੂੰ ਲੋਕ ਭੁੱਲ ਜਾਂਦੇ ਹਨ। WireGuard ਪੈਕਟ ਨੂੰ ਸਿਰਫ਼ ਉਸ ਪੀਅਰ ਲਈ ਐਨਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ ਜਿਸ ਦੇ ਮਨਜ਼ੂਰ ਪਤਿਆਂ ਵਿੱਚ ਮੰਜ਼ਿਲ ਸ਼ਾਮਲ ਹੋਵੇ, ਇਸ ਲਈ ਪੀਅਰ ਦੀ ਸੂਚੀ ਉਹ ਪ੍ਰੀਫ਼ਿਕਸ ਛੱਡ ਦੇਵੇ ਤਾਂ ਇੰਟਰਫ਼ੇਸ ਵਿੱਚ ਨੀਤੀ-ਰੂਟ ਕਾਫ਼ੀ ਨਹੀਂ। ਸੂਚੀ ਨੂੰ ਮੈਨੇਜਰ ਦੁਆਰਾ ਬਣਾਏ ਰੂਟ ਤੇ ਨਿਰਭਰ ਕਰਨ ਦੀ ਥਾਂ ਰੂਟਿੰਗ ਮਾਲਕ ਦੇ ਨਿਯੰਤਰਣ ਵਿੱਚ ਰੱਖੋ।
ਨਿਸ਼ਾਨ, ਟੇਬਲ ਅਤੇ ਪੀਅਰ ਕਵਰੇਜ
ਨਿਸ਼ਾਨ ਸਾਂਝਾ ਨਾਮ-ਥਾਂ ਹਨ, ਇਸ ਲਈ ਮੁੱਲ ਅਤੇ ਮਾਸਕ ਦੋਵੇਂ ਉਹਨਾਂ ਨੂੰ ਵਰਤਣ ਵਾਲੀ ਹਰ ਹੋਰ ਚੀਜ਼ ਨਾਲ ਸਹਿਮਤ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ। ਨਿਸ਼ਾਨ ਲੱਗੇ ਟ੍ਰੈਫ਼ਿਕ ਨੂੰ ਸਮਰਪਿਤ ਟੇਬਲ ਵਿੱਚ ਭੇਜਣ ਵਾਲੇ ਨਿਯਮ ਨੂੰ ਤਦ ਪਰਿਭਾਸ਼ਿਤ ਨਤੀਜਾ ਚਾਹੀਦਾ ਹੈ ਜਦੋਂ ਉਸ ਟੇਬਲ ਵਿੱਚ ਮੇਲ ਖਾਂਦਾ ਰੂਟ ਨਾ ਹੋਵੇ, ਕਿਉਂਕਿ ਬਿਨਾਂ ਜਵਾਬ ਵਾਲੀ ਖੋਜ ਅਗਲੇ ਨਿਯਮ ਤੱਕ ਜਾ ਸਕਦੀ ਹੈ ਅਤੇ ਪੈਕਟ ਨੂੰ ਭੌਤਿਕ ਇੰਟਰਫ਼ੇਸ ਤੋਂ ਬਾਹਰ ਭੇਜ ਸਕਦੀ ਹੈ। ਸਮਰਪਿਤ ਟੇਬਲ ਦੇ ਅੰਦਰ blackhole ਡਿਫ਼ਾਲਟ ਰੂਟ ਉਸ ਸ਼ਾਂਤ ਭੱਜ ਨੂੰ ਦਿਸਣ ਵਾਲੇ ਡਰਾਪ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਡਿਜ਼ਾਈਨ ਅਜੇ ਵੀ ਜੋ ਨਹੀਂ ਕਰ ਸਕਦਾ ਉਹ ਹੈ ਉਸ ਮੰਜ਼ਿਲ ਲਈ ਫੇਲ੍ਹ ਹੋਣ ਤੇ ਬੰਦ ਹੋਣਾ ਜੋ ਕਦੇ ਸੈੱਟ ਵਿੱਚ ਨਹੀਂ ਆਈ।
ਟਨਲ ਦੇ ਆਪਣੇ ਬਾਹਰਲੇ ਪੈਕਟਾਂ ਨੂੰ ਵਰਗੀਕਰਨਕਰਤਾ ਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। WireGuard ਸਾਧਨ ਠੀਕ ਇਸੇ ਮਕਸਦ ਲਈ ਸਾਕਟ ਨਿਸ਼ਾਨ ਦਿੰਦੇ ਹਨ, ਅਤੇ ਇਸ ਦੀ ਵਰਤੋਂ ਐਨਕੈਪਸੂਲੇਸ਼ਨ ਨੂੰ ਉਸ ਇੰਟਰਫ਼ੇਸ ਵਿੱਚ ਵਾਪਸ ਰੂਟ ਹੋਣ ਤੋਂ ਰੋਕਦੀ ਹੈ ਜੋ ਇਹ ਬਣਾ ਰਿਹਾ ਹੈ।
ਹਰ ਆਯੂ ਨੂੰ ਵੱਖਰੇ ਤੌਰ ਤੇ ਜਾਂਚੋ
ਤਿੰਨ ਭੰਡਾਰ ਤਿੰਨ ਸਮਾਂ-ਸਾਰਣੀਆਂ ਤੇ ਪੁਰਾਣੇ ਹੁੰਦੇ ਹਨ: ਰਿਜ਼ਾਲਵਰ ਕੈਸ਼, ਸੈੱਟ ਦੇ ਤੱਤ ਅਤੇ ਟ੍ਰੈਕ ਕੀਤਾ ਕਨੈਕਸ਼ਨ। ਉਹਨਾਂ ਨੂੰ ਉਸੇ ਕ੍ਰਮ ਵਿੱਚ ਜਾਂਚੋ ਅਤੇ ਵੇਖੋ ਕਿ ਹਰ ਇੱਕ ਤਦ ਹਿਲਦਾ ਹੈ ਜਦੋਂ ਚਾਹੀਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡ ਕੁਝ ਵੀ ਬਦਲੇ ਬਿਨਾਂ ਰਿਜ਼ਾਲਵਰ, ਸੈੱਟ, ਕਨੈਕਸ਼ਨ ਟੇਬਲ ਅਤੇ ਨੀਤੀ ਨਿਯਮ ਪੜ੍ਹਦੇ ਹਨ।
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
ਤੱਤ ਜੋੜਨ ਵਾਲੀ ਤਾਜ਼ਾ ਖੋਜ ਸਾਬਤ ਕਰਦੀ ਹੈ ਕਿ ਭਰਨਾ ਕੰਮ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਆਪਣੇ ਜਵਾਬ ਤੋਂ ਵੱਧ ਜੀਣ ਵਾਲਾ ਪੁਰਾਣਾ ਤੱਤ ਆਯੂ ਦੀ ਅਸੰਗਤੀ ਹੈ ਜੋ ਲਿਖਣ ਯੋਗ ਹੈ। ਕਨੈਕਸ਼ਨ ਟੇਬਲ ਵਿੱਚ ਉਮੀਦ ਕੀਤੇ ਨਿਸ਼ਾਨ ਨਾਲ ਨਵਾਂ ਕਨੈਕਸ਼ਨ ਦਿਸਣਾ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਵਰਗੀਕਰਨਕਰਤਾ ਚੱਲਿਆ, ਅਤੇ ਪੁਰਾਣਾ ਕਨੈਕਸ਼ਨ ਆਪਣਾ ਮੂਲ ਨਿਸ਼ਾਨ ਰੱਖੇ ਇਹ ਖ਼ਰਾਬੀ ਨਹੀਂ ਸਗੋਂ ਸਹੀ ਵਿਵਹਾਰ ਹੈ। ਨਿਯਮਾਂ ਦੀ ਸੂਚੀ ਦੱਸਦੀ ਹੈ ਕਿ ਨੀਤੀ-ਖੋਜ ਹੈ ਵੀ ਜਾਂ ਨਹੀਂ, ਜੋ ਇਸ ਤੋਂ ਵੱਖਰਾ ਸਵਾਲ ਹੈ ਕਿ ਇਹ ਮਿਲੀ ਜਾਂ ਨਹੀਂ। ਚਾਰੇ ਆਉਟਪੁਟ ਉਸੇ ਕ੍ਰਮ ਵਿੱਚ ਪੜ੍ਹੋ ਅਤੇ ਫੇਲ੍ਹ ਹੈਂਡਓਫ਼ ਆਪ ਹੀ ਫੜਿਆ ਜਾਵੇਗਾ।
ਜਿੱਥੇ ਲੋੜ ਇਹ ਹੈ ਕਿ ਕੋਈ ਖ਼ਾਸ ਨਾਮ ਹਮੇਸ਼ਾ ਇੱਕੋ ਮਾਰਗ ਵਰਤੇ, ਉੱਥੇ DNS ਨਾਲ ਭਰਿਆ ਸੈੱਟ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਕਿਉਂਕਿ ਸਾਂਝੇ ਪਤੇ ਹੋਰ ਨਾਮ ਵੀ ਢੋਂਦੇ ਹਨ। ਪ੍ਰੌਕਸੀ ਜਾਂ ਐਪਲੀਕੇਸ਼ਨ-ਪੱਧਰੀ ਤੰਤਰ ਉਸ ਗਾਰੰਟੀ ਦਾ ਸਾਧਨ ਹੈ।