将进程或用户绑定到特定 IP (Linux)

art*_*tem 8 linux debian ip iptables

我的服务器上有 3 个非 root 用户,我想为他们每个人提供不同的 IP 地址(我在一个网络接口上有多个 IP)。例如,user1 将有 192.168.1.2,user2 - 192.168.1.3 等等。或者,如果不可能,我如何将特定进程绑定到给定的 IP 地址(我建议,可以使用 iptables,但是如何?)。谢谢。

Mad*_*ter 11

iptables -t nat -A POSTROUTING -m owner --uid-owner user1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -m owner --uid-owner user2 -j SNAT --to-source 192.168.1.3
iptables -t nat -A POSTROUTING -m owner --uid-owner user3 -j SNAT --to-source 192.168.1.4
Run Code Online (Sandbox Code Playgroud)

您有责任确保 (a) 您没有以其他方式使用 POSTROUTING nat 链,因此这些规则不会与其他任何规则发生冲突,并且 (b) 所有这些 IP 地址都存在于您的 NIC 上(您不会否则听到许多答复)。

这也只会影响来自这些用户拥有的进程的本地流量。如果这些用户正在设置网络侦听守护程序,则需要不同的方法来处理回复,如果服务器充当路由器,则这将不起作用;但是你没有说这两种情况都适用,所以我没有解决这些问题。