Firewall-Iptables-Linux:如何为所有传出数据包强制使用相同的源端口

时间:2016-04-07 20:44:11

标签: linux multithreading sockets iptables

我正在开发一个由多个processus组成的tcl语言的应用程序。 每个进程必须使用套接字(IP,端口)将数据发送到外部IP地址。 我应该只使用端口5060(因为我正在模拟SIP服务器)。 问题是每次使用套接字时只有一个线程可以使用端口5060(因此不可能使用相同源端口的并行线程),所以我应该解决这个问题。 我想知道当多个线程同时运行时,我是否可以使用linux iptables来更改每个线程使用的源端口(每个线程在不同的套接字上)==>所有从机器传输的数据包都使用相同的源端口5060。

欢迎提出任何建议或信息。 (如果是这样,我需要一个具体的例子) 非常感谢你提前。

1 个答案:

答案 0 :(得分: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