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

在同一个局域网内能选择部分设备开启 ipv6

  •  
  •   YongXMan · 2023-02-23 08:47:26 +08:00 via Android · 2845 次点击
    这是一个创建于 639 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想实现在同一个局域网内能选择部分设备开启 ipv6 ,但发现 dhcpv6 没有类似的功能,因为开启 ipv6 后安卓设备科学上网有问题,设备不 root 也不方便关闭,但局域网内有其他设备需要开启 ipv6 ,如果能在 dhcp server 进行控制就完美了,不知道有什么解决方案?
    第 1 条附言  ·  2023-02-24 23:25:23 +08:00
    因为 android 设备没办法手动配置 ipv6 ,所以才想在路由器找方案。

    路由器上关闭 DHCPv6 无状态,只保留有状态模式,android 设备就不会获取到 ipv6 地址了,而其他设备 windows macos linux 都可以方案的按需配置,我的问题解决了。
    38 条回复    2023-02-25 23:22:32 +08:00
    Jays
        1
    Jays  
       2023-02-23 08:59:11 +08:00 via Android   ❤️ 1
    https://www.v2ex.com/t/664819

    可以参考下这个,但是我测试了,不太好用。可能当天有效,然后非指定的设备还是可以自动获取到 ipv6 地址和 ipv6 dns
    terrancesiu
        2
    terrancesiu  
       2023-02-23 09:11:59 +08:00
    我是用 vlan 隔离的
    maybeonly
        3
    maybeonly  
       2023-02-23 09:14:08 +08:00   ❤️ 1
    1.分 vlan 只在特定 vlan 开启
    2.ip6tables 干掉 ra/dhcpv6 看上面那个
    3.
    其实只要把来自你不喜欢的设备的 ipv6 请求都 drop 掉就行了,甚至可以做成白名单
    这样设备会认为 v6 不可用而自动用 v4 ,即使他有 v6 地址
    e.g.
    ip6tables -A FORWARD -i br0 -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT
    ip6tables -A FORWARD -i br0 -j REJECT
    pagxir
        4
    pagxir  
       2023-02-23 09:14:21 +08:00 via Android
    那就把科学上网的问题解决了吧。
    YongXMan
        5
    YongXMan  
    OP
       2023-02-23 09:26:41 +08:00
    @terrancesiu 开启 vlan 主路由网卡不支持硬件解包,CPU 消耗比较大,所以没有开启 vlan ,并且很多智能家居设备需要在同一个 lan 中,开启 vlan 不太方便,所以想在一个局域网中解决这个问题。
    Senorsen
        6
    Senorsen  
       2023-02-23 09:29:39 +08:00 via iPhone   ❤️ 1
    我在 openwrt 配了可以的,首先比较重要的是关闭 slaac ,然后再配 firewall ,禁止所有 ipv6 udp 546-547 入站,允许部分设备(想给 ipv6 的)的 mac 地址入站。这样就可以了
    Senorsen
        7
    Senorsen  
       2023-02-23 09:31:04 +08:00 via iPhone
    接上条,我一般只给需要开 PT/BT 的 NAS 等设备按需开放 ipv6 地址,电脑和 PS5 等其他设备都不给
    yaott2020
        8
    yaott2020  
       2023-02-23 09:31:26 +08:00 via Android
    你不如劫持 ipv6 dns ban 掉境外 aaaa 记录
    rainsounds
        9
    rainsounds  
       2023-02-23 09:59:27 +08:00
    lcy630409
        10
    lcy630409  
       2023-02-23 10:08:09 +08:00
    换一种思路,我目前的
    开启 ipv6 但是 ipv6 不给 dns ,ipv4 的 dns 只允许 ipv4 返回
    MikuM97
        11
    MikuM97  
       2023-02-23 10:18:06 +08:00
    选择一款可以支持代理 IPv6 的科学工具,例如 passwall ,然后用主路由做代理,完美解决开启 ipv6 后无法科学的问题
    yanyanjia
        12
    yanyanjia  
       2023-02-23 10:19:13 +08:00
    用 mosdns ,过滤掉非 cn 域名的 v6 的 AAAA 解析,我感觉体验还是很好的
    fuzzsh
        13
    fuzzsh  
       2023-02-23 10:55:52 +08:00 via Android   ❤️ 2
    Android 只有 SLAAC 关了就不能获取地址了

    Windows/macOS/iPadOS 都支持 DHCPv6
    kukat
        14
    kukat  
       2023-02-23 12:07:44 +08:00
    是不是没设置好,我家 openwrt+ipv6+openclash 全家上网没遇到问题
    Bingchunmoli
        15
    Bingchunmoli  
       2023-02-23 12:43:50 +08:00 via Android
    换支持 v6 的节点😄
    IDAEngine
        16
    IDAEngine  
       2023-02-23 15:27:27 +08:00
    用 adguardhome 做内网 dns ,然后屏蔽掉 ipv6 解析
    icebow
        17
    icebow  
       2023-02-23 16:17:51 +08:00
    也是同样的需求, 我用 lede/openwrt 同样也没办法给特定的设备分配 ipv6, 所以我弄了一个折中的方式:
    在 DHCP/DNS - 高级设置 - 禁止解析 IPv6 DNS 记录

    这样完全满足我的需求了, 在外面可以通过 ipv6 访问我的设备, 在家也不影响科学上网, 同时也防止了使用 ipv6 导致各种 cdn 失效的问题
    wwbfred
        18
    wwbfred  
       2023-02-23 16:39:20 +08:00
    新建一个网桥绑定另外一个网段,和之前那个网桥的唯一区别是它不开启 IPV6 。然后有线连接根据物理接口绑定到需要的网桥上,无线可以开两个 SSID ,分别绑定不同的网桥。OPENWRT 的话两个网桥是默认互通的,不会有被隔离的问题。
    我之前使用过楼上提到的 iptables 拦截 546 端口和 icmp 的方案,它的问题是与 slaac 不兼容,会导致重新拨号的长时间断网和 android 设备无法正常工作。还有 DNS 拦截 AAAA 也可以尝试,unbound 就可以做到。
    lihang1329
        19
    lihang1329  
       2023-02-23 17:11:15 +08:00
    iptable 直接 drop 包有个问题,就是手机老是触发 fallback ,现象就是断流嗷
    Jays
        20
    Jays  
       2023-02-23 17:17:08 +08:00 via Android
    @lihang1329 同感!
    Jays
        21
    Jays  
       2023-02-23 17:19:36 +08:00 via Android
    @lcy630409 我现在用的就是这个思路,主路由关闭 aaaa 解析,手动给 nas 配置支持 ipv6 解析的 dns ,其他设备直接使用主路由 ip 作为 dns 。但是安卓还是会 ipv6 地址,有点不爽,但不影响使用。
    lifanxi
        22
    lifanxi  
       2023-02-23 17:21:49 +08:00
    我在 dnsmasq 上游加了一个 smartdns ,然后用 smartdns 过滤掉不想要的 AAAA 记录结果。
    lihang1329
        23
    lihang1329  
       2023-02-23 17:53:29 +08:00
    最好是划分 vlan, 一个 lan 开 ipv6,一个 lan 只有 ipv4 。
    Jays
        24
    Jays  
       2023-02-23 19:46:44 +08:00 via Android
    @lihang1329 划分完,两个 vlan 能互通吗?可以互通的话 会不会 还会接收到自动分配 ipv6 地址和 dns ?
    lihang1329
        25
    lihang1329  
       2023-02-23 21:07:48 +08:00
    @Jays Openwrt 是互通,就是新建一个 dhcp 网段,开启 ipv6 即可,把要用 ipv6 的设备用网线的方式接入即可。如果是虚拟机的话,就是加个网口的问题,就是双栈网络了
    lihang1329
        26
    lihang1329  
       2023-02-23 21:10:28 +08:00
    @Jays ipv6 分配的时候只会分配当前网段
    lihang1329
        27
    lihang1329  
       2023-02-23 21:11:05 +08:00
    @Jays DNS 我建议关闭 ipv6 的返回,不然你 ipv4 的网络获取到 ipv6 的地址会出现访问超时的问题
    Jays
        28
    Jays  
       2023-02-23 22:34:54 +08:00 via Android
    @lihang1329 好的 谢谢
    jcxq5200
        29
    jcxq5200  
       2023-02-23 23:26:08 +08:00 via iPhone
    5.15 内核的 openwrt 可以设置不下发 ipv6dns 服务器。mosdns 国外域名屏蔽 AAAA 。这样不影响国内 ipv6 域名
    dcsuibian
        30
    dcsuibian  
       2023-02-23 23:40:59 +08:00
    家里有一台 nvidia shield ,用 Clash for Android 总是出问题,需要透明代理。
    我的选择是,搞一个旁路由,开启科学上网,shield 就采用手动 ip 地址设定(这种情况下应该不会有 ipv6 )。

    家里的主路由为了网络稳定性,我是不会开启科学上网的,同时为了战未来,也是开启了 ipv6 的。
    而旁路由的 ipv6 我是关了的,因为目前 openclash 有不少 bug 都是关于 ipv6 的,再说其实 shield 也就看看电视,不开启 ipv6 也没啥影响。
    swiftg
        31
    swiftg  
       2023-02-24 08:42:55 +08:00 via iPhone
    dns 的方案看似简单,实际都不好,只要设备有 ipv6 地址就会优先尝试使用 ipv6 ,用不了才用 ipv4 ,造成延迟
    swiftg
        32
    swiftg  
       2023-02-24 08:43:46 +08:00 via iPhone
    @Jays 你这个看着像 ra 广播又给分配了 ip ,防火墙还是没设置好
    fenghuang
        33
    fenghuang  
       2023-02-24 13:10:26 +08:00 via Android
    @swiftg 是的,安卓尤其明显,先尝试一次 v6dns 查询
    lihang1329
        34
    lihang1329  
       2023-02-24 14:46:03 +08:00
    @swiftg 可以分享下你的方案吗
    Jays
        35
    Jays  
       2023-02-24 19:48:37 +08:00 via Android
    @swiftg 求一下,防火墙配置的参数。实在被这个问题烦死了 。。。现在只能靠 dns 的办法将就用,比之前安卓既能获取到 ipv6 地址,又有 ipv6 dns 的时候好多了
    YongXMan
        36
    YongXMan  
    OP
       2023-02-24 23:21:52 +08:00
    @fuzzsh 确实,关闭 dhcpv6 无状态,只开启有状态就可以屏蔽 android 设备获取到 ipv6 了,因为 android 无法手动关闭 ipv6 ,而我的主要需求就是关闭 android 设备获取 ipv6 。问题解决。😄
    Jays
        37
    Jays  
       2023-02-25 22:17:11 +08:00 via Android
    @YongXMan 能麻烦截个图 dhcpv6 的无状态在哪吗? 我参考下,在用的这版 op 没找到这个设置。只有个 slaac 的关闭 /启用 谢谢
    YongXMan
        38
    YongXMan  
    OP
       2023-02-25 23:22:32 +08:00
    @Jays 我是在 ikuai 上配置的。openwrt 上也有的,lan 口配置 -> dhcp 服务器 -> dhcpv6 服务选择服务器模式,就可以看到有状态和无状态选项了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:11 · PVG 04:11 · LAX 12:11 · JFK 15:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.