如何在没有活动 PID 的情况下保持端口开放

如何在没有活动 PID 的情况下保持端口开放

我有一些 iptables 端口转发,我想确保系统上没有其他进程使用这些端口。我可以自己 bind() 套接字,这样其他进程就会获得 EADDRINUSE,但如果我的进程死亡,这些套接字将再次可用,我可能会输掉竞争。

例如:

  • 我将端口 8000 设置为其他目的地
  • 其他进程尝试 bind() 到 8000
  • 其他进程应该失败

另一种顺序是:

  • 其他进程 binds() 到 8000
  • 我尝试在端口 8000 上设置端口转发
  • 我失败了

我正在寻找一些巧妙的技巧,让内核将端口视为我已打开的端口,即使没有活动的 PID。类似 NS FD(https://lwn.net/Articles/407495/)。

我知道这有点牵强,但我正在努力避免基于流程的解决方案。

相关内容