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

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

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

    https://ae01.alicdn.com/kf/H526cad82a09247f1a546fbb99c69e821n.png
    wslzy007
        15
    wslzy007  
       2019-11-21 13:19:51 +08:00
    推荐解决方案: https://github.com/lazy-luo/smarGate 路由器不用任何配置,提供 v6 防火墙穿透
    Livid
        16
    Livid  
    MOD
       2022-02-11 11:20:23 +08:00
    通常在填地址的地方,不要填具体的地址,可以填范围。比如类似 2600:100e:be18::/47 这样。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1061 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:32 · PVG 02:32 · LAX 10:32 · JFK 13:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.