IPv6 有没有类似于 IPv4 的端口映射的能力? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lifanxi
V2EX    宽带症候群

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

  •  
  •   lifanxi 2024-10-06 09:40:28 +08:00 3401 次点击
    这是一个创建于 369 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    虽然一开始我想要的 1 、2 、3 的效果,但是一圈实践加上仔细思考后,我最后还是决定用 4 的方案,这样各种应用相互隔离,以后如果想再迁移服务器等,改动最小。
    godall
        23
    godall  
       2024-10-09 14:29:41 +08:00
    ipv4 端口转发的原因是 ip 地址有限,所以要端口复用。你 ipv6 了 ip 地址无限了,直接 ip6:PORT 访问就可以了,干嘛还要去转发呢?多此一举,且降低性能。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3605 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:09 PVG 13:09 LAX 22:09 JFK 01:09
    Do have faith in what you're doing.
    ubao 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