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

openwrt 路由器有多个来源 IPv6 prefix 下,非默认路由表如何分发?

  •  
  •   s82kd92l · 2020-02-29 19:58:35 +08:00 · 3685 次点击
    这是一个创建于 1757 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在路由器分发了多个 prefix:
    1. 运营商的 240e::
    2. 纯局域网的 fd00::
    3. 6in4 的 2001::
    现在路由器下面每个设备都至少有三个 v6 地址,我的问题是: 有没有办法在路由器(openwrt)上设置一个路由表并分发到下面所有的设备,使得所有设备都做到根据目标网段分流的效果呢?

    目前我没想到如何分发路由表,只能在路由器上做 IPV6 SNAT,但这样路由器开销会更大,而且 IPv6 用 NAT 感觉很奇怪。
    17 条回复    2020-03-02 20:00:47 +08:00
    cwbsw
        1
    cwbsw  
       2020-02-29 21:28:42 +08:00
    要么像 v4 一样搞 NAT 做策略路由,要么几个前缀都宣告默认路由,用哪个地址由客户端决定。
    raysonx
        2
    raysonx  
       2020-02-29 21:36:51 +08:00
    我来补充一些知识,虽然没办法完全解决楼主的问题,但能更进一步。
    IPv6 下的路由相比 IPv4 是作了加强的,叫做 source-specific routing。在 IPv4 下,路由选择时只看目标地址,按最长匹配规则选路,而 IPv6 下可以对源地址加以限定。

    楼主的“纯局域网的 fd00::”前缀应该不在公网使用。假设访问 fc00::/7 这个网段时使用 fd00::/64 前缀,可以设置如下的路由:

    ip -6 route add fc00::/7 from fd00::/64 via 网关地址 dev 网卡

    其他的也可类似。
    zro
        3
    zro  
       2020-02-29 22:48:56 +08:00
    fd00 的没必要用吧?

    6in4 的也有干扰,用起来也不爽。。

    另外好奇下,OpenWRT 如果有多个 v6 网关,traceroute 会直接出错,也 Ping 不通,还是要另外设置一下哪才行?
    elfive
        4
    elfive  
       2020-03-01 07:40:39 +08:00 via iPhone
    同问题,一直不知道怎么解决,只能先把不常用的 IPv6-PD 先屏蔽了……

    https://www.v2ex.com/t/645551
    txydhr
        5
    txydhr  
       2020-03-01 11:46:24 +08:00 via iPad
    @zro 有必要呀,你内网有 nas,服务器之类的不可能改个前缀就改个 dns。
    zro
        6
    zro  
       2020-03-01 12:25:36 +08:00
    @txydhr #5 DNS 直接用内网 v4 不行?我 v6 是不设 DNS 的,同样能返回 AAAA 记录的。。。
    cwbsw
        7
    cwbsw  
       2020-03-01 12:32:12 +08:00   ❤️ 1
    @zro
    是不是有 mwan3 之类的?
    OpenWrt 默认设置就能支持多个 v6 默认网关,出站入站都没问题。
    txydhr
        8
    txydhr  
       2020-03-01 12:32:50 +08:00 via iPhone
    @zro v6 更高级🤓
    cwbsw
        9
    cwbsw  
       2020-03-01 12:34:28 +08:00
    @raysonx
    Windows 有办法手动指定源地址优先级吗?
    zro
        10
    zro  
       2020-03-01 13:27:17 +08:00
    @cwbsw #7 没装呢,可能我调了 metric,将 ISP 原本是 512 的设成 1024,将 6in4 原本是 1024 的设成 256,然后就。。。

    现在都想不出,ISP v6 只走国内,其余走 6in4 的应该怎么设,又不想去弄 NAT6(因为我只要路由器这样走)~~
    s82kd92l
        11
    s82kd92l  
    OP
       2020-03-01 15:20:07 +08:00   ❤️ 2
    @cwbsw @zro Linux client 下面好像可以手动用 ip addrlabel 来选择源地址,windows 不知道。
    cwbsw
        12
    cwbsw  
       2020-03-01 16:07:13 +08:00
    @s82kd92l
    试了下确实有效。
    Windows 可以用 netsh int ipv6 set prefixpolicy 来设置。
    cwbsw
        13
    cwbsw  
       2020-03-01 16:14:05 +08:00   ❤️ 1
    @zro
    设置 6in4 隧道的前缀的 label 等于::/0 的 label,然后把 ISP 的前缀新建个 label,要走 ISP 线路的前缀都设置成相同的 lable,应该就可以了。
    zro
        14
    zro  
       2020-03-02 13:33:44 +08:00
    @cwbsw #13 好像不是太成功

    我的“ip addrlabel list”如下(带 [] 的是我亲自加上的):

    [prefix 2409:666::/32 label 99] ------ ISP
    prefix ::1/128 label 0
    prefix ::/96 label 3
    prefix ::ffff:0.0.0.0/96 label 4
    [prefix 2001:4860::/32 label 99] ---- Google DNS 走 ISP
    [prefix 2001:999::/32 label 1] ------- 6in4
    prefix 2001::/32 label 6
    prefix 2001:10::/28 label 7
    prefix 3ffe::/16 label 12
    prefix 2002::/16 label 2
    prefix fec0::/10 label 11
    prefix fc00::/7 label 5
    prefix ::/0 label 1

    但在 traceroute 2001:4860:4860::8888,第一跳还是走 6in4 网关,而 traceroute 2620:fe::9 就走 ISP 网关~~

    也试过 [prefix 2001:4860:4860::8888/128 label 99] ,仍是走 6in4 的 label 1~~
    cwbsw
        15
    cwbsw  
       2020-03-02 15:41:46 +08:00   ❤️ 1
    @zro
    看一下 RFC3484,是不是在匹配标签之前符合了其他的规则。
    https://blog.csdn.net/dog250/article/details/87815123
    zro
        16
    zro  
       2020-03-02 19:32:26 +08:00
    @cwbsw #15 排查一圈,也没发现有动过啥,规则也没设过其他的,重装 ip-full 也没变化。。

    试过将 6in4 连接断开,终于都走 ISP 的网关了,然而重新连上 6in4,好吧,又挤去 6in4 网关那边了~~
    现在换了公网 IP,但 6in4 设置仍用旧 IP,6in4 虽然没断,但访问不了的,仍是如此。。😓😓
    zro
        17
    zro  
       2020-03-02 20:00:47 +08:00
    @zro #16 哈。。。应该是我忽略了某个细节~~正在测试下是不是搞定了~~~😂😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.