我的 Linux 机器有两个账户。我想为不同的账户设置不同的默认网关。如果可以的话,我该怎么做?
答案1
路由表是系统范围内的,而不是用户特定的。所以,它并不简单。
步骤如下:
1:大量使用ip route
和ip rule
命令创建多个路由表。
2:设置 iptables 根据发送方进程的 UID 标记传出的数据包。
3:根据标记(传出的数据包从 iptables 获得)设置路由表。
解决方案是属于某个用户的所有进程都将使用备用路由表。
扩展 #1:不幸的是,ip route
和并ip rule
没有很好的文档记录。但是您可以创建多个具有不同规则的路由表。注意:它们是路由表,与 iptables 完全不同!而且,诀窍在于您可以在 iptables 中“标记”数据包,这实际上意味着您可以为它们赋予单个整数值。最后,您可以设置 iptables 规则以将标记的数据包路由到其他方式(使用其他路由表)。它很简洁,并且功能良好,但文档记录并不完善。
扩展 #2:据我所知,这ip rule
是处理多个路由表实体的命令。ip route
您还可以设置要将给定路由插入(修改)到哪个路由表中。
扩展 #3:通过 iptables 更改传出数据包的路由表并非易事,这个帖子做什么也由我起作用。
答案2
但是请看我的例子 uidrange 路由表