UART Wi-Fi ਮਾਡਿਊਲ ਵਾਲੇ ਮਾਈਕ੍ਰੋਕੰਟਰੋਲਰ ਨੂੰ ਇਸ ਦੇ ਪਿੱਛੇ ਦੀ ਸੇਵਾ ਤੱਕ ਪਹੁੰਚਣ ਲਈ VPN ਲਾਗੂ ਕਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ। ਮਾਡਿਊਲ ਪਹਿਲਾਂ ਹੀ TCP/IP ਸਟੈਕ ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ ਸੀਰੀਅਲ ਪੋਰਟ ਉੱਤੇ ਸਾਕਟ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਉਸੇ ਲੈਨ ਉੱਤੇ ਗੇਟਵੇ ਉਸ ਟਰੈਫਿਕ ਨੂੰ ਸੁਰੰਗ ਰਾਹੀਂ ਲੈ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਡਿਜ਼ਾਈਨ ਤਦ ਹੀ ਕੰਮ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਚਾਰ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਕ੍ਰਮ ਨਾਲ ਦੇ ਸਕਦੇ ਹੋ, ਇਸ ਲਈ ਇਸ ਨੂੰ ਜਾਂਚ-ਸੂਚੀ ਮੰਨੋ: ਪਤਾ, ਸਾਕਟ, ਰਾਹ, ਸੀਮਾ। ਜੋ ਪਹਿਲਾ ਦਰਵਾਜ਼ਾ ਫੇਲ ਹੋਵੇ ਉੱਥੇ ਰੁਕੋ, ਕਿਉਂਕਿ ਬਾਅਦ ਵਾਲੇ ਉਸ ਦੀ ਭਰਪਾਈ ਨਹੀਂ ਕਰ ਸਕਦੇ।

ਹਰ ਪਰਤ ਨੂੰ ਇੱਕ ਕੰਮ ਦਿਓ

UART ਲਿੰਕ ਮਾਈਕ੍ਰੋਕੰਟਰੋਲਰ ਅਤੇ ਮਾਡਿਊਲ ਵਿਚਕਾਰ AT ਕਮਾਂਡਾਂ ਅਤੇ ਪੇਲੋਡ ਢੋਂਦਾ ਹੈ। ਮਾਡਿਊਲ ਵਾਈ-ਫਾਈ ਨੈਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਆਪਣੇ ਸਰੋਤ ਪਤੇ ਸਮੇਤ IP ਕਨੈਕਸ਼ਨ ਦਾ ਮਾਲਕ ਹੁੰਦਾ ਹੈ। ਗੇਟਵੇ ਸੁਰੰਗ, ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਫਾਰਵਰਡਿੰਗ ਨੀਤੀ ਦਾ ਮਾਲਕ ਹੁੰਦਾ ਹੈ। ਇਹ ਕੰਮ ਵੱਖਰੇ ਰੱਖਣ ਨਾਲ ਹੀ ਡਿਜ਼ਾਈਨ ਹਰ ਪੜਾਅ ਉੱਤੇ ਡੀਬੱਗ ਕਰਨ ਯੋਗ ਬਣਦਾ ਹੈ।

ਇਹ ਵੱਖਰਾਪਣ ਗੇਟਵੇ ਨੀਤੀ ਲਿਖਣ ਦਾ ਤਰੀਕਾ ਵੀ ਬਦਲਦਾ ਹੈ। ਸਰੋਤ ਨਿਯਮ ਵਿੱਚ ਮਾਡਿਊਲ ਦਾ ਲੈਨ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਸੀਰੀਅਲ ਲਿੰਕ ਪਿੱਛੇ ਬੈਠੇ ਮਾਈਕ੍ਰੋਕੰਟਰੋਲਰ ਲਈ ਕੋਈ ਕਾਲਪਨਿਕ ਪਤਾ ਨਹੀਂ। ਇਸ ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਮਾਈਕ੍ਰੋਕੰਟਰੋਲਰ ਦੀ ਆਪਣੀ ਕੋਈ IP ਪਛਾਣ ਨਹੀਂ ਹੈ, ਅਤੇ ਇਹ ਦਿਖਾਉਣਾ ਕਿ ਹੈ, ਅਜਿਹਾ ਨਿਯਮ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਕਦੇ ਨਹੀਂ ਮਿਲਦਾ।

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

ਕੀ ਗੇਟਵੇ ਮਾਡਿਊਲ ਦਾ ਪਤਾ ਨਾਮ ਦੇ ਸਕਦਾ ਹੈ?

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

AT+CWMODE=1
AT+CWJAP="lab-wifi","passphrase"
AT+CIPSTA?
AT+CIPMUX=0

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

ਮਾਡਿਊਲ ਤੋਂ ਸਾਕਟ ਖੋਲ੍ਹੋ

ਪਤਾ ਅਤੇ ਮੋਡ ਤੈਅ ਹੋਣ ਤੋਂ ਬਾਅਦ ਮਾਡਿਊਲ ਨਿੱਜੀ ਸੇਵਾ ਨਾਲ TCP ਕਨੈਕਸ਼ਨ ਖੋਲ੍ਹ ਸਕਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤਾ ਪਤਾ ਦਸਤਾਵੇਜ਼ੀ ਰੇਂਜ ਦੀ ਉਦਾਹਰਣ ਹੈ; ਇਸ ਦੀ ਥਾਂ ਆਪਣਾ ਰੱਖੋ ਅਤੇ ਉਹੀ ਆਕਾਰ ਬਣਾਈ ਰੱਖੋ।

AT+CIPSTART="TCP","10.90.0.20",9000
AT+CIPSEND=18
{"t":21.4,"rh":48}

ਉਹ AT ਕਮਾਂਡ ਸਾਧਾਰਨ TCP ਸਾਕਟ ਖੋਲ੍ਹਦੀ ਹੈ, ਅਤੇ ਸਾਕਟ ਸੁਰੰਗ ਨਹੀਂ ਹੈ: ਇਸ ਵਿੱਚ ਕੋਈ ਚੀਜ਼ VPN ਨਹੀਂ ਬਣਾਉਂਦੀ ਅਤੇ ਕੋਈ ਚੀਜ਼ ਪੇਲੋਡ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਨਹੀਂ ਕਰਦੀ। ਫਰਮਵੇਅਰ ਦਾ TLS ਮੋਡ ਆਪਣੀ ਕਮਾਂਡ ਅਤੇ ਆਪਣੇ ਸਰਟੀਫਿਕੇਟ ਪ੍ਰਬੰਧਨ ਵਾਲੀ ਵੱਖਰੀ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ, ਅਤੇ ਕੋਈ ਵੀ UART ਮਾਡਿਊਲ ਦੋਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਵੀ ਸਮਰਥਨ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਉੱਪਰਲਾ ਵਾਕ-ਬਣਤਰ ਇਸ ਉੱਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ ਮੰਨਣ ਦੀ ਥਾਂ ਆਪਣੇ ਫਰਮਵੇਅਰ ਲਈ TCP/IP AT ਕਮਾਂਡ ਸੰਦਰਭ ਵੇਖੋ।

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

ਕਨੈਕਸ਼ਨ ਨੂੰ ਗੇਟਵੇ ਰਾਹੀਂ ਲੰਘਾਓ

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

ip route get 10.90.0.20
sudo tcpdump -ni wg0 'host 10.90.0.20 and port 9000'
sudo conntrack -L | grep 9000

ਪਹਿਲਾਂ ਵਾਪਸੀ ਰਾਹ ਵੱਲ ਧਿਆਨ ਦਿਓ। ਫਾਰਵਰਡ ਕੀਤਾ ਪੈਕਟ ਜੋ ਸੇਵਾ ਤੱਕ ਪਹੁੰਚ ਕੇ ਕਦੇ ਵਾਪਸ ਨਹੀਂ ਆਉਂਦਾ, ਗੇਟਵੇ ਉੱਤੇ ਕੋਈ ਗਲਤੀ ਤੋਂ ਬਿਨਾਂ ਮਾਡਿਊਲ ਵਿੱਚ ਸਮਾਂ-ਸੀਮਾ ਪੈਦਾ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਲੋਕ ਘੰਟਿਆਂ ਤੱਕ ਵਾਈ-ਫਾਈ ਲਿੰਕ ਵੱਲ ਦੇਖਦੇ ਰਹਿੰਦੇ ਹਨ। conntrack ਐਂਟਰੀ ਦੱਸਦੀ ਹੈ ਕਿ ਗੇਟਵੇ ਨੇ ਜਵਾਬ ਦੇਖਿਆ ਵੀ ਜਾਂ ਨਹੀਂ।

ਸੁਰੰਗ ਅਸਲ ਵਿੱਚ ਕਿੱਥੇ ਖਤਮ ਹੁੰਦੀ ਹੈ ਤੈਅ ਕਰੋ

ਸੁਰੰਗ ਗੇਟਵੇ ਉੱਤੇ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। ਇਹ UART ਲਿੰਕ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਨਹੀਂ ਕਰਦੀ, ਅਤੇ ਮਾਡਿਊਲ ਤੋਂ ਗੇਟਵੇ ਤੱਕ ਦੇ ਲੈਨ ਹਿੱਸੇ ਨੂੰ ਸੁਰੰਗ ਦਾ ਹਿੱਸਾ ਨਹੀਂ ਬਣਾਉਂਦੀ। ਉਸ ਹਿੱਸੇ ਉੱਤੇ ਜਿਸ ਨੂੰ ਵੀ ਸੁਰੱਖਿਆ ਚਾਹੀਦੀ ਹੈ ਉਸ ਨੂੰ ਆਪਣਾ ਢੰਗ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ ਸਾਧਾਰਨ TCP ਕੋਈ TLS ਨਹੀਂ ਹੈ।

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

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

ਸੰਬੰਧਿਤ ਲੇਖ