Weekly - issue 33

针对进程设置路由规则

使用 Linux 的 SO_MARK 给流量打标签,然后针对打了标签的流量设置路由。

如何打标签:

  • 通过 iptables 打标签或直接用 ip rule 设置路由

    流量有明显的特征,如固定的目标端口。

  • 通过 LD_PRELOAD

    LD_PRELOAD 设置共享库的路径,可以覆盖动态链接符号的查找顺序。

    替换系统的 socket 函数,然后用 setsockopt(2) 设置 SO_MARK。

  • 通过 setsockopt(2) 设置 SO_MARK

  • 通过 network namespace 配置路由

  • 通过 iptables –uid-owner 匹配

    给进程分配一个单独的用户。

  • 使用 ptrace(2) 拦截系统调用 connect(2)

    获取目标地址,然后代理请求。