我可以为不同的用户有不同的路由表吗?

我的Linux机器有两个帐户。 我想为不同的帐户设置不同的默认网关。 如果有可能,我该怎么做?

路由表是一个系统范围内的事情,而不是用户特定的。 所以,这并不简单。

步骤如下:

1:使用ip routeip rule命令的广泛使用来创build多个路由表。

2:设置iptables根据发送者进程的UID标记出去的数据包。

3:根据标记(从iptables获取的出站数据包)设置路由表。

解决scheme将是属于用户的所有进程将使用备用路由表。


扩展#1:不幸的是, ip routeip rule并没有很好的logging。 但是您可以使用不同的规则创build多个路由表。 当心:它们是路由表,与iptables完全不同的东西! 而且,诀窍是你可以在iptables中“标记”数据包,这意味着你可以给它们一个整数值。 最后,您可以设置iptables规则,以路由其他方式(与其他路由表)标记的数据包。 这是干净的,一个很好的function,但没有很好的logging。

分机2: AFAIK ip rule是处理多个路由表实体的命令。 通过ip route您还可以设置要插入(修改)给定路由的路由表。

扩展#3:通过iptables更改传出数据包的路由表并不是微不足道的, 这篇文章也做了我所做的工作。