2016-04-07 10 views
0

いくつかのprocessusで構成されたtcl言語でアプリケーションを開発しています。 各プロセッサはソケット(IP、ポート)を使用して外部IPアドレスにデータを送信する必要があります。 (私はSIPサーバをシミュレートしているので)ポート5060だけを使うべきです。 問題は、ソケットを使用するたびに(同じソースポートを使用する並列スレッドは不可能なため)1つのスレッドのみがポート5060を使用できるため、これを解決する必要があります。 複数のスレッドが同時に(異なるソケットにそれぞれ1つずつ)実行されているときにlinux iptablesを使用して各スレッドが使用するソースポートを変更できるかどうか疑問に思う==>マシンから送信されたすべてのパケットは同じ送信元ポート5060です。ファイアウォール-Iptables-Linux:すべての送信パケットに同じ送信元ポートを強制する方法

提案や情報は大歓迎です。 (具体的な例が必要な場合) ありがとうございます。

+0

私見を語るときに書かれたように、この質問がオフトピックですが、FWIW私は、各スレッドが同じソースポートを使用できないようにすべき理由がないとは思わない。 – Alnitak

答えて

1

なぜこれを複数のスレッドから使​​用できないのですか?送信パケットには競合があってはなりません。これは着信接続のポートにバインドするときにのみ問題になります。これは単一のスレッドでしか実行できません。この場合、アプリケーション設計に欠陥があります。連絡を受け入れ、労働者に渡すこと。

質問に答えよう...このiptablesルールは、すべての発信パケットを特定のポートにリダイレクトする必要があります。

iptables -I OUTPUT -j REDIRECT --to-port 5060 

あなたが特定のインターフェイス

iptables -I OUTPUT -i eth0 -j REDIRECT --to-port 5060 

それともだけに、これをバインドしたい場合は、特定の宛先へ

iptables -I OUTPUT -s www.xxx.yyy.zzz -j REDIRECT --to-port 5060 
関連する問題