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

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

  •  
  •   wayne630 · 2023-08-22 18:27:46 +08:00 · 4929 次点击
    这是一个创建于 488 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    另外,haproxy 其实更合适
    cq65617875
        18
    cq65617875  
       2023-08-23 08:10:25 +08:00
    最好用应用转发
    例如 socat 或者 gost 这种
    iptables 要用到 tproxy
    yuchenr
        19
    yuchenr  
       2023-08-23 09:03:37 +08:00
    随便一个支持双栈 tcp 端口转发就可以
    SSSaya
        20
    SSSaya  
       2023-08-24 06:25:58 +08:00
    op 那直接用 socat/Lucky 就行了
    xinJang
        21
    xinJang  
       2023-08-24 15:58:30 +08:00
    @brader 尝试过 很卡很卡 放弃吧
    wayne630
        22
    wayne630  
    OP
       2023-08-28 10:10:44 +08:00
    @xinJang 这个方案肯定不行,数据去美国绕一圈再回来肯定卡
    blueboyggh
        23
    blueboyggh  
       2023-10-12 21:56:31 +08:00
    为啥我把 socat/lucky 跑在内网的一个 n1 上就不行呢?

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

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