在我的嵌入式Linux系統(有一些有限的資源)下工作時,我當前的應用程序要求外部設備通過端口502上的以太網TCP/IP與此板交談。默認情況下, * 1024下的端口在* nix環境下被阻塞。在端口502上允許傳入連接並進行雙向端口轉發
因此,假設外部設備在502上打開端口,並且嵌入式設備在8502上偵聽。如何透明地在這些設備之間實現雙向通信?
好消息是ROOT訪問被授予實現此端口轉發解決方案的權利,該解決方案將持續運行在嵌入式Linux設備中,但尚未找到正確的命令。
我已經使用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地址,因爲它可以來自不同設備每個建立的連接。
有關如何繼續此任務的任何想法?提前致謝。
編輯:無論socat
也不netcap
可...