首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以bind()将IPTABLES中配置的端口作为转发端口

问可以bind()将IPTABLES中配置的端口作为转发端口
EN

Stack Overflow用户
提问于 2016-03-10 01:08:30
回答 1查看 139关注 0票数 1

我有一个基于linux固件系统的网关。

我有一个iptables规则,它允许将端口8080转发到本地主机。

我正在为这个linux网关开发一个应用程序。此应用程序将选择8000到8100之间的随机端口。然后它将在这个随机端口上生成bind()。

如果随机端口是8080,bind()是否返回OK。然后应用程序可以在端口8080上启动侦听服务器?

我不想与iptables规则冲突。因此,如果bind()返回NOK,那么我可以重试选择另一个随机端口,然后重试绑定。

EN

回答 1

Stack Overflow用户

发布于 2016-03-11 15:46:05

bind()返回ok,并且不检查任何防火墙规则。bind()忽略防火墙规则有几个很好的原因。

  • bind()比iptables早得多,而且它是一个符合POSIX的调用。检查bind()可能会破坏反向的compatibility.
  • Iptables规则,这可能是相当复杂的,并且很难确定iptables是否有意义。可能存在复杂的损坏规则、分配给各种物理和逻辑interfaces...
  • Even的规则,如果可以确定到特定端口的bind()没有意思为否,则规则可能在不久的将来改变,并且绑定的端口可能变为不可用

可以通过像libiptc这样的C接口读取iptables规则,但不推荐这样做:

正如在邮件列表中多次指出的那样,libiptc从来就不是一个公共接口。我们不能保证有一个稳定的接口,计划在下一代linux包过滤中删除它。libiptc的层级太低,无法合理使用。

我们很清楚,这样的API在根本上是缺乏的,我们正在努力改善这种情况。在此之前,建议使用system()或打开进入iptables-restore的stdin的管道。后者将为您提供更好的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35898079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档