ਇੱਕ LAN ਸਬਨੈੱਟ ਨੂੰ OpenVPN ਰਾਹੀਂ ਰੂਟ ਕਰੋ ਅਤੇ ਡਿਫਾਲਟ ਰੱਖੋ
ਇੱਕ ਸਬਨੈੱਟ ਟਨਲ ਵਿੱਚੋਂ ਲੰਘਦਿਆਂ LAN ਡਿਫਾਲਟ ਰੱਖੋ। ਪਾਲਿਸੀ ਟੇਬਲ ਦੀ ਮੁੱਖ ਟੇਬਲ ਦੇ ਸੋਧਾਂ ਨਾਲ ਤੁਲਨਾ ਕਰੋ, ਫਿਰ NAT ਜਾਂ ਸਰਵਰ-ਸਾਈਡ ਰੂਟ ਚੁਣੋ।
ਜੋ ਬਾਕਸ LAN ਲਈ ਰੂਟ ਕਰਦੇ ਹਨ ਅਤੇ ਨਾਲ ਹੀ VPN ਡਾਇਲ ਕਰਦੇ ਹਨ, ਉਹ ਆਪਣੇ ਆਪ ਨਾਲ ਉਸੇ ਬਹਿਸ ਵਿੱਚ ਪੈ ਜਾਂਦੇ ਹਨ: ਟਨਲ ਡਿਫਾਲਟ ਰੂਟ ਦਾ ਮਾਲਕ ਬਣਨਾ ਚਾਹੁੰਦਾ ਹੈ, ਅਤੇ LAN ਨੂੰ ਉਹ ਵਾਪਸ ਚਾਹੀਦਾ ਹੈ। ਜਦੋਂ OpenVPN ਜੁੜਦਾ ਹੈ, ਇਹ ਟਨਲ ਰਾਹੀਂ ਇੱਕ ਡਿਫਾਲਟ ਜਾਂ ਦੋ ਅੱਧ-ਡਿਫਾਲਟ ਰੂਟ ਲਗਾ ਸਕਦਾ ਹੈ, ਜੋ ਲੈਪਟਾਪ ਲਈ ਸਹੀ ਹੈ ਪਰ ਅਜਿਹੇ ਗੇਟਵੇ ਲਈ ਗਲਤ ਹੈ ਜਿਸ ਦੇ ਗੁਆਂਢੀ ਉਸ ਦੇ LAN ਪਤੇ ਤੋਂ ਜਵਾਬ ਦੀ ਉਮੀਦ ਕਰਦੇ ਹਨ। ਜਵਾਬ VPN ਛੱਡਣਾ ਨਹੀਂ ਹੈ। ਜਵਾਬ ਦੋਵੇਂ ਫੈਸਲਿਆਂ ਨੂੰ ਵੱਖਰੀਆਂ ਟੇਬਲਾਂ ਦੇਣਾ ਹੈ।
ਇੱਕ ਡਿਫਾਲਟ ਰੂਟ, ਦੋ ਮਾਲਕ
ਫਾਰਵਰਡ ਕੀਤੀ ਟਰੈਫਿਕ ਅਤੇ ਸਥਾਨਕ ਤੌਰ ’ਤੇ ਬਣੀ ਟਰੈਫਿਕ ਨੂੰ ਇੱਕੋ ਰਾਹ ਲੈਣ ਦੀ ਲੋੜ ਨਹੀਂ। LAN ਕਲਾਇੰਟਾਂ ਨੂੰ ਟਨਲ ਸਿਰਫ਼ ਉਨ੍ਹਾਂ ਮੰਜ਼ਿਲਾਂ ਲਈ ਚਾਹੀਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਚੁਣਦੇ ਹੋ, ਜਦੋਂ ਕਿ ਹੋਸਟ ਦੇ ਆਪਣੇ ਪ੍ਰਬੰਧਨ ਸੈਸ਼ਨਾਂ ਅਤੇ ਉਨ੍ਹਾਂ ਕਲਾਇੰਟਾਂ ਨੂੰ ਦਿੱਤੇ ਜਵਾਬਾਂ ਨੂੰ LAN ਡਿਫਾਲਟ ਚਾਹੀਦਾ ਹੈ। ਦੋਵਾਂ ਨੂੰ ਮੁੱਖ ਟੇਬਲ ਵਿੱਚ ਮਿਲਾਉਣ ਨਾਲ ਦੋ ਵੱਖਰੇ ਸਵਾਲਾਂ ਉੱਤੇ ਇੱਕੋ ਜਵਾਬ ਥੋਪ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।
OpenVPN ਵਿੱਚ ਠੀਕ ਇਸੇ ਲਈ ਇੱਕ ਸਵਿੱਚ ਹੈ। route-noexec ਕਲਾਇੰਟ ਨੂੰ ਮੁੱਖ ਟੇਬਲ ਨੂੰ ਬਿਲਕੁਲ ਛੂਹਣ ਤੋਂ ਰੋਕਦਾ ਹੈ, ਅਤੇ ਜੋ ਮੁੱਲ ਇਹ ਵਰਤਦਾ, ਉਹ route-up ਸਕ੍ਰਿਪਟ ਵਿੱਚ route_vpn_gateway, dev ਅਤੇ ਇੰਟਰਫ਼ੇਸ ਦੇ ਪਤਿਆਂ ਵਜੋਂ ਨਿਰਯਾਤ ਹੁੰਦੇ ਹਨ। ਫਿਰ ਤੁਸੀਂ ਤੈਅ ਕਰਦੇ ਹੋ ਕਿ ਕਿਹੜੀ ਟੇਬਲ ਕਿਹੜਾ ਰੂਟ ਲਵੇਗੀ, ਅਜਿਹੇ ਕੋਡ ਵਿੱਚ ਜੋ ਬਾਅਦ ਵਿੱਚ ਪੜ੍ਹਿਆ ਜਾ ਸਕੇ।
ਪਾਲਿਸੀ ਟੇਬਲ ਬਨਾਮ ਮੁੱਖ ਟੇਬਲ ਮੁੜ ਲਿਖਣਾ
| Approach | What it buys | What it costs |
|---|---|---|
| Separate table plus source rule | LAN traffic and host traffic keep independent defaults | Every lookup now depends on rule order |
| Editing the main table only | Fewer moving parts on a single-purpose host | One mistake takes the gateway offline entirely |
| Two half-default routes | Works for a full-tunnel client | Ambiguous on a host that must answer on its LAN address |
ਵੱਖਰੀ ਟੇਬਲ ਹੀ ਇੱਕੋ-ਇੱਕ ਵਿਕਲਪ ਹੈ ਜੋ ਇੱਕ ਸਬਨੈੱਟ ਤੋਂ ਅੱਗੇ ਸਕੇਲ ਹੁੰਦਾ ਹੈ। ਇਸ ਨੂੰ ਇੱਕ ਵਾਰ ਨਾਮ ਦਿਓ, ਫਿਰ ਨਾਮ ਨਾਲ ਹੀ ਇਸ ਦਾ ਜ਼ਿਕਰ ਕਰੋ ਤਾਂ ਜੋ ਕਿਸੇ ਨੂੰ ਕੋਈ ਸੰਖਿਆ ਯਾਦ ਨਾ ਰੱਖਣੀ ਪਵੇ:
echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpnਇੱਥੇ ਦਿੱਤੇ ਪਤੇ ਪਲੇਸਹੋਲਡਰ ਹਨ। ਕੁਝ ਵੀ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੀ ਤੈਨਾਤੀ ਤੋਂ LAN ਪ੍ਰੀਫ਼ਿਕਸ, ਟਨਲ ਗੇਟਵੇ ਅਤੇ ਡਿਵਾਈਸ ਦਾ ਨਾਮ ਬਦਲੋ।
ਨਿਯਮ ਨੂੰ ਹੋਸਟ ਨਾਲ ਵੀ ਮੇਲ ਖਾਣਾ ਚਾਹੀਦਾ ਹੈ
ਸਿਰਫ਼ LAN ਪ੍ਰੀਫ਼ਿਕਸ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਨਿਯਮ ਫਾਰਵਰਡ ਕੀਤੇ ਪੈਕਟਾਂ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ। ਇਹ ਗੇਟਵੇ ਵੱਲੋਂ ਆਪ ਬਣਾਈ ਟਰੈਫਿਕ ਨੂੰ ਕਵਰ ਨਹੀਂ ਕਰਦਾ, ਅਤੇ LAN ਕਲਾਇੰਟਾਂ ਨੂੰ ਵਾਪਸ ਭੇਜੇ ਜਵਾਬਾਂ ਨੂੰ ਵੀ ਕਵਰ ਨਹੀਂ ਕਰਦਾ, ਜੋ ਸਰੋਤ ਵਜੋਂ ਗੇਟਵੇ ਦਾ LAN ਪਤਾ ਲੈ ਕੇ ਚੱਲਦੇ ਹਨ। ਉਹ ਖੋਜਾਂ main ਵਿੱਚ ਡਿੱਗਦੀਆਂ ਹਨ ਅਤੇ ਅਜੇ ਵੀ ਟਨਲ ਵਿੱਚੋਂ ਬਾਹਰ ਜਾ ਸਕਦੀਆਂ ਹਨ।
ਗੇਟਵੇ ਦੇ ਆਪਣੇ LAN ਪਤੇ ਲਈ ਦੂਜਾ ਨਿਯਮ ਜੋੜੋ, ਜਾਂ ਪਹਿਲੇ ਨਿਯਮ ਨੂੰ ਦੋਵੇਂ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੇ ਸਮੂਹ ਤੱਕ ਫੈਲਾਓ। ਕ੍ਰਮ ਮਹੱਤਵਪੂਰਨ ਹੈ: ਵਧੇਰੇ ਖਾਸ ਨਿਯਮ ਪਹਿਲਾਂ ਰੱਖੋ, ਅਤੇ ਸਰੋਤ ਦਾ ਸਪਸ਼ਟ ਜ਼ਿਕਰ ਕਰਨ ਵਾਲੀ ਖੋਜ ਨਾਲ ਨਤੀਜਾ ਜਾਂਚੋ।
ip route get 203.0.113.9 from 192.168.50.1ਜੇ ਇਹ ਸਥਾਨਕ ਰਹਿਣ ਵਾਲੀ ਮੰਜ਼ਿਲ ਲਈ ਟਨਲ ਡਿਵਾਈਸ ਦਿਖਾਉਂਦਾ ਹੈ, ਤਾਂ ਟੇਬਲ ਵਿੱਚ ਕੀ ਹੈ ਇਸ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਨਿਯਮਾਂ ਦਾ ਸਮੂਹ ਗਲਤ ਹੈ।
NAT ਜਾਂ ਪਾਰਲੇ ਪਾਸੇ ਰੂਟ
VPN ਸਰਵਰ ਟਨਲ ਸਬਨੈੱਟ ਜਾਣਦਾ ਹੈ ਅਤੇ ਹੋਰ ਕੁਝ ਨਹੀਂ। LAN ਸਰੋਤ ਪਤੇ ਨਾਲ ਆਉਣ ਵਾਲੇ ਪੈਕਟਾਂ ਦਾ ਵਾਪਸੀ ਰਾਹ ਨਹੀਂ ਹੁੰਦਾ ਜਦੋਂ ਤੱਕ ਕੋਈ ਉਹ ਮੁਹੱਈਆ ਨਾ ਕਰੇ, ਅਤੇ ਇਹ ਮੁਹੱਈਆ ਕਰਨ ਦੇ ਠੀਕ ਦੋ ਤਰੀਕੇ ਹਨ। ਸਰਵਰ ਉੱਤੇ LAN ਪ੍ਰੀਫ਼ਿਕਸ ਲਈ ਰੂਟ ਜੋੜਨ ਨਾਲ ਮੂਲ ਸਰੋਤ ਸਿਰੇ ਤੋਂ ਸਿਰੇ ਤੱਕ ਦਿਖਦਾ ਰਹਿੰਦਾ ਹੈ, ਜੋ ਆਡਿਟ ਕੀਤੇ ਡਿਜ਼ਾਈਨ ਨੂੰ ਆਮ ਤੌਰ ’ਤੇ ਚਾਹੀਦਾ ਹੈ। ਗੇਟਵੇ ਉੱਤੇ ਮਾਸਕਰੇਡ ਕਰਨ ਨਾਲ ਸਰੋਤ ਟਨਲ ਪਤੇ ਵਿੱਚ ਮੁੜ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਰਵਰ ਦੇ ਕਿਸੇ ਸਹਿਯੋਗ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ।
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADEਜਦੋਂ ਤੁਸੀਂ ਸਰਵਰ ਨਿਯੰਤਰਿਤ ਨਹੀਂ ਕਰਦੇ ਅਤੇ ਉੱਥੇ ਰੂਟ ਨਹੀਂ ਜੋੜ ਸਕਦੇ ਤਾਂ NAT ਚੁਣੋ। ਜਦੋਂ ਲੌਗ, ਪਹੁੰਚ ਨਿਯੰਤਰਣ ਜਾਂ ਵਾਪਸੀ ਰਾਹ ਦੀ ਸਮਰੂਪਤਾ ਮਹੱਤਵਪੂਰਨ ਹੋਵੇ ਤਾਂ ਸਰਵਰ-ਸਾਈਡ ਰੂਟ ਚੁਣੋ, ਕਿਉਂਕਿ ਮਾਸਕਰੇਡ ਮੂਲ ਪਤਾ ਪਾਰਲੇ ਪਾਸੇ ਦੇ ਹਰ ਰਿਕਾਰਡ ਤੋਂ ਮਿਟਾ ਦਿੰਦਾ ਹੈ।
ਦੋਵੇਂ ਹਾਲਤਾਂ ਵਿੱਚ ਫਾਰਵਰਡਿੰਗ ਸਮਰੱਥ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਅਤੇ ਸਖ਼ਤ ਰਿਵਰਸ-ਪਾਥ ਫਿਲਟਰਿੰਗ ਜਵਾਬ ਡੇਗ ਸਕਦੀ ਹੈ ਜਦੋਂ main ਉਸ ਸਰੋਤ ਲਈ ਟਨਲ ਨਾ ਚੁਣਦਾ। ਟਨਲ ਨੂੰ ਦੋਸ਼ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਪ੍ਰਭਾਵੀ ਮੁੱਲ ਜਾਂਚੋ।
ਮੁੜ ਕਨੈਕਟ ਹੋਣ ’ਤੇ ਵੀ ਵੰਡ ਕਾਇਮ ਰਹੇ
ਹੱਥ ਨਾਲ ਜੋੜੇ ਨਿਯਮ ਅਤੇ ਰੂਟ ਇੰਟਰਫ਼ੇਸ ਮੁੜ ਬਣਨ ’ਤੇ ਗਾਇਬ ਹੋ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਪੁਰਾਣੀ ਟੇਬਲ ਐਂਟਰੀ ਉਸ ਸੈਸ਼ਨ ਤੋਂ ਵੱਧ ਚਿਰ ਰਹਿ ਸਕਦੀ ਹੈ ਜਿਸ ਨੇ ਇਸ ਨੂੰ ਜਾਇਜ਼ ਠਹਿਰਾਇਆ ਸੀ। ਟੇਬਲ ਦਾ ਨਿਯਮ, ਟਨਲ ਦਾ ਰੂਟ ਅਤੇ ਮਾਸਕਰੇਡ ਐਂਟਰੀ ਕਲਾਇੰਟ ਦੀ route-up ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਰੱਖੋ, ਅਤੇ ਸਕ੍ਰਿਪਟ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਟੇਬਲ ਖਾਲੀ ਕਰੋ ਤਾਂ ਜੋ ਪੁਰਾਣਾ ਗੇਟਵੇ ਨਵੇਂ ਸੈਸ਼ਨ ਵਿੱਚ ਨਾ ਰਹਿ ਸਕੇ।
ਦੋਵੇਂ ਸਿਰਿਆਂ ਤੋਂ ਜਾਂਚੋ: ਗੇਟਵੇ ਉੱਤੇ LAN ਸਰੋਤ ਨਾਲ ਖੋਜ, ਅਤੇ LAN ਕਲਾਇੰਟ ਤੋਂ ਟਨਲ ਵਿੱਚੋਂ ਲੰਘਣ ਵਾਲੀ ਮੰਜ਼ਿਲ ਤੱਕ ਅਸਲ ਬੇਨਤੀ। ਮੌਜੂਦ ਹੋਣ ਪਰ ਕਦੇ ਨਾ ਚੁਣਿਆ ਜਾਣ ਵਾਲਾ ਰੂਟ, ਕਾਊਂਟਰ ਪੜ੍ਹਨ ਤੱਕ ਬਿਲਕੁਲ ਰੂਟ ਨਾ ਹੋਣ ਵਾਂਗ ਵਿਵਹਾਰ ਕਰਦਾ ਹੈ।