現在のアプリケーションでは、リソースが限られている組み込みLinuxシステムでは、ポート502でイーサネットTCP/IP経由で外部デバイスとこのボードとの通信が要求されます。 1024未満のポートは* nix環境下でブロックされます。双方向ポート転送でポート502に着信を許可する
外部デバイスが502でポートを開き、埋め込みデバイスが8502でリッスンしているとします。これらのデバイス間で双方向通信を透過的に許可するにはどうすればよいですか?
ROOTアクセスは、このポート転送ソリューションを実装するために許可されています。これは、継続的に組み込みLinuxデバイス内に常駐しますが、そのための正しいコマンドが見つからないことです。
Iは、次のコマンドの異なる組み合わせで、iptables
を用いて試みた:
iptables -A INPUT -p tcp --dport 502 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 502 -j ACCEPT
iptables -A INPUT -p tcp --dport 8502 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 8502 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 502 -j DNAT --to 0.0.0.0:8502
iptables -A INPUT -p tcp --dport 502 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 502 -m state --state ESTABLISHED -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 502 -j DNAT --to 127.0.0.1:8502
iptables -t nat -I OUTPUT -p tcp -o eth0 --dport 8502 -j REDIRECT --to-ports 502
最後に、iptables-save
ので、ルールを実装することができる行います。
いくつかの制限事項:
- それが制約されたデバイスなので、(今のところの内側にapt-getを持つから...)新しいパッケージをインストールすることはできません。
- は、外部デバイスのIPアドレスを予測できません。これは、接続が確立されている別のデバイスからのものである可能性があるためです。
このタスクをどのように進めるかについてのご意見はありますか?前もって感謝します。
EDIT:socat
もnetcap
どちらが...この非常に問題に関する事例他の誰かがつまずいて