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

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

我的服务器上有 3 个非 root 用户,我想为他们每个人分配不同的 IP 地址(我在一个网络接口上有多个 IP)。例如,用户 1 的 IP 地址为 192.168.1.2,用户 2 的 IP 地址为 192.168.1.3,依此类推。或者,如果不可能,我该如何将特定进程绑定到给定的 IP 地址(我建议使用 iptables 来实现,但如何实现呢?)。谢谢。

答案1

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

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

这还将仅影响来自这些用户所拥有的进程的本地流量。如果这些用户正在设置网络监听守护进程,则需要采用不同的方法来处理回复,如果服务器充当路由器,则此方法将不起作用;但您并未说明这两种情况都适用,因此我尚未解决这些问题。

相关内容