
像 libbind 、proxychains 、部分 tsocks 这类基于 LD_PRELOAD 劫持 libc 的办法,不适合 golang 编写的程序
有比较便捷的解决方案吗?
1 lingling47 10 小时 39 分钟前 docker 端口映射 |
2 pc10201 OP @lingling47 是客户端程序,不是服务器端的 |
3 smallparking 9 小时 25 分钟前 via Android 有代码吗?让 ai 改一下呗 |
4 FabricPath 8 小时 58 分钟前 如果你知道你程序的远端 IP ,最简单的就是加路由表: ip route add 你程序要访问的远端 IP via 你想让你程序用的接口的网关 dev 你想让你程序用的接口 src 你想让你程序用的接口的 IP 如果你内核版本足够高,比如 5.10 往上,那你让 AI 给你写一个 cgroup v2 的 ebpf hook ,去 hook 掉 sockops ,强制给你的进程 bind 到某个接口就行(也许可以,没试过) |
5 v2exgo 8 小时 51 分钟前 加路由表,然后 iptables 指定用户 走那个路由表,然后用那个用户 运行你的程序,即可 |
6 ovoo 8 小时 43 分钟前 via Android namespace |
7 chingyat 5 小时 9 分钟前 把接口移到一个 net namespace 里,然后在那个 namespace 里启动你的程序。 |
8 unused 4 小时 13 分钟前 简单点就 ip rule 走单独的路由表,规则就看 ip rule 支持的匹配条件,或者 iptables/nftables 打 mark 暴力点就 ptrace syscall 拦截,然后 pidfd_getfd 拿到 socket |
9 yanqiyu 2 小时 46 分钟前 1. 写几条规则路由,针对包的 tag 路由到不同网卡 2. 写一个 nft 规则,针对连接的不同 tag 给所有包打 tag ,并且对于某个 cgroups/uid 等等的所有 outbound 连接打连接 tag 。 3. 用 systemd-run/systemd.unit + NFTSet (系统服务)或者手动切换个用户执行相应的命令 |