V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wayne630
V2EX  ›  宽带症候群

如何把 IPv6 的流量转发到 IPv4 上?

  •  
  •   wayne630 · 249 天前 · 3282 次点击
    这是一个创建于 249 天前的主题,其中的信息可能已经有所发展或是发生改变。

    路由器是 OpenWRT x86 ,上面运行着一个远古服务,它只能如 0.0.0.0:8888 这样监听 IPv4 ,并不能如::8888 这样双栈监听。宽带目前只有公网 v6 ,所以在外网并不能访问这个服务,有没最简单的办法能在公网通过 v6 访问这个服务呢?谢谢大家!

    23 条回复    2023-10-12 21:56:31 +08:00
    brader
        1
    brader  
       249 天前
    我记得 cloudflare 可以接收 v6 流量转发 v4 流量
    yzc27
        2
    yzc27  
       249 天前 via iPhone
    刚刚问了下 chatgpt ,它的解决方案里有用到 iptables
    cnbatch
        3
    cnbatch  
       249 天前
    能否这样:开个端口转发,设置成仅监听 IPv6 的 8888 ,然后转发给 127.0.0.1:8888
    Muniesa
        4
    Muniesa  
       249 天前 via Android
    nginx 转发一下就可以吧
    fox0001
        5
    fox0001  
       249 天前 via Android
    如果能使用 Nginx 之类做反向代理,就简单了。
    wayne630
        6
    wayne630  
    OP
       249 天前
    nginx 试过反代了,不太行,客户端连接很久后提示 400 错误
    sunmacarenas
        7
    sunmacarenas  
       249 天前 via Android
    openwrt 上用 socat 配置 ipv6 转发
    wayne630
        8
    wayne630  
    OP
       249 天前
    @sunmacarenas 非常感谢! socat 完美解决了我的问题!
    执行如下命令:
    socat TCP6-LISTEN:8889,reuseaddr,fork TCP4:127.0.0.1:8888 &
    在公网通过 IPv6 访问 8889 端口,即可访问原来仅能通过 IPv4 访问 8888 端口才能访问的服务。
    再次感谢!
    Tink
        9
    Tink  
       249 天前 via Android
    iptables 转一下呗
    hzqim
        10
    hzqim  
       249 天前 via Android
    有一个项目叫 大吉(lucky)
    https://github.com/gdy666/lucky
    linshiyouxiang
        11
    linshiyouxiang  
       249 天前
    @wayne630 追加一个 openwrt 上 [luci-app-socatg]( https://github.com/big-tooth/luci-app-socatg) 图形界面, 使用完美.

    内网要是有 v2ray 也能通过其转发.
    linshiyouxiang
        12
    linshiyouxiang  
       249 天前
    表达有误, 内网有 v2ray ,也能通过 v2ray 转发那个 远古服务
    tyhunter
        13
    tyhunter  
       249 天前
    #10 提到的 Lucky 挺好用的,用端口转发就行,我在 NAS 上跑了 SS ,在 3xxx 端口,然后在路由器的 Lucky 上配置了端口转发(监听 NAS IP:3xxx 转发到路由器的 3xxxx 端口)和 DDNS ,这样手机直接配置 SS 的地址为 DDNS:3xxxxx 就能直接连回家了,和内网操作一样
    lovelylain
        14
    lovelylain  
       249 天前 via Android
    @wayne630 nginx 是可行的,你没成功是你的问题。折腾 nginx 可以在 ipv6 直连和 frp 反代时下游的 web 服务都能取到客户端 ip 。
    SlYyWc
        15
    SlYyWc  
       249 天前
    opkg install socat
    wayne630
        16
    wayne630  
    OP
       249 天前 via iPhone
    @lovelylain 问题是后端不是标准的 web 服务。总之就是折腾了半天 nginx 都 400
    aru
        17
    aru  
       249 天前
    @wayne630
    不是标准服务就要用 nginx 的 stream 模块做 tcp/udp 的转发
    https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

    另外,haproxy 其实更合适
    cq65617875
        18
    cq65617875  
       249 天前
    最好用应用转发
    例如 socat 或者 gost 这种
    iptables 要用到 tproxy
    yuchenr
        19
    yuchenr  
       249 天前
    随便一个支持双栈 tcp 端口转发就可以
    SSSaya
        20
    SSSaya  
       248 天前
    op 那直接用 socat/Lucky 就行了
    xinJang
        21
    xinJang  
       247 天前
    @brader 尝试过 很卡很卡 放弃吧
    wayne630
        22
    wayne630  
    OP
       244 天前
    @xinJang 这个方案肯定不行,数据去美国绕一圈再回来肯定卡
    blueboyggh
        23
    blueboyggh  
       198 天前
    为啥我把 socat/lucky 跑在内网的一个 n1 上就不行呢?

    n1 现在用 v6 地址可以连上 ssh ,但是想通过 n1 走 socat/lucky 转发到局域网内的其他设备,就访问不到

    有没有大佬给解解惑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5767 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:53 · PVG 10:53 · LAX 19:53 · JFK 22:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.