図に示すように、3つのLinuxデバイスが互いに接続されています。デバイスAとBはYoctoを実行する内蔵コンピュータです。デバイスCはUbuntu PCです。ネットワークは完全に独立しています(インターネットやその他の外部接続はありません)。
デバイスAのアプリケーションはポート14550でUDPパケットを送信しており、デバイスCがパケットを受信したいと考えています。このアプリケーションのわずかな違いにより、AはUDPパケットを192.168.22.102(10.1.1.10ではなく)に送信するようにしました。問題ありません。デバイスAにパスを追加しました。
#Device A
ip route add 192.168.0.0/16 via 10.1.1.10 dev wlan0-ap
AからBのeth0インターフェイスをpingできるので、パスが機能していることを確認しました。
次に、Bが同じポート14550でUDPパケットをCに転送できるようにポート転送を設定しました。
#Device B
echo '1' > /proc/sys/net/ipv4/conf/wlan0/forwarding
echo '1' > /proc/sys/net/ipv4/conf/eth0/forwarding
echo '1' > /proc/sys/net/ipv4/ip_forward
iptables -A PREROUTING -t nat -p udp -i wlan0 --dport 14550 -j DNAT --to-destination 192.168.22.7:14550
iptables -A FORWARD -p udp -d 192.168.22.7 --dport 14550 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
そして入って来るポート14550を開きます。
#Device B
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp --dport 14550 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --sport 14550 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -S
以下はデバイスBの出力です。
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 14550 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.22.7/32 -p udp -m udp --dport 14550 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp --sport 14550 -m conntrack --ctstate ESTABLISHED -j ACCEPT
最後に、gufwを使用して、デバイスCのポート14550からの着信UDPパケットを許可しました。
残念ながら、デバイスCにUDPパケットは表示されません。基本的なステップがありませんか?どのようなトラブルシューティング手順を試すべきですか?デバイスAとBは多くのネイティブWebアプリケーションのBusyBoxバージョンを実行しているので、私ができることとできないことにいくつかの制限があることに注意してください。