V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
pc10201
V2EX  ›  Linux

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

  •  
  •   pc10201 · 17 小时 0 分钟前 · 839 次点击

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

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

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

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

    如果你内核版本足够高,比如 5.10 往上,那你让 AI 给你写一个 cgroup v2 的 ebpf hook ,去 hook 掉 sockops ,强制给你的进程 bind 到某个接口就行(也许可以,没试过)
    v2exgo
        5
    v2exgo  
       14 小时 55 分钟前
    加路由表,然后 iptables 指定用户 走那个路由表,然后用那个用户 运行你的程序,即可
    ovoo
        6
    ovoo  
       14 小时 47 分钟前 via Android
    namespace
    chingyat
        7
    chingyat  
       11 小时 13 分钟前
    把接口移到一个 net namespace 里,然后在那个 namespace 里启动你的程序。
    unused
        8
    unused  
       10 小时 17 分钟前
    简单点就 ip rule 走单独的路由表,规则就看 ip rule 支持的匹配条件,或者 iptables/nftables 打 mark
    暴力点就 ptrace syscall 拦截,然后 pidfd_getfd 拿到 socket
    yanqiyu
        9
    yanqiyu  
       8 小时 50 分钟前
    1. 写几条规则路由,针对包的 tag 路由到不同网卡
    2. 写一个 nft 规则,针对连接的不同 tag 给所有包打 tag ,并且对于某个 cgroups/uid 等等的所有 outbound 连接打连接 tag 。
    3. 用 systemd-run/systemd.unit + NFTSet (系统服务)或者手动切换个用户执行相应的命令
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   964 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 19:31 · PVG 03:31 · LAX 12:31 · JFK 15:31
    ♥ Do have faith in what you're doing.