<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>网络 on T.本秋的自留地</title>
    <link>https://blog.texsd.eu.org/tags/%E7%BD%91%E7%BB%9C/</link>
    <description>Recent content in 网络 on T.本秋的自留地</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <copyright>Copyright© 2026 T.本秋. Licensed under CC BY-NC-SA 4.0.</copyright>
    <lastBuildDate>Wed, 07 Jan 2026 01:42:21 +0800</lastBuildDate><atom:link href="https://blog.texsd.eu.org/tags/%E7%BD%91%E7%BB%9C/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Immortalwrt：多线多网与 Tailscale</title>
      <link>https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/</link>
      <pubDate>Wed, 07 Jan 2026 01:42:21 +0800</pubDate>
      
      <guid>https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/</guid>
      <description>
&lt;h2 class=&#34;relative group&#34;&gt;配置多线多内网
    &lt;div id=&#34;配置多线多内网&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e9%85%8d%e7%bd%ae%e5%a4%9a%e7%ba%bf%e5%a4%9a%e5%86%85%e7%bd%91&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;现在我同时有了两个账号的使用权，一个是运营商账号，有 IPv6，但是速度不算快，不过不断网；另一个是运营商自建的网，卖给学生用的，没有 IPv6，晚上 11 点半还断网，真是花钱做大冤种啊哈哈！&lt;/p&gt;
&lt;p&gt;那么就有了配多内网的想法，之前也划过 VLAN 了，这里就不赘述了，提一嘴怎么给电脑网卡变成 trunk 模式，Win 就是在设备管理器，网卡的高级设置里面填入 ID，Linux 先 modprobe 8021q，用 &lt;code&gt;nmcli&lt;/code&gt; 可以添加子接口，具体看一下 manual。&lt;/p&gt;
&lt;p&gt;在接口 - 设备这里，可以创建 MAC VLAN:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;macvlan&#34;
    width=&#34;1309&#34;
    height=&#34;878&#34;
    src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image_hu_a8fb5bf96636b438.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image_hu_a8fb5bf96636b438.webp 800w, https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image_hu_21ef3c0d1b31a4c8.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;需要注意的是，在这台京东云上面要求多个 MACVLAN 必须是连续的，否则可能出现设备 CLAIM 失败的报错。&lt;/p&gt;
&lt;p&gt;然后使用 &lt;code&gt;curl --interface &lt;/code&gt;分别给每个接口配置 portal 认证。现在应该有两个接口了：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;two_interface&#34;
    width=&#34;1425&#34;
    height=&#34;377&#34;
    src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1_hu_38d63cae2c2a96c7.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1_hu_38d63cae2c2a96c7.webp 800w, https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1_hu_e18c60d1d6de1739.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;这时候会自动把两个 wan 口下发的路由都加到 main 表里面，是什么顺序我没注意，不过，你的设备肯定只走一条出去，另一条是闲置的。&lt;/p&gt;
&lt;p&gt;所以我们要在高级设置里面覆盖 IPv4 路由表，这个的意思是把获取到的路由加到这个表里面。&lt;/p&gt;
&lt;p&gt;表分两种，有名字的和纯数字 ID 的。你这里只能填 ID，填完了可以到 &lt;code&gt;/etc/iproute2/rt_tables&lt;/code&gt; 里面按照 &lt;code&gt;id 名字&lt;/code&gt; 这样写，这时候就更加有可读性。&lt;/p&gt;
&lt;p&gt;/etc/iproute2/rt_tables 必须是连续的，否则可能出现设备 CLAIM 失败的报错。&lt;/p&gt;
&lt;p&gt;然后使用 &lt;code&gt;curl --interface &lt;/code&gt;分别给每个接口配置 portal 认证。现在应该有两个接口了：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;two_interface&#34;
    width=&#34;1425&#34;
    height=&#34;377&#34;
    src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1_hu_38d63cae2c2a96c7.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1_hu_38d63cae2c2a96c7.webp 800w, https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1_hu_e18c60d1d6de1739.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-1.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;这时候会自动把两个 wan 口下发的路由都加到 main 表里面，是什么顺序我没注意，不过，你的设备肯定只走一条出去，另一条是闲置的。&lt;/p&gt;
&lt;p&gt;所以我们要在高级设置里面覆盖 IPv4 路由表，这个的意思是把获取到的路由加到这个表里面。&lt;/p&gt;
&lt;p&gt;表分两种，有名字的和纯数字 ID 的。你这里只能填 ID，填完了可以到 &lt;code&gt;/etc/iproute2/rt_tables&lt;/code&gt; 里面按照 &lt;code&gt;id 名字&lt;/code&gt; 这样写，这时候就更加有可读性。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;override_ipv4_table&#34;
    width=&#34;634&#34;
    height=&#34;392&#34;
    src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-2.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-2.webp 800w, https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-2.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-2.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;那么我就把两个路由分到了两个路由表里面，一个 cmcc，另一个 cernet。&lt;/p&gt;
&lt;p&gt;这时候问题来了，你多半发现上不了网了，原因是默认只会查主路由表（main），这时候主路由表里面只有你的内网 local 路由，发往别的网段的数据包就被丢弃了。&lt;/p&gt;
&lt;p&gt;所以我们得手动定制路由规则，其实对应的就是 &lt;code&gt;ip rule&lt;/code&gt; 命令了。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;routing_rules&#34;
    width=&#34;1416&#34;
    height=&#34;283&#34;
    src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-3_hu_3076800415bc1a74.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-3_hu_3076800415bc1a74.webp 800w, https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-3_hu_2941a70e83e8ac2a.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-2-multiwan-tailscale/image-3.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;按照不同的网段查不同的表，请注意上面两条规则很重要，要不然内网的流量也被发到 wan 口去了，wrt 系不像 routeros，没有靠 MAC 地址连接的办法，自动回滚居然也不生效，没备份的我至少重新弄了三遍。&lt;/p&gt;
&lt;p&gt;然后就可以爽用了。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;tailscale 出现的问题
    &lt;div id=&#34;tailscale-出现的问题&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#tailscale-%e5%87%ba%e7%8e%b0%e7%9a%84%e9%97%ae%e9%a2%98&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;配完过了几天发现外部的 tailscale 没法连到内网的设备了，tcpdump 一看，只有访问的包，没有回去的包。我当时以为是 masquerade 的问题，在 ts 接口上面开了动态伪装，然后 dump br-lan.2，发现其实内网有回复，但是发到路由器后就没下文了。&lt;/p&gt;
&lt;p&gt;我立马就知道肯定是路由规则问题了，防火墙没问题。&lt;/p&gt;
&lt;p&gt;于是添加了一条最优先的规则，让目标为 `100.64.0.0/10&amp;rsquo; 的走主路由表，还是不通。&lt;/p&gt;
&lt;p&gt;其实还是先入为主了！ts 自己弄了个 52 的路由表，他的规则全部在里面，根本不在主路由表。高级设置里面表填上 52，收工！&lt;/p&gt;
</description>
      
    </item>
    
    <item>
      <title>RouterOS 的 IPv6 多网段统一进行 NAPT 转换</title>
      <link>https://blog.texsd.eu.org/posts/routeros_ipv6/</link>
      <pubDate>Tue, 23 Sep 2025 21:05:32 +0800</pubDate>
      
      <guid>https://blog.texsd.eu.org/posts/routeros_ipv6/</guid>
      <description>
&lt;h2 class=&#34;relative group&#34;&gt;前言
    &lt;div id=&#34;前言&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%89%8d%e8%a8%80&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;终于决定给社团的网络修一修了~&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;实践
    &lt;div id=&#34;实践&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%ae%9e%e8%b7%b5&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;

&lt;h3 class=&#34;relative group&#34;&gt;内网划分
    &lt;div id=&#34;内网划分&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%86%85%e7%bd%91%e5%88%92%e5%88%86&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;对于内网的划分是这样的：&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;ULA&lt;/code&gt;子网：&lt;code&gt;fd11:4514:5a51::/48&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然后划分四个网段，分别给设施、1-3 楼用户。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fd11:4514:5a51:0::/64&lt;/code&gt;，尽量使用&lt;code&gt;EUI64&lt;/code&gt;分配地址，同时分配公网前缀用于&lt;code&gt;IPv6&lt;/code&gt;访问。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fd11:4514:5a51:[1-3]::/64&lt;/code&gt;，仅仅分配&lt;code&gt;ULA&lt;/code&gt;，不分配公网前缀，使得设备流量分流到三条移动宽带。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class=&#34;relative group&#34;&gt;/DNPT 规则
    &lt;div id=&#34;dnpt-规则&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#dnpt-%e8%a7%84%e5%88%99&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;相比之前使用的&lt;code&gt;fc00-fc03&lt;/code&gt;网段来说，可以少写很多规则，直接转换&lt;code&gt;/60&lt;/code&gt;的前缀即可。&lt;/p&gt;
&lt;p&gt;参考如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-1 Output
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;prerouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mark-packet new-packet-mark&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PCC-1 &lt;span class=&#34;nv&#34;&gt;passthrough&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;yes src-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-address-list&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;!ULAs per-connection-classifier&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;src-address:3/0 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-2 Output
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;prerouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mark-packet new-packet-mark&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PCC-2 &lt;span class=&#34;nv&#34;&gt;passthrough&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;yes src-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-address-list&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;!ULAs per-connection-classifier&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;src-address:3/1 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-3 Output
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;prerouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mark-packet new-packet-mark&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PCC-3 &lt;span class=&#34;nv&#34;&gt;passthrough&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;yes src-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-address-list&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;!ULAs per-connection-classifier&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;src-address:3/2 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-1 Output NPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;postrouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SNPT src-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:ae0:6af0::/60 src-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 packet-mark&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PCC-1 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;m&#34;&gt;7&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-2 Output NPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;postrouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SNPT src-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:ae0:1360::/60 src-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 packet-mark&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PCC-2 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-3 Output NPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;postrouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SNPT src-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:bc5:c950::/60 src-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 packet-mark&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PCC-3 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;9&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-1 Input NPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;prerouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;dnpt src-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:ae0:6af0::/60 dst-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:ae0:6af0::/60 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-2 Input NPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;prerouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;dnpt src-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:ae0:1360::/60 dst-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:ae0:1360::/60 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;11&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;;;;&lt;/span&gt; PCC-3 Input NPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;prerouting &lt;span class=&#34;nv&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;dnpt src-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:bc5:c950::/60 dst-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fd11:4514:5a51::/60 dst-address&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2409:8a20:bc5:c950::/60 &lt;span class=&#34;nv&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;no log-prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;总共 9 条规则就可以解决，依次是出站 PCC 规则分流，出站规则，入站 DNPT 规则。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;问题
    &lt;div id=&#34;问题&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e9%97%ae%e9%a2%98&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;

&lt;h3 class=&#34;relative group&#34;&gt;脚本自动更新问题
    &lt;div id=&#34;脚本自动更新问题&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e8%84%9a%e6%9c%ac%e8%87%aa%e5%8a%a8%e6%9b%b4%e6%96%b0%e9%97%ae%e9%a2%98&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;我真的非常不愿意去看 RouterOS 的脚本，太乱了，沿用了之前的内容，只是修改了其中的网段。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;入站问题
    &lt;div id=&#34;入站问题&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%85%a5%e7%ab%99%e9%97%ae%e9%a2%98&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;按照现有的规则，实际上是无法入站的，需要单独添加一条规则，而且似乎只对&lt;code&gt;EUI64&lt;/code&gt;的地址生效。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; 2    ;;; PCC-1 LAN_Device
      chain=prerouting action=accept dst-address=2409:8a20:ae0:6af0::/64 log=no log-prefix=&amp;#34;&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其实，对于隐私地址，防火墙也非常难以匹配规则，因为后缀变，运营商的前缀也跟着变，一般解决方案都是&lt;code&gt;socat&lt;/code&gt;或者反向匹配 (目标地址写&lt;code&gt;::be24:11ff:fe82:8282/::ffff:ffff:ffff:ffff&lt;/code&gt;这样)。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;内网访问问题
    &lt;div id=&#34;内网访问问题&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%86%85%e7%bd%91%e8%ae%bf%e9%97%ae%e9%97%ae%e9%a2%98&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;对于内网 v6 互访 (从 0 网段到 1) 是失败的，我怀疑是 PCC 规则误伤了，但是排查还是挺困难的，因为 RouterOS 的日志调试我根本不会用，不出日志，你说要是有个&lt;code&gt;tcpdump&lt;/code&gt;我就会了&amp;hellip;&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;补充
    &lt;div id=&#34;补充&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e8%a1%a5%e5%85%85&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;

&lt;h3 class=&#34;relative group&#34;&gt;关于 EUI64 和 RFC4291
    &lt;div id=&#34;关于-eui64-和-rfc4291&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%85%b3%e4%ba%8e-eui64-%e5%92%8c-rfc4291&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;使用&lt;code&gt;NAPT&lt;/code&gt;，对于&lt;code&gt;EUI64&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2: ens192: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu &lt;span class=&#34;m&#34;&gt;1500&lt;/span&gt; qdisc mq state UP group default qlen &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/ether 00:0c:29:65:43:21 brd ff:ff:ff:ff:ff:ff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    altname enp11s0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 192.168.114.39/24 brd 192.168.114.255 scope global dynamic ens192
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft 13117sec preferred_lft 13117sec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 fd11:4514:5a51:0:20c:29ff:fe65:4321/64 scope global dynamic mngtmpaddr 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft 6993sec preferred_lft 3393sec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 2409:8a20:ae0:6af0:20c:29ff:fe65:4321/64 scope global dynamic mngtmpaddr 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft 7124sec preferred_lft 3524sec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;开启了隐私拓展后：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4: enp0s20f0u3u4: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu &lt;span class=&#34;m&#34;&gt;1500&lt;/span&gt; qdisc fq_codel state UP group default qlen &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    link/ether 01:e0:22:65:43:21 brd ff:ff:ff:ff:ff:ff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    altname enx00e04c6809ce
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet 192.168.101.80/24 brd 192.168.101.255 scope global dynamic noprefixroute enp0s20f0u3u4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft 8484sec preferred_lft 8484sec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    inet6 fd11:4514:5a51:1:ff9d:d0eb:c4f3:ad54/64 scope global dynamic noprefixroute 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       valid_lft 7117sec preferred_lft 3517sec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❯ curl 6.ipw.cn
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2409:8a20:ae0:1361:cfab:d0eb:c4f3:ad543
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中 65-80 的这一段，若不是真实反应 MAC 地址，那么好像在&lt;code&gt;SNPT&lt;/code&gt;的时候不会为你保留。&lt;/p&gt;
&lt;p&gt;有人说，变化是因为要符合校验和，但是对于&lt;code&gt;EUI64&lt;/code&gt;地址好像并不需要啊，这是为什么呢？&lt;/p&gt;
&lt;p&gt;查了下，发现&lt;code&gt;EUI64&lt;/code&gt;并没有强制要求必须保留，所以为了效率和随机性，就找了一个能够唯一标识的地址使用了。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;总结
    &lt;div id=&#34;总结&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e6%80%bb%e7%bb%93&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;感觉调 RouterOS 完全就是在猜啊，没有 wrt 类那种我理解的感觉，希望以后能找到个大佬浇浇我。&lt;/p&gt;
</description>
      
    </item>
    
    <item>
      <title>Immortalwrt：IPv6、VLAN 与 NDP 代理</title>
      <link>https://blog.texsd.eu.org/posts/immortalwrt-1-ipv6-vlan/</link>
      <pubDate>Sat, 19 Jul 2025 14:15:52 +0800</pubDate>
      
      <guid>https://blog.texsd.eu.org/posts/immortalwrt-1-ipv6-vlan/</guid>
      <description>
&lt;h2 class=&#34;relative group&#34;&gt;前言
    &lt;div id=&#34;前言&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%89%8d%e8%a8%80&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;早年接触过 wrt，但是那时候用的还是 7621 的设备，使用 mtk 开源驱动后信号会变得非常差，闭源驱动会出现死机的情况。如今入手 7981 的路由器，终于可以研究一下配置以及日用了。&lt;/p&gt;

&lt;h2 class=&#34;relative group&#34;&gt;IPv6 上网
    &lt;div id=&#34;ipv6-上网&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#ipv6-%e4%b8%8a%e7%bd%91&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;想让路由器下面的设备上网，无非就这么几种方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;PD(Prefix Delegation): 上级下发 ipv6 的/56 或者/60 的前缀，可以自己划分子网使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NDP Proxy: 上级通过 SLAAC 分配 ipv6 地址，只开启了 O 标志，获得一个/64 的地址的时候使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NPTv6: 你有多条宽带，需要做负载均衡。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NAPTv6: 上级只允许通过 DHCPv6 获取地址（一般是学校之类需要强管理或者认证的场景），获得一个/128 的地址。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;欸，这时候有人问，/128 不是也可以使用 ndp 代理吗？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;理论上确实可行，但是很多 DHCPv6 服务器并不支持代理获取，下面这个&lt;code&gt;tcpdump&lt;/code&gt;结果说明了这一点：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;root@ImmortalWrt:~# tcpdump -i eth1 udp port 546 or udp port 547
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes
15:03:40.878466 IP6 fe80::aaaa.546 &amp;gt; ff02::1:2.547: dhcp6 solicit
15:03:40.880132 IP6 fe80::bbbb.547 &amp;gt; fe80::aaaa.546: dhcp6 advertise
15:03:42.905527 IP6 fe80::aaaa.546 &amp;gt; ff02::1:2.547: dhcp6 request
15:03:42.908198 IP6 fe80::bbbb.547 &amp;gt; fe80::aaaa.546: dhcp6 reply
15:04:39.149414 IP6 ImmortalWrt.lan.547 &amp;gt; ff05::1:3.547: dhcp6 relay-fwd
15:04:40.188299 IP6 ImmortalWrt.lan.547 &amp;gt; ff05::1:3.547: dhcp6 relay-fwd
15:04:42.189520 IP6 ImmortalWrt.lan.547 &amp;gt; ff05::1:3.547: dhcp6 relay-fwd
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用 ff05 的广播根本就不回你。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;NDP 代理
    &lt;div id=&#34;ndp-代理&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#ndp-%e4%bb%a3%e7%90%86&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;在路由器上面这样设置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;wan6&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DHCP 服务器-IPv6 设置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指定的主接口（打勾）&lt;/li&gt;
&lt;li&gt;RA 服务：中继模式&lt;/li&gt;
&lt;li&gt;DHCPv6 服务：中继模式&lt;/li&gt;
&lt;li&gt;NDP 代理：中继模式&lt;/li&gt;
&lt;li&gt;学习路由（打勾）&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;&lt;code&gt;br-lan&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DHCP 服务器-IPv6 设置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指定的主接口（不允许选择了）&lt;/li&gt;
&lt;li&gt;RA 服务：中继模式&lt;/li&gt;
&lt;li&gt;DHCPv6 服务：中继模式&lt;/li&gt;
&lt;li&gt;NDP 代理：中继模式&lt;/li&gt;
&lt;li&gt;学习路由（打勾）&lt;/li&gt;
&lt;li&gt;NDP 代理从属设备（打勾）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样操作相当于透传了上级路由的 RA（路由器通告），上面怎么样配置，你的局域网设备就是怎么样的，没法更改，当然如果你能获取到/64 的前缀，那么下面的设备一般来说也没有问题。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;前缀下发
    &lt;div id=&#34;前缀下发&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%89%8d%e7%bc%80%e4%b8%8b%e5%8f%91&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;这当然是最推荐的方式了。&lt;/p&gt;
&lt;p&gt;在现代的类 wrt 上面，使用&lt;code&gt;PPPoE&lt;/code&gt;在 wan 口上拨号，同时在高级设置里面开启获取 IPv6 地址为自动，如果你的 ISP 有 IPv6 支持，会自动产生一个虚拟动态接口&lt;code&gt;wan_6&lt;/code&gt;。一般这个接口能获取到一个/64 的地址和 IPv6-PD，这是我们能分配的前提条件。&lt;/p&gt;
&lt;p&gt;我的配置是这样的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RA 服务：服务器模式&lt;/li&gt;
&lt;li&gt;DHCPv6 服务：已禁用&lt;/li&gt;
&lt;li&gt;NDP 代理：已禁用&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 class=&#34;relative group&#34;&gt;使用简单的路由通告配置
    &lt;div id=&#34;使用简单的路由通告配置&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e4%bd%bf%e7%94%a8%e7%ae%80%e5%8d%95%e7%9a%84%e8%b7%af%e7%94%b1%e9%80%9a%e5%91%8a%e9%85%8d%e7%bd%ae&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h4&gt;
&lt;p&gt;在家用的小型网络中，完全可以做到不架设 DHCPv6 服务器，只通过 RA 就可以实现基本的配置了，请看这个包：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@t-router:~# tcpdump -nvi br-lan ip6&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;40&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;134&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tcpdump: listening on br-lan, link-type EN10MB &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;Ethernet&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, snapshot length &lt;span class=&#34;m&#34;&gt;262144&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;10:35:28.476086 IP6 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;flowlabel 0x4f20d, hlim 255, next-header ICMPv6 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;58&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; payload length: 144&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; fe80::aaaa &amp;gt; ff02::1: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;icmp6 sum ok&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; ICMP6, router advertisement, length &lt;span class=&#34;m&#34;&gt;144&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        hop limit 64, Flags &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;none&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, pref medium, router lifetime 1800s, reachable &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt; 0ms, retrans timer 0ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; link-address option &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, length &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: aa:aa:aa:aa:aa:aa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          mtu option &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;5&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, length &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:  &lt;span class=&#34;m&#34;&gt;1492&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          prefix info option &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, length &lt;span class=&#34;m&#34;&gt;32&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;4&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: 2409:xxxx:xxxx:13a::/64, Flags &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;onlink, auto&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, valid &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt; 5400s, pref. &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt; 2700s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          route info option &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;24&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, length &lt;span class=&#34;m&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:  2409:xxxx:xxxx:130::/60, &lt;span class=&#34;nv&#34;&gt;pref&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;medium, &lt;span class=&#34;nv&#34;&gt;lifetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1800s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          rdnss option &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;25&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, length &lt;span class=&#34;m&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:  lifetime 1800s, addr: 2409:xxxx:xxxx:13a::1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          dnssl option &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;31&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, length &lt;span class=&#34;m&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:  lifetime 1800s, domain&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;s&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: lan.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          advertisement interval option &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;7&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, length &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;:  600000ms
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;几个重要的信息全部体现在这个里面了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;地址：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;没有配置 Flag，说明是 Stateless，设备自己生成配置，是否开启 RFC4941（隐私地址）由设备自己决定。&lt;/p&gt;
&lt;p&gt;不过无状态自动配置要求地址的前缀必须是/64 以上的，否则会破坏这一行为。&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;网关：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;规定路由通告必须使用 fe80 开头的本地地址来发送路由通告，只要路由存活时间不为 0，那么下面的设备就可以使用这个地址当做默认路由。&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;使用&lt;code&gt;rdnss option&lt;/code&gt;来配置 DNS。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows 在大概 1709 这个版本之后支持&lt;code&gt;rdnss&lt;/code&gt;了，其他系统应该都支持吧？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用&lt;code&gt;dnssl option&lt;/code&gt;来配置 DNS 搜索域。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个感觉意义不大，因为使用 DHCPv6 才会解析主机名.lan，这个使用 DHCPv4 已经足够了。&lt;/p&gt;
&lt;p&gt;不过注意不要设置成.local，因为 mDNS 会使用这个域名导致冲突，而 mDNS 会自动发现的。&lt;/p&gt;
&lt;p&gt;如果你有/60 的前缀，可以在高级设置里面填写 IPv6 分配提示，4 位正好可以填一位 16 进制数，&lt;code&gt;0-f&lt;/code&gt;，以此类推/56 可以填两位，从而划分多个 IPv6 子网。&lt;/p&gt;
&lt;p&gt;像我就是填了&lt;code&gt;a&lt;/code&gt;。&lt;/p&gt;

&lt;h4 class=&#34;relative group&#34;&gt;使用 DHCPv6
    &lt;div id=&#34;使用-dhcpv6&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e4%bd%bf%e7%94%a8-dhcpv6&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h4&gt;
&lt;p&gt;如果设备比较老，可能还是得开启 DHCPv6，办法就是把 DHCPv6 服务设置成服务器模式。&lt;/p&gt;
&lt;p&gt;这时候就可以在 RA 设置里面的 RA 标记开启几个选项，让设备使用 DHCPv6 服务，这里配置项目已经讲解得很明白，我就不多说了，直接贴上来：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RA 标记
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;受管配置 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;M&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;受管地址配置 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;M&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; 标记表明可以通过 DHCPv6 获取 IPv6 地址。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;其他配置 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;O&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;其他配置 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;O&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; 标记表明其他信息，如 DNS 服务器，可以通过 DHCPv6 获得。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;移动家乡代理 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;H&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;移动 IPv6 家乡代理 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;H&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; 标记表明该设备在此链路上还充当移动 IPv6 家乡代理。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;DHCPv6 还可以配置别的一大堆东西，比如 NTP 之类的，但是 v4 已经干了这一堆了，我觉得除非 v4 被完全替代，否则现阶段完全没有理由用。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;NPTv6/NAPTv6
    &lt;div id=&#34;nptv6naptv6&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#nptv6naptv6&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;如果有多条宽带并且都有 PD，你可以内网分配一个 ULA 地址，然后在路由的时候进行前缀转换，这也是我们学校社团网络的做法。这种办法对于性能要求的不高，本身也算符合 IPv6 的实践。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;但是如果你只能通过 DHCPv6 配到一个/128 的地址，那就没办法了，直接用动态地址伪装（masquerade）吧，一般的路由器都不会有硬件加速，所以网速不太行，但是如果是 IPv6 刚需也没有别的办法了。&lt;/p&gt;
&lt;p&gt;我有点懒得写了，想用的可以参考&lt;a
  href=&#34;https://blog.creedowl.com/posts/ipv6_and_nat6_in_nuaa/&#34;
    target=&#34;_blank&#34;
  &gt;南航校园网 OpenWRT 配置 IPv6 NAT6&lt;/a&gt;，我自己在学校里面配的过程已经忘记了，不过跟这个应该大差不差。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;邻居协议
    &lt;div id=&#34;邻居协议&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e9%82%bb%e5%b1%85%e5%8d%8f%e8%ae%ae&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;IPv6 相比 v4 的 b 就是不同，就是邻居协议取代 ARP，RA 实现了 DHCP 的基本功能。&lt;/p&gt;
&lt;p&gt;路由器和客户端使用 NS（Neighbour Solicitation）和 NA（Neighbour Advertisement）来检测地址冲突，探测别的设备。&lt;/p&gt;
&lt;p&gt;一个 SLAAC 的过程具体是这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;连接到网络，先生成一个地址，用&lt;code&gt;::&lt;/code&gt;发送到这个地址，看自己生成的&lt;code&gt;fe80::/16&lt;/code&gt;有没有冲突，没有就使用。&lt;/li&gt;
&lt;li&gt;向&lt;code&gt;ff02::&lt;/code&gt;发送 RS，寻找路由器。&lt;/li&gt;
&lt;li&gt;路由器默认会每隔几分钟发送 RA，接收到 RS 后，会尽快回复 RA 消息。&lt;/li&gt;
&lt;li&gt;客户端自己生成一个全球唯一的可路由地址，然后再看有没有冲突，没冲突就开始使用这个地址上网。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 class=&#34;relative group&#34;&gt;VLAN 划分
    &lt;div id=&#34;vlan-划分&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#vlan-%e5%88%92%e5%88%86&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h2&gt;
&lt;p&gt;出于管理需要，我决定在路由器上面划分 VLAN 了，不过我其实并没有另一台 VLAN 的交换机，所以说并不是满血的 VLAN。同时由于是新手，对于 VLAN 的理解肯定有不到位之处，请多包涵。&lt;/p&gt;

&lt;h3 class=&#34;relative group&#34;&gt;简单的概念
    &lt;div id=&#34;简单的概念&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e7%ae%80%e5%8d%95%e7%9a%84%e6%a6%82%e5%bf%b5&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;trunk：在这个通道上面跑的是打上不同 ID 的 VLAN。&lt;/li&gt;
&lt;li&gt;access：某个端口，一般来说一个端口只分配给一个 VLAN ID。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在某个端口上面，选择了 VLAN ID，有不同的标志可以分配：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不属于：这个 VLAN 不分配到这个端口。&lt;/li&gt;
&lt;li&gt;tagged：通过这个端口的数据包，都会被打上这个 VLAN 的 ID。&lt;/li&gt;
&lt;li&gt;untagged：通过这个端口的数据包，如果有 VLAN ID，将会被删除掉。&lt;/li&gt;
&lt;li&gt;是主 VLAN：如果从这个接口进来的数据包没有任何标记，就认为他是这个 VLAN ID 的。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class=&#34;relative group&#34;&gt;划分
    &lt;div id=&#34;划分&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;
    
    &lt;span
        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;
        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#%e5%88%92%e5%88%86&#34; aria-label=&#34;锚点&#34;&gt;#&lt;/a&gt;
    &lt;/span&gt;
    
&lt;/h3&gt;
&lt;p&gt;我的想法是，&lt;code&gt;.1&lt;/code&gt;的网段分配给熟悉的设备上网，&lt;code&gt;.2&lt;/code&gt;的网段分配给物联网设备，&lt;code&gt;.3&lt;/code&gt;的网段分配给访客网络。&lt;/p&gt;
&lt;p&gt;所以我在设备上的&lt;code&gt;br-lan&lt;/code&gt;的网桥 VLAN 过滤是这么配置的：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img
    class=&#34;my-0 rounded-md&#34;
    loading=&#34;lazy&#34;
    decoding=&#34;async&#34;
    fetchpriority=&#34;auto&#34;
    alt=&#34;VLAN Settings&#34;
    width=&#34;1579&#34;
    height=&#34;954&#34;
    src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-1-ipv6-vlan/image_hu_ea4d2fcd69c212ee.webp&#34;
    srcset=&#34;https://blog.texsd.eu.org/posts/immortalwrt-1-ipv6-vlan/image_hu_ea4d2fcd69c212ee.webp 800w, https://blog.texsd.eu.org/posts/immortalwrt-1-ipv6-vlan/image_hu_978147032300a369.webp 1280w&#34;
    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;
    data-zoom-src=&#34;https://blog.texsd.eu.org/posts/immortalwrt-1-ipv6-vlan/image.webp&#34;&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;这个本地指的是路由器的 CPU 可以识别这个 VLAN 的内容，从而对它进行设置 DHCP 服务器之类的操作。&lt;/p&gt;
&lt;p&gt;路由器有三个口，我全部分配给了 VLAN1，同时设置为主 VLAN 接口（显示为*），这是因为我大概不会在这上面接物联网设备（因为都是 2.4G 的设备）和插入访客的网线。&lt;/p&gt;
&lt;p&gt;这时候在接口里面就可以看到这些虚拟的 VLAN 设备了，为它们设置 DHCP 服务器，防火墙，保存。&lt;/p&gt;
&lt;p&gt;在无线里面，可以创建很多个同频段的 SSID（不会有人才知道吧），但是信道是一样的，接口配置里面可以选择关联的网络，这里选上你设置防火墙的接口，这时候通过这个 SSID 收到的数据就会自动地被交换机打上 VLAN ID 了。&lt;/p&gt;
&lt;p&gt;在防火墙里面可以做更加细致的管理，比如使用&lt;code&gt;conntrack&lt;/code&gt;，只允许 LAN 区段的设备主动发起到 IOT 设备的连接，隔离访客网络和信任网络的区段，非常灵活。&lt;/p&gt;
&lt;p&gt;这时原有配置使用&lt;code&gt;br-lan&lt;/code&gt;的应用，记得修改为&lt;code&gt;br-lan.1&lt;/code&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这里有一个我刚开始不明白的问题：
外部网络根本不识别 VLAN ID，那么转发到 WAN 的流量为什么会自动把 VLAN 头给去掉呢？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其实不是主动去掉的，因为 VLAN 是二层的东西，路由（三层）和 VLAN 是两个相对独立的过程，跨局域网的时候需要换二层封装，所以 VLAN ID 自然没有了。&lt;/p&gt;
</description>
      
    </item>
    
  </channel>
</rss>
