在我的Debian系统中,我希望我的一个用户使用不同的networking接口作为所有Internet通信的默认路由。 我知道如何使用iptables阻止其他接口,但不知道如何设置默认路由,所以只影响到它们。 可能吗?
根据用户ID看起来有些困难(他们是通过SSH连接到你的服务器,还是只是把它用作路由器?),如果你能控制你的networking,你可以很容易地通过IP或MAC地址来实现。
快速浏览iptables手册页,显示支持owner模块根据用户和/或组ID来设置规则。 它只适用于本地生成的数据包(即不在pipe理来自不同工作站的stream量的路由器上)。
然后,基于策略的路由设置出现在脑海中,结合如下:
iptables -A OUTPUT -o owner --uid-owner <uid> -j MARK --set-mark 21 ip rule add fwmark 21 table 22 ip route add default via <alternate_gateway> table 22
UNTESTED!
防火墙标记(21)和路由表标识符(22)的编号是任意的。
通过使用CLONE_NEWNET可以将部分stream程树放置在单独的networking名称空间中。 每个名称空间都作为独立的networking堆栈工作。 每个networking接口一次只能在一个名称空间中使用。 networking命名空间之间的数据包可以使用虚拟networking接口发送。
我不能从你的问题中知道,如果这是一个适合你的解决scheme。