V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
lifanxi

IPv6 有没有类似于 IPv4 的端口映射的能力?

  •  
  •   lifanxi · Oct 6, 2024 · 3871 views
    This topic created in 570 days ago, the information mentioned may be changed or developed.

    以前我家里内网有一台应用服务器对外提供服务,我的 OpenWrt 路由器上的配置就是 IPv4 做了一个端口映射到这台服务器上,IPv6 直接把 DDNS 指向这台服务器,并在路由器上开放相应的端口。完美。

    最近对这台应用服务器做了拆分,拆成了多台 VM 在不同的 IP/端口上提供不同的服务。这时 IPv4 很容易解决,把相应的端口映射改到各台 VM 上就行。但 IPv6 不知道该怎么处理了,没有办法在路由上配置出类似 IPv4 的转发策略?

    23 replies    2024-10-09 14:29:41 +08:00
    bigfei
        1
    bigfei  
       Oct 6, 2024 via Android   ❤️ 1
    ipv6tables 也是可以 redirect 的
    rulagiti
        2
    rulagiti  
       Oct 6, 2024
    基本上 ipv6 能做的 ip6tables 都能做
    rulagiti
        3
    rulagiti  
       Oct 6, 2024
    @rulagiti ipv4 能做的
    blueboyggh
        4
    blueboyggh  
       Oct 6, 2024 via Android
    你的多台 vm 没有自己的 v6 地址吗?
    lifanxi
        5
    lifanxi  
    OP
       Oct 6, 2024
    @bigfei 仔细看了一下 OpenWrt 的配置界面,确实可以配 IPv6 的端口映射,我来试试看。
    lifanxi
        6
    lifanxi  
    OP
       Oct 6, 2024
    @blueboyggh 有的,每台都不一样。但是如果用 DDNS 的方案,那就要绑定到几个不同的域名上,我还是希望通过一个域名用不同的端口访问到不同的服务。
    zbinlin
        7
    zbinlin  
       Oct 6, 2024
    openwrt 不是支持 {hostname}.lan 来访问内网主机吗,你直接在 openwrt 做一个服务转发,然后根据不同的子域名转发到对应的主机服务上不就行了?
    feng0vx
        8
    feng0vx  
       Oct 6, 2024 via iPhone
    feng0vx
        9
    feng0vx  
       Oct 6, 2024 via iPhone
    另外设置防火墙 ipv6 入站 rules
    feng0vx
        10
    feng0vx  
       Oct 6, 2024
    不好意思没看全,此上三层请忽略~
    lentrody
        11
    lentrody  
       Oct 6, 2024 via Android   ❤️ 1
    IPv6 时代的正确习惯就是给每台设备分配子域名。
    在一台设备上跑 DDNS 脚本就同时更新所有同网关下设备的 IPv6 地址,只要设备的 IPv6 地址是固定后缀就行。
    可以这样本地拼接再提交 https://github.com/ddnspod/dnspod-ipv6-ddns/blob/master/dnspod-ipv6-ddns.sh
    也可以提交后让服务商自己拼接 https://dynv6.com/docs/apis
    blueboyggh
        12
    blueboyggh  
       Oct 6, 2024 via Android   ❤️ 1
    @lifanxi 那你主路由装个 lucky 就好了,端口转发工具,支持 v6 转发,主路由如果装不了软件,就找其中一个 vm 装,然后 ddns 绑定到这个 vm
    A1188
        13
    A1188  
       Oct 6, 2024 via Android   ❤️ 1
    试试 Socat ?
    SenLief
        14
    SenLief  
       Oct 6, 2024
    这个内网装个反代就可以了 nginx caddy 什么的都行,或者直接用 socat 链接两个端口。
    lifanxi
        15
    lifanxi  
    OP
       Oct 6, 2024
    @blueboyggh @A1188 @SenLief
    谢谢建议,反代或者转发是最后一条路,如果能直连我还是倾向于直连。因为毕竟多跳了一下,多增加了一个不稳定因素。
    目前试下来,@bigfei 说的直接配端口射映貌似是可以,我在 OpenWrt 上配置 DNAT 到另一台机器的 IPv6 地址是可以的。不过,如果用公网 IPv6 地址前缀会变,它貌似不支持动态前缀的写法,我还在继续试验改成用 ULA IPv6 地址试试。
    bobryjosin
        16
    bobryjosin  
       Oct 6, 2024
    你的需求不就是 ipv6 nat ? nat 后就和 ipv4 一样可以端口映射了,内网每台机器和路由上都配一个静态的内网 ipv6 地址,有公网地址的路由上做一个 DNAT 不就行了,这样就不需要管前缀了。
    dislike
        17
    dislike  
       Oct 6, 2024
    用 socat 吧,主路由 ipv6 做 DDNS,然后把各个端口分别用 socat 映射到内网各 VM 的 ipv4 地址就可以了,这样内网的 V4 地址固定,更容易管理.
    xyz3210
        18
    xyz3210  
       Oct 6, 2024
    @lifanxi 使用反向代理不就好了。只要内网 v4 固定,设置端口就可以了
    flynaj
        19
    flynaj  
       Oct 7, 2024 via Android
    openwrt 里面的 socat 可以满足你,可以 v4 ,v6 互相转换,也可以转发。
    momo65535
        20
    momo65535  
       Oct 7, 2024
    安装 socat
    maybeonly
        21
    maybeonly  
       Oct 7, 2024   ❤️ 1
    对于 tcp 和 udp ,ip6tables 可以实现和 iptables 一样的 nat 。
    对于 http 类服务,根据需求,还可以选择 http 代理的模式做反向代理。
    以及,建议还是用不同的域名区分不同的服务,毕竟就算是 ipv4 ,也可以用 host 区分( http 服务),就算不同的域名也可以加端口。
    lifanxi
        22
    lifanxi  
    OP
       Oct 8, 2024
    感谢楼上各位。

    这几天试了各位推荐的各种方法,都可行:
    1. 直接像 IPv4 一样端口映射:直接在 OpenWrt 的 LuCI 上就可配置。对于动态 IPv6 前缀会变的情况,可以用 SLAAC+ULA 的固定地址做转发。
    2. 用 socat 转发:最灵活简单的一种做法。
    3. 用 nginx 等搭反向代理:不过我不喜欢这个方式,因为多了一层七层的转发,重。
    4. 为每台设备单独绑定 DDNS 域名:最直接的做法。

    虽然一开始我想要的 1 、2 、3 的效果,但是一圈实践加上仔细思考后,我最后还是决定用 4 的方案,这样各种应用相互隔离,以后如果想再迁移服务器等,改动最小。
    godall
        23
    godall  
       Oct 9, 2024
    ipv4 端口转发的原因是 ip 地址有限,所以要端口复用。你 ipv6 了 ip 地址无限了,直接 ip6:PORT 访问就可以了,干嘛还要去转发呢?多此一举,且降低性能。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5222 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 09:36 · PVG 17:36 · LAX 02:36 · JFK 05:36
    ♥ Do have faith in what you're doing.