针对进程设置路由规则
使用 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)
获取目标地址,然后代理请求。