【发布时间】:2016-03-09 17:08:30
【问题描述】:
我有一个基于 linux 固件系统的网关。
我有一个iptables 规则,允许将端口 8080 转发到本地主机。
我正在为这个 linux 网关开发一个应用程序。
此应用程序将在 8000 和 8100 之间选择一个随机端口。然后它会在这个随机端口上生成bind()。
如果随机端口是 8080,bind() 是否返回 OK。然后应用程序可以在端口 8080 上启动侦听服务器?
我不想与iptables 规则发生冲突。
因此,如果bind() 返回 NOK,那么我可以重试选择另一个随机端口,然后重试绑定。
【问题讨论】:
-
转发独立于绑定而存在。如果没有进程绑定到某个端口,则该端口可用于绑定,即使进出该端口的任何流量已被转发到其他地方。
-
@MarcB 有没有办法找出用 C 进行 iptables 转发时使用的所有端口?
-
iptables 必须能够读出它自己的内部规则表,所以可能有一个 api/interface 可以在某个地方获取这种数据。