Linux 服务器上有多个 ip,程序本身不能指定接口,有第三方程序可以强制让程序使用指定接口吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
pc10201
V2EX    Linux

Linux 服务器上有多个 ip,程序本身不能指定接口,有第三方程序可以强制让程序用指定接口吗?

  •  
  •   pc10201 10 小时 56 分钟前 715 次点击

    像 libbind 、proxychains 、部分 tsocks 这类基于 LD_PRELOAD 劫持 libc 的办法,不适合 golang 编写的程序

    有比较便捷的解决方案吗?

    9 条回复    2026-03-13 18:40:28 +08:00
    lingling47
        1
    lingling47  
       10 小时 39 分钟前
    docker 端口映射
    pc10201
        2
    pc10201  
    OP
       10 小时 36 分钟前
    @lingling47 是客户端程序,不是服务器端的
    smallparking
        3
    smallparking  
       9 小时 25 分钟前 via Android
    有代码吗?让 ai 改一下呗
    FabricPath
        4
    FabricPath  
       8 小时 58 分钟前
    如果你知道你程序的远端 IP ,最简单的就是加路由表:

    ip route add 你程序要访问的远端 IP via 你想让你程序用的接口的网关 dev 你想让你程序用的接口 src 你想让你程序用的接口的 IP

    如果你内核版本足够高,比如 5.10 往上,那你让 AI 给你写一个 cgroup v2 的 ebpf hook ,去 hook 掉 sockops ,强制给你的进程 bind 到某个接口就行(也许可以,没试过)
    v2exgo
        5
    v2exgo  
       8 小时 51 分钟前
    加路由表,然后 iptables 指定用户 走那个路由表,然后用那个用户 运行你的程序,即可
    ovoo
        6
    ovoo  
       8 小时 43 分钟前 via Android
    namespace
    chingyat
        7
    chingyat  
       5 小时 9 分钟前
    把接口移到一个 net namespace 里,然后在那个 namespace 里启动你的程序。
    unused
        8
    unused  
       4 小时 13 分钟前
    简单点就 ip rule 走单独的路由表,规则就看 ip rule 支持的匹配条件,或者 iptables/nftables 打 mark
    暴力点就 ptrace syscall 拦截,然后 pidfd_getfd 拿到 socket
    yanqiyu
        9
    yanqiyu  
       2 小时 46 分钟前
    1. 写几条规则路由,针对包的 tag 路由到不同网卡
    2. 写一个 nft 规则,针对连接的不同 tag 给所有包打 tag ,并且对于某个 cgroups/uid 等等的所有 outbound 连接打连接 tag 。
    3. 用 systemd-run/systemd.unit + NFTSet (系统服务)或者手动切换个用户执行相应的命令
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2884 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 13:27 PVG 21:27 LAX 06:27 JFK 09:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86