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

IPv6 导致 xbox 无法正常走旁路由,导致只能关闭 IPv6,有无其他解法

  •  
  •   goodryb · 2021-07-23 13:27:00 +08:00 · 10822 次点击
    这是一个创建于 1219 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家里使用的是联通宽带,有公网 IP, 用的是光猫直接拨号,旁路由是其它路由器刷的 openwrt,XBOX 的网关和 DNS 都指向了旁路由,可以正常 youtube 和 Netflix 。

    昨晚回家发现 youtube 打不开,看了下 xbox 的网络设置,发现居然有 ipv6,查看了下光猫的配置,确实是 ipv4+ipv6,局域网的 window 、手机等都能获取到 ipv6 。


    回到问题上,xbox 里面是可以手动配置 ipv4 地址、网关以及 DNS,但是无法手动配置 ipv6 或者关闭 ipv6 。 而且好像 ipv6 的权重比 ipv4 高,流量都直接走 ipv6 到不了旁路由。

    没办法只能在光猫里面把 ipv6 分配和路由宣告都关闭了,整体恢复到 ipv4 状态。所以想问下大家
    1 、有没有办法可以在 xbox 里面关闭 ipv6
    2 、如果 1 无法关闭,有没有办法让其 ipv6 也能走旁路由

    由于还在玩 PT,所有 ipv6 能开还是想开一下
    第 1 条附言  ·  2021-07-23 16:13:57 +08:00
    查看了相关回复以及资料,xbox 的 ipv6 是无法关闭的。

    测试了一个可能的解决办法,在光猫的 ipv6 配置中把默认的 ipv6 dns 改为静态,并设置一个不可达的地址,从而阻断 ipv6 地址的解析,使得网络访问回落到 ipv4 上。


    这种情况下 pt 客户端是正常分配 ipv6 地址,也可以连接到其它 ipv6 的 peer 。不过由于不清楚光猫的防火墙是怎么设置的,这些 pt 客户端的 ipv6 地址从外网都是无法连接,所以只能单向出站。

    总体来看,除非有强烈的 ipv6 需求,比如无公网 ipv4 想直连内网的终端,否则还是关闭 ipv6 最省事。
    44 条回复    2023-03-11 08:08:50 +08:00
    EPr2hh6LADQWqRVH
        1
    EPr2hh6LADQWqRVH  
       2021-07-23 13:32:45 +08:00
    一是所有路由不宣告公网地址,让翻墙路由宣告私网 v6 地址,这样优先级比 v4 低。
    二是翻墙路由做 nat6 把 v6 流量也翻一翻,让那些纯 v6 流量不撞墙。
    jinhan13789991
        3
    jinhan13789991  
       2021-07-23 13:36:42 +08:00
    那就买个能指定网关的路由器拨号,或者把胖路由做主路由。
    szdosar
        4
    szdosar  
       2021-07-23 13:40:44 +08:00
    另外, [重定向 53 端口到 AdGuardHome ( ipv6 需要开启 ipv6 nat redirect 否则如果客户端使用 ipv6 过滤无效,不以 dnsmasq 为上游 ssr-plus 失效)] 。参阅: https://github.com/rufengsuixing/luci-app-adguardhome
    cwbsw
        5
    cwbsw  
       2021-07-23 13:41:22 +08:00
    主路由上 REJECT 所有 443 、80 端口的 IPv6 出站流量,简单粗暴,还不影响 BT 。
    goodryb
        6
    goodryb  
    OP
       2021-07-23 13:41:27 +08:00
    @avastms #1 好的,不过第二点问题是现在 xbox 里面自动获取 ipv6 网关是光猫的,ipv6 流量根本不走旁路由
    @szdosar #2 大概意思我明白了,就是通过丢弃 ipv6 的 dns 查询让 ipv6 不可用,这样就继续走 ipv4 了, 而 pt 之类的是直接点对点 ip 地址连接,不影响 ipv6 的流量。不过这样就要把 ipv6 的流量都劫持到旁路由或者 adguard 上。
    goodryb
        7
    goodryb  
    OP
       2021-07-23 13:43:08 +08:00
    @cwbsw #5 主路由是光猫,我看看能不能配置这样的防火墙策略
    @szdosar #4 恩,我在研究研究
    tankren
        8
    tankren  
       2021-07-23 14:36:22 +08:00
    openwrt 的 ipv6 开了?
    txydhr
        9
    txydhr  
       2021-07-23 15:22:37 +08:00 via iPhone
    我是 gfwlist 列表里的网址 drop 掉所有 aaaa 记录
    Maskeney
        10
    Maskeney  
       2021-07-23 16:08:31 +08:00 via Android
    无解,除非你在 DNS 层面丢掉所有 AAAA 记录,但是这样跟直接关闭 IPV6 没什么两样
    NSAgold
        11
    NSAgold  
       2021-07-23 16:24:32 +08:00 via Android   ❤️ 1
    smartdns 做双栈优选
    raysonx
        12
    raysonx  
       2021-07-23 18:02:16 +08:00
    是有解决办法,但是因为你是用的“旁路由”这种歪门邪道,我还是建议你关闭 xbox 所连接的网络的 IPv6 比较容易。
    goodryb
        13
    goodryb  
    OP
       2021-07-23 18:06:24 +08:00
    @raysonx #12 旁路由咋就成歪门邪道了 😅 。 不过 ipv6 确实关掉了,没啥用
    raysonx
        14
    raysonx  
       2021-07-23 18:07:04 +08:00
    在你现有的网络拓扑下,你没法让你的“旁路由”去宣告公网 IPv6 前缀和默认路由,因为你的公网 IPv6 前缀是由光猫下发的。
    比较完美的做法的是改变你的网络拓扑,用 OpenWrt 拨号,用策略路由去控制不同的设备走不同的路由表。其中 IPv6 这一块可以用 prefix translation 把你的本地公网 IPv6 前缀转换成境外的公网 IPv6 前缀。
    raysonx
        15
    raysonx  
       2021-07-23 18:13:12 +08:00   ❤️ 1
    > 测试了一个可能的解决办法,在光猫的 ipv6 配置中把默认的 ipv6 dns 改为静态,并设置一个不可达的地址,从而阻断 ipv6 地址的解析,使得网络访问回落到 ipv4 上。

    这种方法肯定是不行的,因为 IPv4 的 DNS 也可以解析 AAAA 记录。
    Liqianyu
        16
    Liqianyu  
       2021-07-23 19:17:50 +08:00   ❤️ 1
    # Disable Xbox IPv6
    ip6tables -I INPUT -p udp -m mac --mac-source XBOX_MAC --dport 547 -j DROP
    ip6tables -I INPUT -p icmpv6 -m mac --mac-source XBOX_MAC -j DROP
    whitegerry
        17
    whitegerry  
       2021-07-23 20:56:58 +08:00 via iPhone
    这需求 mosdns 很简单吧,ipv6 黑洞完事。
    Jays
        18
    Jays  
       2021-07-23 21:02:41 +08:00
    @Liqianyu 这个是正解,但是不知 xbox 是不是动态 mac 。 我的安卓手机不想走 ipv6,就是这么设置的。
    ihipop
        19
    ihipop  
       2021-07-23 21:35:28 +08:00 via Android
    @Jays 如果想要保留 ipv6,楼上每一个人都不是正解,我就在旁路模式下即保留了 ipv6 又不影响功能
    说 2 个要点:
    radvd 支持单播模式
    radvd 支持推送默认路由的优先级
    即可使用旁路由把指定设备的默认路由夺过来了,夺过来以后要怎么弄还是不是 iptables 说了算
    guanyin8cnq12
        20
    guanyin8cnq12  
       2021-07-23 22:35:11 +08:00   ❤️ 2
    梯子加 ipv6 支持。

    你这种情况,我也遇到过,之前 v6+v4, yt 可以打开,nf 死活不行。主要是梯子不支持 ipv6 。
    guanyin8cnq12
        21
    guanyin8cnq12  
       2021-07-23 22:38:42 +08:00
    @Liqianyu 你这是 disable 指定客户端的 ipv6 自动获取 ip 。貌似行的通。
    wgq2633
        22
    wgq2633  
       2021-07-23 22:57:34 +08:00 via Android
    我的 openwrt 路由上 dns 解析走的 dnsmasq,
    参考 https://discourse.pi-hole.net/t/solved-disable-aaaa-response-for-a-given-domain/13143 这篇帖子([SOLVED] disable AAAA response for a given domain )
    通过 "address=/example.com/::", dnsmasq 发现已经指定解析 aaaa/ipv6 到 ::,就不会再找上游解析 aaaa 记录了
    guanyin8cnq12
        23
    guanyin8cnq12  
       2021-07-23 22:57:48 +08:00
    梯子加 v6,ss 设置 v6 prefer 。
    op 里 用 ipset 做 v6 分流。
    类似于这样
    ipset create gfw hash:ip hashsize 4096
    ipset create gfw_v6 hash:ip hashsize 4096 family inet6
    guanyin8cnq12
        24
    guanyin8cnq12  
       2021-07-23 22:59:56 +08:00
    @wgq2633 v6 的 :: 类似于 v4 的 0.0.0.0
    whitegerry
        25
    whitegerry  
       2021-07-23 23:02:51 +08:00
    用 mosdns,可以对来自 xbox 的所有 ipv6 查询响应黑洞,它只能拿到 ip4 的解析记录。
    wgq2633
        26
    wgq2633  
       2021-07-23 23:13:24 +08:00 via Android
    @guanyin8cnq12
    是的,设备测 nslookup example.com 拿到有效的 v4, v6 是::
    设备测软件发现 v6 地址无效,就去连 v4 了,亲测可用
    guanyin8cnq12
        27
    guanyin8cnq12  
       2021-07-23 23:14:23 +08:00
    @wgq2633 实测有效。
    Kiriya
        28
    Kiriya  
       2021-07-23 23:37:16 +08:00
    XBOX 上单独接个路由并且把这个路由器的 IPV6 关掉🐶
    guanyin8cnq12
        29
    guanyin8cnq12  
       2021-07-24 06:56:17 +08:00
    @Liqianyu 使能路由通告模式下,kill 掉 dhcp6s,依旧能获取 v6 地址。此方法不适于路由通告模式。
    lslqtz
        30
    lslqtz  
       2021-07-24 10:36:30 +08:00
    没必要那么麻烦,将 v6 dns 指定到路由器即可
    lslqtz
        31
    lslqtz  
       2021-07-24 10:44:38 +08:00
    我是 OpenWRT 的路由,光猫桥接,默认情况下 OpenWRT 应该是下发了 v4 和 v6 的路由器 DNS 给设备,而不支持 v6 的梯子对列表内的域名不会解析 v6,因此梯子也是没有影响的。
    而光猫是直接下发 IPv4 和 IPv6 的运营商 DNS,手动指定旁路由的 v4 DNS,但是因为下发了 IPv6 的运营商 DNS,优先级比 v4 高,自然导致只支持 v4 的旁路由无法正常使用
    所以只需加旁路由的 v6 DNS 进去即可
    lslqtz
        32
    lslqtz  
       2021-07-24 10:47:47 +08:00
    总之光猫路由模式下如果你不在光猫接其它设备 (不包括 IPTV),那么可以直接在光猫指定旁路由 DNS,没有必要每个设备都手动设置
    光猫桥接模式下路由拨号就会接管所有流量,都是配置的问题。
    目前我自己的网络上除了梯子本身不支持 v6 外,其它网站、服务和 BT 客户端都没有影响,理论上 PT 也不会受影响
    lslqtz
        33
    lslqtz  
       2021-07-24 10:51:07 +08:00
    @raysonx 不可达虽然是是流量走了 v6 造成的,但这是因为楼主的 v6 DNS 是运营商 DNS,所以会提供 AAAA 记录;而不支持 v6 的梯子基本会屏蔽 AAAA 记录,所以不会导致流量走 v6 。
    楼主手动指定了 IPv4 的 DNS,但是没有改变 v6 DNS 的设置,所以会导致大部分时候通过 v6 DNS 解析,从而流量没有经过旁路由
    lslqtz
        34
    lslqtz  
       2021-07-24 10:55:45 +08:00
    @wgq2633 我觉得这个做法并不够好,所以我后面在 DNSMasq 的上游加了 SmartDNS,可以真正的返回 SOA 而不是一个无效的 IPv6 来阻止使用。
    个人觉得梯子不支持 v6 的情况会解析 v6,应该解决的为什么 DNS 会在这些特定地址给出 v6 的结果,更好的方案是一步到位支持 v6,而不是将全部 IPv6 地址给返回 AAAA,虽然目前来说影响很小
    lslqtz
        35
    lslqtz  
       2021-07-24 11:14:40 +08:00
    @ihipop 如果梯子支持 v6 的话,旁路由可能确实可以也需要用这种方法。
    虽然我不是旁路由,但是能来些资料么
    Liqianyu
        36
    Liqianyu  
       2021-07-24 11:37:57 +08:00
    @Jays Xbox 不是动态 MAC,也可以手动设置。
    ihipop
        37
    ihipop  
       2021-07-24 11:39:33 +08:00 via Android   ❤️ 1
    @lslqtz https://linux.die.net/man/5/radvd.conf

    单播模式即 clients 配置段落,指定期望被单播的本地局域网 on link 地址,也就是 fe80 那个地址

    defaultpreference 即指定默认路由优先级,如果你不是旁路,只需要 clients 开启单播即可给指定设备分配 v6,其他非指定设备关闭 v6,也能解决楼主问题无需动任何防火墙配置或者 dns 过滤。
    DopaminePlz
        38
    DopaminePlz  
       2021-07-24 21:25:38 +08:00
    @Liqianyu 我的是小米盒子,直接是把盒子 MAC 地址的所有 IPv6 访问都 DROP 了。547 是 DHCPv6 端口吧?可以 DROP SLAAC 吗?
    Chingim
        39
    Chingim  
       2021-11-13 00:57:00 +08:00
    楼主你好, 问个网络问题.
    我是在路由器设置了 v2ray 的透明代理(做了分流, 对 tcp/udp 都做了支持), 家里的终端可以访问并播放 youtube.
    但是 xbox 不能访问游戏商店, youtube 能播放视频, 但是登录不了(访问 youtube.com/activate 输入码后, 网页显示登录成功, 但是 xbox 上的 youtube 应用显示登录出现了问题, 请重试). 不知道这些坑你有没有遇到呢:

    1. 翻墙后无法访问游戏商店, 是不是有些地址需要直连, 但是 v2ray 规则匹配到了代理上
    2. youtube 能播放但是登录失败. 是不是有些地址需要代理, 但是 v2ray 的规则走了直连


    我在路由器上看了日志, 没看到特别有用的信息.
    goodryb
        40
    goodryb  
    OP
       2021-11-16 13:57:16 +08:00
    @Chingim #39 我没有遇到你这样的问题,我使用的是 openwrt 做旁路哟,插件是 SSR+,代理方式是 gfw 列表, 关闭 ipv6 , xbox 网关和 dns 都设置为旁路由的 IP
    sherlock1122
        41
    sherlock1122  
       2021-11-29 13:18:29 +08:00
    @goodryb 最后怎么弄得?我也想保留 ipv6 , 同时让 ipv6 穿墙。当前开了 ipv6 ,youtube 视频就播放不了了。
    Shintaku
        42
    Shintaku  
       2021-11-30 11:27:16 +08:00
    bluaze
        43
    bluaze  
       2022-07-27 22:17:54 +08:00
    保留旁路由模式和 IPv6 的话,可以考虑 mosdns ,禁掉境外的 AAAA 解析,这样境外流量自然会过旁路由,PT 网关设主路由,避免境外 BT 流量走代理
    fengyaochen
        44
    fengyaochen  
       2023-03-11 08:08:50 +08:00 via iPhone
    @Maskeney 屏蔽所有 v6 aaaa 记录是最佳解决办法,无论是国内还是国外流量都是 v4 快,没有公网 ip 的前提下,在外面只能通过 v6 连回家里的设备,唯一缺点就是你在家里不能通过域名连接别人家的 v6 设备
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:18 · PVG 17:18 · LAX 01:18 · JFK 04:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.