ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਨਾ ਝੁਕਣ ਵਾਲੀ ਲੋੜ ਹੈ: ਦੂਜੇ ਪਾਸੇ ਨੂੰ ਉਹੀ 1,500 ਬਾਈਟ ਦਾ IP ਪੈਕਟ ਮਿਲਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਭੇਜਣ ਵਾਲਾ ਕੱਢਦਾ ਹੈ, ਹੈਡਰਾਂ ਸਮੇਤ। ਟਨਲ ਉਸ ਪੈਕਟ ਅਤੇ ਆਪਣੀ ਫ੍ਰੇਮਿੰਗ ਨੂੰ ਦੂਜੇ 1,500 ਬਾਈਟ IP ਪੈਕਟ ਵਿੱਚ ਨਹੀਂ ਲਪੇਟ ਸਕਦਾ, ਇਸ ਲਈ ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਕੁਝ ਛੱਡਣਾ ਪਵੇਗਾ। ਹੇਠਾਂ ਦਿੱਤਾ ਕ੍ਰਮ ਉਹੀ ਹੈ ਜੋ ਮੈਂ ਤਬਦੀਲੀ ਵਿੰਡੋ ਵਿੱਚ ਵਰਤਦਾ ਹਾਂ: ਬਾਈਟ ਬਜਟ ਲਿਖੋ, ਸਾਬਤ ਕਰੋ ਕਿ underlay ਅਸਲ ਵਿੱਚ ਕੀ ਲਿਜਾ ਸਕਦਾ ਹੈ, ਫਿਰ ਬਿਲਕੁਲ ਇੱਕ ਢੋਆ ਢੁਆਈ ਵਿਧੀ ਚੁਣੋ ਅਤੇ ਦੂਜੇ ਪਾਸੇ ਅੰਦਰੂਨੀ ਪੈਕਟ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ।

ਪ੍ਰੋਫਾਈਲ ਸੋਧਣ ਤੋਂ ਪਹਿਲਾਂ ਬਾਈਟ ਬਜਟ ਲਿਖੋ

ਇਨਕੈਪਸੂਲੇਸ਼ਨ ਕਈ ਪਰਤਾਂ ਉੱਤੇ ਬਾਈਟ ਜੋੜਦਾ ਹੈ, ਅਤੇ ਕੁੱਲ ਤੁਹਾਡੇ ਪ੍ਰੋਫਾਈਲ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ, ਲੱਭਣ ਯੋਗ ਸਥਿਰ ਅੰਕ ਨਹੀਂ। ਪਤਾ ਪਰਿਵਾਰ, ਸਾਈਫਰ ਦੀ ਚੋਣ, ਟਰਾਂਸਪੋਰਟ ਪ੍ਰੋਟੋਕਾਲ ਅਤੇ ਕੋਈ ਵੀ ਕੰਪਰੈਸ਼ਨ ਜਾਂ ਫ੍ਰੇਮਿੰਗ ਵਿਕਲਪ ਸੰਖਿਆ ਨੂੰ ਬਦਲਦਾ ਹੈ, ਇਸ ਲਈ ਕਿਸੇ ਹੋਰ ਤੈਨਾਤੀ ਤੋਂ ਨਕਲ ਕੀਤੀ ਘਟਾਓ ਬਜਟ ਵਜੋਂ ਬੇਕਾਰ ਹੈ। ਅੰਦਰੂਨੀ ਲੋੜ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ, ਆਪਣੇ ਕਨਫਿਗਰੇਸ਼ਨ ਦਾ ਮਾਪਿਆ ਪ੍ਰਤੀ-ਪੈਕਟ ਓਵਰਹੈੱਡ ਜੋੜੋ, ਅਤੇ ਕਿਸੇ ਦੇ ਫਾਈਲ ਸੋਧਣ ਤੋਂ ਪਹਿਲਾਂ ਨਤੀਜਾ ਬਾਹਰੀ ਆਕਾਰ ਤਬਦੀਲੀ ਟਿਕਟ ਉੱਤੇ ਲਿਖੋ।

ਦੋ ਸੰਖਿਆਵਾਂ ਡਿਜ਼ਾਈਨ ਤੈਅ ਕਰਦੀਆਂ ਹਨ: ਰਸਤਾ ਬਿਨਾਂ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਦੇ ਜੋ ਸਭ ਤੋਂ ਵੱਡਾ ਬਾਹਰੀ ਪੈਕਟ ਲਿਜਾਂਦਾ ਹੈ, ਅਤੇ ਤੁਹਾਡੇ ਇਨਕੈਪਸੂਲੇਸ਼ਨ ਨੂੰ ਲੋੜੀਂਦੇ ਵਾਧੂ ਬਾਈਟ। ਜਦੋਂ ਪਹਿਲਾ ਦੂਜੇ ਵਿੱਚ 1,500 ਜੋੜਨ ਤੋਂ ਘੱਟ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਬਦਲਣਾ ਪਵੇਗਾ। ਫਿਰ ਚੋਣ ਰਚਨਾਤਮਕ ਨਹੀਂ, ਤੰਗ ਹੋ ਜਾਂਦੀ ਹੈ, ਇਸ ਲਈ ਵਿਕਲਪਾਂ ਬਾਰੇ ਚਰਚਾ ਤੋਂ ਪਹਿਲਾਂ ਮੈਂ ਦੋਵੇਂ ਸੰਖਿਆਵਾਂ ਲਿਖ ਲੈਂਦਾ ਹਾਂ। ਟਨਲ ਪਰਤ ਉੱਤੇ ਉਹਨਾਂ ਬਾਈਟਾਂ ਨੂੰ ਕੰਪਰੈਸ ਕਰਕੇ ਮਿਟਾਉਣ ਵਾਲਾ ਕੁਝ ਨਹੀਂ, ਅਤੇ ਕੋਈ ਇੱਕ MTU ਪੂਰਨ ਅੰਕ ਤੁਹਾਨੂੰ ਦਿੱਤੀ ਲੋੜ ਨਹੀਂ ਹਟਾਉਂਦਾ।

do-not-fragment ping ਨਾਲ underlay ਦੀ ਜਾਂਚ ਕਰੋ

ਇੰਟਰਫੇਸ MTU ਉੱਤੇ ਭਰੋਸਾ ਨਾ ਕਰੋ, ਰਸਤਾ ਮਾਪੋ, ਕਿਉਂਕਿ ਬਾਹਰੀ ਰਸਤੇ ਵਿੱਚ ਸਭ ਤੋਂ ਛੋਟੀ ਕੜੀ ਮਾਇਨੇ ਰੱਖਦੀ ਹੈ। Linux ਉੱਤੇ, -M do do-not-fragment ਬਿੱਟ ਸੈੱਟ ਕਰਦਾ ਹੈ ਅਤੇ -s ICMP ਪੇਲੋਡ ਲੈਂਦਾ ਹੈ, ਇਸ ਲਈ 20 ਬਾਈਟ IP ਹੈਡਰ ਅਤੇ 8 ਬਾਈਟ ICMP ਹੈਡਰ ਘਟਾਉਣ ਤੋਂ ਬਾਅਦ 1,500 ਬਾਈਟ ਦਾ ਫ੍ਰੇਮ 1,472 ਬਾਈਟ ਪੇਲੋਡ ਉੱਤੇ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਪੇਲੋਡ ਵਧਾਓ ਜਦੋਂ ਤੱਕ ਜਾਂਚ ਫੇਲ੍ਹ ਨਾ ਹੋਵੇ, ਫਿਰ ਜੰਬੋ ਆਕਾਰ ਵੱਲ ਛਾਲ ਮਾਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਰਸਤਾ ਇਸਨੂੰ ਕੁਝ ਵੀ ਲਿਜਾਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ।

ping -M do -s 1472 -c 2 198.51.100.10
ping -M do -s 8972 -c 2 198.51.100.10
tracepath -n 198.51.100.10

1,472 ਪਾਰ ਕਰਕੇ 8,972 ਉੱਤੇ ਫੇਲ੍ਹ ਹੋਣ ਵਾਲਾ ਰਸਤਾ 1,500 ਬਾਈਟ ਦਾ ਅੰਦਰੂਨੀ ਪੈਕਟ ਅਤੇ ਓਵਰਹੈੱਡ ਇੱਕ ਬਾਹਰੀ ਪੈਕਟ ਵਿੱਚ ਨਹੀਂ ਲਿਜਾ ਸਕਦਾ। ਇਹੀ ਉਹ ਜਵਾਬ ਹੈ ਜੋ ਤੁਹਾਨੂੰ VPN ਕਨਫਿਗਰੇਸ਼ਨ ਖੋਲ੍ਹਣ ਤੋਂ ਪਹਿਲਾਂ ਚਾਹੀਦਾ ਸੀ। ਇਹ ਵੀ ਤੈਅ ਕਰਦਾ ਹੈ ਕਿ ਅਗਲੇ ਦੋ ਹਿੱਸਿਆਂ ਵਿੱਚੋਂ ਕਿਹੜਾ ਤੁਹਾਡੇ ਉੱਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਦੋਵੇਂ ਜਾਂਚ ਨਤੀਜੇ ਟਿਕਟ ਦੇ ਕੋਲ ਰੱਖੋ। ਇੱਥੇ ਅੰਦਾਜ਼ਾ ਲਾਉਣਾ ਇੱਕ ਰੱਖ-ਰਖਾਅ ਵਿੰਡੋ ਦਾ ਨੁਕਸਾਨ ਹੈ, ਕਿਉਂਕਿ ਆਪਣੇ ਆਪ ਨੂੰ up ਦੱਸਣ ਵਾਲਾ ਟਨਲ ਰਸਤੇ ਦੇ ਸਵੀਕਾਰ ਕਰਨ ਵਾਲੇ ਸਭ ਤੋਂ ਵੱਡੇ ਪੈਕਟ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਦੱਸਦਾ।

ਰਸਤੇ ਦਾ MTU ਸਿਰਫ਼ ਉੱਥੇ ਵਧਾਓ ਜਿੱਥੇ ਹਰ ਹਾਪ ਸਹਿਮਤ ਹੋਵੇ

ਜੰਬੋ ਫ੍ਰੇਮ end-to-end ਵਿਸ਼ੇਸ਼ਤਾ ਹਨ, ਤੁਹਾਡੇ ਅਚਾਨਕ ਕੰਟਰੋਲ ਵਾਲੇ ਦੋ ਐਂਡਪੁਆਇੰਟਾਂ ਉੱਤੇ ਚਾਲੂ ਕਰਨ ਵਾਲੀ ਸੈਟਿੰਗ ਨਹੀਂ। ਬਾਹਰੀ ਰਸਤੇ ਦਾ ਹਰ ਸਵਿੱਚ, ਰਾਊਟਰ ਅਤੇ ਪ੍ਰਦਾਤਾ ਦਾ ਹਸਤਾਂਤਰ ਵੱਡੇ ਆਕਾਰ ਉੱਤੇ ਸਹਿਮਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇੱਕ 1,500 ਬਾਈਟ ਹਾਪ ਤੁਹਾਡੇ ਹੁਣੇ ਵੱਡਾ ਕੀਤੇ ਪੈਕਟ ਨੂੰ ਚੁੱਪਚਾਪ ਸੁੱਟ ਦੇਵੇਗਾ। ਸਿਰਫ਼ ਸਥਾਨਕ ਇੰਟਰਫੇਸ ਵਧਾਉਣਾ ਉਹ ਆਮ ਅੱਧਾ ਬਦਲਾਅ ਹੈ ਜੋ ਟਨਲ ਨੂੰ ਟੁੱਟਿਆ ਦਿਖਾਉਂਦਾ ਹੈ ਜਦੋਂ ਕਿ underlay ਚੁੱਪਚਾਪ ਡੇਗਦਾ ਹੈ।

ip link set dev eth1 mtu 9000
ip link show dev eth1
ping -M do -s 8972 -c 2 198.51.100.10

ਇੰਟਰਫੇਸ ਬਦਲੋ, ਫਿਰ ਕੁਝ ਹੋਰ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਉਹੀ ਰਸਤਾ ਮੁੜ ਜਾਂਚੋ। ਜੇ ਜਾਂਚ ਅਜੇ ਵੀ ਫੇਲ੍ਹ ਹੋਵੇ, ਵਾਪਸ ਕਰੋ ip link set dev eth1 mtu 1500 ਅਤੇ ਆਪਣੀ ਨਾ ਹੋਣ ਵਾਲੀ ਲਿੰਕ ਬਾਰੇ ਪ੍ਰਦਾਤਾ ਨਾਲ ਬਹਿਸ ਕਰਨ ਦੀ ਥਾਂ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਵੱਲ ਵਧੋ।

ਜਦੋਂ underlay ਵਧ ਨਾ ਸਕੇ ਤਾਂ ਟਨਲ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਵਰਤੋ

ਅੰਦਰੂਨੀ ਪੈਕਟ ਦੇ ਹੇਠਾਂ ਸਮਰਥਿਤ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਵਿਧੀ ਕਈ ਬਾਹਰੀ ਪੈਕਟਾਂ ਨੂੰ ਇੱਕ ਅੰਦਰੂਨੀ ਪੈਕਟ ਲਿਜਾਣ ਦਿੰਦੀ ਹੈ, ਅਤੇ ਦੂਜੇ ਪਾਸੇ ਦਾ ਟਨਲ ਐਂਡਪੁਆਇੰਟ ਅਸਲ ਨੂੰ ਸਟੈਕ ਨੂੰ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੂੰ ਮੁੜ ਜੋੜਦਾ ਹੈ। Community OpenVPN ਦਾ UDP fragment ਵਿਕਲਪ ਉਸ ਵਿਚਾਰ ਦਾ ਇੱਕ ਅਮਲ ਹੈ, ਅਤੇ ਇਹ ਬਾਹਰੀ ਪੈਕਟ ਦੀ ਆਮ IP ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਵਰਗਾ ਨਹੀਂ। ਦੋਵੇਂ ਪੀਅਰਾਂ ਨੂੰ ਉਹ ਫਾਰਮੈਟ ਸਮਰਥਿਤ ਸੰਸਕਰਣ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਡੇਟਾ ਰਸਤਾ ਉਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਸੋਚਦੇ ਹੋ: OpenVPN 3 ਕਲਾਇੰਟ ਅਤੇ ਕਰਨਲ-ਤੇਜ਼ ਕੀਤੇ ਡੇਟਾ ਚੈਨਲਾਂ ਦੀਆਂ ਸੀਮਾਵਾਂ ਵੱਖਰੀਆਂ ਹਨ, ਇਸ ਲਈ ਇੱਕ ਕਲਾਇੰਟ ਉੱਤੇ ਚੱਲਣ ਵਾਲਾ ਪ੍ਰੋਫਾਈਲ ਦੂਜੇ ਉੱਤੇ ਫੇਲ੍ਹ ਹੋ ਸਕਦਾ ਹੈ।

openvpn --config client.ovpn --tun-mtu 1500 --fragment 1400 --verb 4

ਆਮ ਬਾਹਰੀ ਫ੍ਰੈਗਮੈਂਟੇਸ਼ਨ ਦੂਜਾ ਵਿਕਲਪ ਹੈ, ਅਤੇ ਇਹ ਕਮਜ਼ੋਰ ਹੈ। IPv6 ਰਾਊਟਰ ਅੱਗੇ ਭੇਜੇ ਪੈਕਟ ਨੂੰ ਬਿਲਕੁਲ ਫ੍ਰੈਗਮੈਂਟ ਨਹੀਂ ਕਰਦੇ, ਇਸ ਲਈ ਬਹੁਤ ਵੱਡਾ ਬਾਹਰੀ ਪੈਕਟ ਬੱਸ ਮਰ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਭੇਜਣ ਵਾਲੇ ਨੂੰ ਉਦੋਂ ਹੀ ਪਤਾ ਲੱਗਦਾ ਹੈ ਜੇ ਸੰਬੰਧਿਤ ICMPv6 ਸੁਨੇਹਾ ਰਸਤੇ ਉੱਤੇ ਬਚ ਜਾਵੇ। ਫ੍ਰੈਗਮੈਂਟ ਫਿਲਟਰਿੰਗ ਅਤੇ ਨੁਕਸਾਨ ਦੇ ਵਾਧੇ ਨੂੰ ਵੀ ਸੱਦਾ ਦਿੰਦੇ ਹਨ, ਇਸ ਲਈ ਮੈਂ ਇਸਨੂੰ ਯੋਜਨਾ ਨਹੀਂ, ਬਦਲਵਾਂ ਰਾਹ ਮੰਨਦਾ ਹਾਂ।

ਸਟ੍ਰੀਮ-ਅਧਾਰਿਤ ਬਾਹਰੀ ਵਾਹਕ ਆਪਣੀ ਬਾਈਟ ਸਟ੍ਰੀਮ ਨੂੰ ਖੰਡਿਤ ਕਰਕੇ ਆਕਾਰ ਦੇ ਸਵਾਲ ਨੂੰ ਟਾਲਦਾ ਹੈ, ਅਤੇ ਮੁੜ ਬਣਾਇਆ ਅੰਦਰੂਨੀ ਪੈਕਟ ਫਿਰ ਵੀ 1,500 ਬਾਈਟ ਹੋ ਸਕਦਾ ਹੈ। ਇਹ ਆਪਣੀ ਕੀਮਤ ਵਾਲਾ ਟਰਾਂਸਪੋਰਟ ਫੈਸਲਾ ਹੈ, TCP ਅੰਦਰ TCP ਦੇ ਜਾਣੇ-ਪਛਾਣੇ ਵਿਵਹਾਰ ਸਮੇਤ, ਇਸ ਲਈ MTU ਬਹਿਸ ਦੇ ਮਾੜੇ ਪ੍ਰਭਾਵ ਵਜੋਂ ਨਹੀਂ, ਜਾਣ-ਬੁੱਝ ਕੇ ਲਓ।

ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਅੰਦਰੂਨੀ ਪੈਕਟ ਬਿਨਾਂ ਬਦਲੇ ਪਹੁੰਚਦਾ ਹੈ

ਤਸਦੀਕ ਸਫਲ ਹੈਂਡਸ਼ੇਕ ਨਹੀਂ ਹੈ। ਦੋਵੇਂ ਸਿਰਿਆਂ ਉੱਤੇ ਟਨਲ ਇੰਟਰਫੇਸ ਉੱਤੇ ਕੈਪਚਰ ਕਰੋ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਨੇ ਅਸਲ ਵਿੱਚ ਭੇਜੇ ਪੈਕਟ ਦਾ ਆਕਾਰ ਅਤੇ ਸਮੱਗਰੀ ਦੂਜੇ ਪਾਸੇ ਮਿਲੇ ਨਾਲ ਤੁਲਨਾ ਕਰੋ।

ip link show dev tun0
ping -M do -s 1472 -c 2 10.8.0.1
tcpdump -ni tun0 -c 5 'icmp and greater 1000'

ਜੇ ਕੈਪਚਰ ਦੂਜੇ ਸਿਰੇ ਉੱਤੇ ਪੂਰੇ ਆਕਾਰ ਦਾ ਅੰਦਰੂਨੀ ਪੈਕਟ ਦਿਖਾਉਂਦਾ ਹੈ, ਤਾਂ ਢੋਆ ਢੁਆਈ ਦੀ ਚੋਣ ਕੰਮ ਕਰਦੀ ਹੈ ਅਤੇ ਬਾਕੀ ਕੰਮ ਉਸਨੂੰ ਦਰਜ ਕਰਨਾ ਹੈ। ਜੇ ਟਨਲ ਆਪਣੇ ਆਪ ਨੂੰ up ਦੱਸਦੇ ਹੋਏ ਕੁਝ ਨਹੀਂ ਦਿਖਾਉਂਦਾ, ਤਾਂ ਬਾਹਰੀ ਪੈਕਟ ਐਂਡਪੁਆਇੰਟਾਂ ਵਿਚਕਾਰ ਕਿਤੇ ਸੁੱਟਿਆ ਜਾ ਰਿਹਾ ਹੈ, ਜੋ ਤੁਹਾਨੂੰ ਸਾਈਫਰ ਸੈਟਿੰਗਾਂ ਵੱਲ ਨਹੀਂ, ਜਾਂਚ ਵੱਲ ਵਾਪਸ ਭੇਜਦਾ ਹੈ।

ਟਿਕਟ ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤਿੰਨ ਗੱਲਾਂ ਦਰਜ ਕਰੋ: ਮਾਪਿਆ ਬਾਹਰੀ ਬਜਟ, ਚੁਣੀ ਵਿਧੀ, ਅਤੇ ਉਹ ਕਮਾਂਡ ਜਿਸਨੇ ਸਾਬਤ ਕੀਤਾ ਕਿ ਅੰਦਰੂਨੀ ਪੈਕਟ ਬਚ ਗਿਆ। ਇਸ ਟਨਲ ਨੂੰ ਅੱਗੇ ਛੂਹਣ ਵਾਲੇ ਵਿਅਕਤੀ ਨੂੰ ਤਿੰਨੇ ਲੋੜੀਂਦੇ ਹੋਣਗੇ, ਅਤੇ ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਸਿਰਫ਼ ਕਨਫਿਗਰੇਸ਼ਨ ਫਾਈਲ ਤੋਂ ਮੁੜ ਨਹੀਂ ਬਣਾਇਆ ਜਾ ਸਕਦਾ।

ਸੰਬੰਧਿਤ ਲੇਖ