lifanxi

请教: IPv6“内网”设备透出到到公网的正确姿势

  •  
  •   lifanxi · Jan 24, 2019 · 28217 views
    This topic created in 2847 days ago, the information mentioned may be changed or developed.
    家里的宽带一直分配不到 IPv6 地址,所以也没关注和学习 IPv6 的相关技术。大前天终于找到了渠道,电信把我分配不到 IPv6 地址问题解决了,果然是他们后台配置的问题,不是我的问题。
    现在在路由器上用 Native 模式(目前路由器用的是原版 Merlin,马上可能会换成 OpenWrt ),通过 DHCPv6-PD,我的路由器和内网设备都能拿到公网 IPv6 地址。从外网可以 ping 通所有这些地址,但是只能访问路由器上的服务,不能访问内网设备的服务。

    对这个现象我的理解如下:
    无论是路由器还是内网设备,在 IPv6 的环境下,拿到的都是公网 IPv6 地址。访问不到内网服务的原因是,路由器上的防火墙配置默认只允许 ICMPv6、已完成连接的和新建出站的连接通过,不允许其它 IPv6 的入站连接( RFC4890 ?)。
    所以在 IPv6 环境下,与 IPv4 NAT 环境的“端口映射”相对应的配置,应该是打开防火墙对应端口。
    尝试了下,打开端口后在外网确实可以访问到对应 IPv6 设备上的服务。

    问题来了:
    我的 IPv6 地址和前缀是 DHCPv6 和 DHCPv6-PD 分配的,如果重新拨号,路由器和所有内网设备的 IPv6 地址都会变化。
    地址变化这件事本身不怕,用 DDNS 一样可以解决,但是路由器上配置的开放内网服务的防火墙应该怎么办呢?配置防火墙时已经写死了内网设备的 IPv6 地址,怎么才能根据拨号的结果自动动态调整呢?
    16 replies  •  2022-02-11 11:20:23 +08:00
    cwbsw
    cwbsw
    Jan 24, 2019❤️1
    1
    两个办法。
    1. 防火墙规则只写端口不指定地址。
    2. 使用类似 ip6tables -I FORWARD -d ::1234:5678:abcd:dcba/::ffff:ffff:ffff:ffff -j ACCEPT 的规则匹配地址后缀。
    BOYPT
    BOYPT
    Jan 24, 2019❤️2
    2
    在路由器 iptables 中匹配 IPv6 动态地址
    https://blog.ptsang.net/match-ipv6-dynamic-addresses-in-iptables
    qwvy2g
    qwvy2g
    Jan 24, 2019❤️1
    3
    华硕界面上是这么写的:
    您可以不填写远程 IP 地址,以允许来自任何远程主机的流量传入。您也可以设置为一个子网。 (例如:2001::1111:2222:3333/64)
    当然也可以将本地地址和远程地址都写::/0
    geekvcn
    geekvcn
    Jan 24, 2019 via iPhone
    4
    有 v4 不用 v6,最简单的就是梅林关闭 v6 防火墙,不建议这么做,其次就是上面的写::/0,不过我记得梅林只要填一个,外加端口,因为 v6 不像 v4 要 NAT
    ttvast
    ttvast
    Jan 24, 2019
    5
    上 V6 NAT, 最好的解决方案, 协议简单,配置简单,使用简单,并且各种设置方式和 V4 没有区别
    ysys123
    ysys123
    Jan 24, 2019 via Android
    6
    天津移动的宽带 我家里没有这问题 所有支持 v6 设备都有公网地址 直接就可以访问 实在是太方便了
    sjklong
    sjklong
    Jan 24, 2019
    7
    @ysys123 请问有没有试过大流量访问 只想知道上传理想状态下速度跑的怎么样
    LGA1150
    LGA1150
    Jan 24, 2019 via Android
    8
    把客户端的随机生成 EUI64 选项关掉,然后用#1 的方法
    lifanxi
    lifanxi
    OP
    Jan 25, 2019
    9
    谢谢各位讨论。在 Merlin 固件上试了下,本地 IP 不能不写,但可以写后 64 位来匹配。问题暂时解决。
    使用隐私扩展地址的场景暂时还没深究,后面再想想,这种可能不太好解。
    LGA1150
    LGA1150
    Jan 25, 2019 via Android
    10
    @lifanxi 隐私扩展的 IPv6 地址是客户端访问外面用的,实际上客户端有两个 IPv6 地址,带隐私扩展的和不带(即 EUI64 )的
    wowplayer
    wowplayer
    Jan 25, 2019
    11
    @LGA1150 我这边用 openwrt 好像没有楼主这种问题啊 内网的 FTP 和路由 web 一样 都可以 V6 公网直接连接 不太明白我为什么不需要楼上这些设置
    lifanxi
    lifanxi
    OP
    Jan 25, 2019 via Android
    12
    @wowplayer 那就是路由器上的防火墙没开或者策略太松咯。但是按理说 OpenWrt 默认配置不应该这么宽松,难道是别有用心的版本?
    imfannet
    imfannet
    Jan 27, 2019❤️1
    13
    配置 ip6tables 按结尾匹配地址即可(或者匹配 MAC 地址?没试过) EUI-64 用 MAC 地址生成有个固定规则 隐私扩展开启只负责你的设备访问远程设备时用的地址 远程主动访问你的设备还是要看自动获取或你手工配置的相对不变动的地址
    conanlcg
    conanlcg
    Sep 3, 2019
    14
    你好楼主,我也遇到这个问题了,请问你是怎么解决的呢?填写内网 IPV6 地址的确外网可以访问内网的电脑,但是分配的 IPV6 会变动呀。。。

    https://ae01.alicdn.com/kf/H526cad82a09247f1a546fbb99c69e821n.png
    wslzy007
    wslzy007
    Nov 21, 2019
    15
    推荐解决方案: https://github.com/lazy-luo/smarGate 路由器不用任何配置,提供 v6 防火墙穿透
    Livid
    Livid
    MOD
    PRO
    Feb 11, 2022
    16
    通常在填地址的地方,不要填具体的地址,可以填范围。比如类似 2600:100e:be18::/47 这样。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4637 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 06:26 · PVG 14:26 · LAX 22:26 · JFK 01:26
    ♥ Do have faith in what you're doing.