ポート転送を使用してデバイス間でUDPパケットを送信する

ポート転送を使用してデバイス間でUDPパケットを送信する

図に示すように、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バージョンを実行しているので、私ができることとできないことにいくつかの制限があることに注意してください。

ベストアンサー1

おすすめ記事