Answers:
您将要使用iptables owner模块,也许还需要一些巧妙的数据包处理方法。
owner该模块尝试匹配数据包创建者的各种特征,以用于本地生成的数据包。它仅在OUTPUT链中有效,即使那样,某些数据包(例如ICMP ping响应)也可能没有所有者,因此永远不会匹配。
--uid-owner userid如果数据包是由具有给定有效(数字)用户ID的进程创建的,则匹配。
--gid-owner groupid如果包是由具有给定有效(数字)组ID的进程创建的,则匹配。
--pid-owner processid如果包是由具有给定进程ID的进程创建的,则匹配。
--sid-owner sessionid如果包是由给定会话组中的进程创建的,则匹配。
-m owner
。使用TCP和UDP相当可靠,但其他类型则不太可靠。达到100%的唯一可靠方法是使用VM或容器。
我不确定第一点是否可行。您要根据用户的用户名进行一些路由操作。上次我检查时没有看到这种可能性。
第二点,不是您要使用的iptables,而是iproute2(完整的文档为http://lartc.org/howto/和http://www.policyrouting.org/iproute2.doc.html)。它被认为已过时,替代了ifconfig / route命令。iproute2允许yo根据其来源路由数据包。那就是你想要的