<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>单臂路由 on CrashMemo | IT运维经验站</title><link>https://crashmemo.com/tags/%E5%8D%95%E8%87%82%E8%B7%AF%E7%94%B1/</link><description>Recent content in 单臂路由 on CrashMemo | IT运维经验站</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Thu, 25 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://crashmemo.com/tags/%E5%8D%95%E8%87%82%E8%B7%AF%E7%94%B1/index.xml" rel="self" type="application/rss+xml"/><item><title>网络修炼笔记：单臂路由与跨网段通信底层分析</title><link>https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/</guid><description>&lt;h2 id="实验环境与规划"&gt;实验环境与规划
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模拟器&lt;/strong&gt;：华为 eNSP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实验拓扑&lt;/strong&gt;：PC1/PC2 PC3/PC4 接入 SW1；SW1 (GE0/0/5) 单线连接 R1 (GE0/0/0)。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP 与网关规划&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VLAN 10（研发部）&lt;/strong&gt;：网段 &lt;code&gt;192.168.1.0/24&lt;/code&gt;。PC1 IP 为 &lt;code&gt;192.168.1.1&lt;/code&gt;，网关必须指向 R1 的子接口 &lt;code&gt;192.168.1.254&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VLAN 20（市场部）&lt;/strong&gt;：网段 &lt;code&gt;192.168.2.0/24&lt;/code&gt;。PC3 IP 为 &lt;code&gt;192.168.2.3&lt;/code&gt;，网关必须指向 R1 的子接口 &lt;code&gt;192.168.2.254&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="单臂路由实验拓扑图" class="gallery-image" data-flex-basis="312px" data-flex-grow="130" height="910" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-29-00.webp" srcset="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-29-00_hu_fd2356f496a0f9da.webp 800w, https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-29-00.webp 1185w" width="1185"&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;为什么一定要配网关？&lt;/strong&gt;
当 PC1 发现要 Ping 的目标（&lt;code&gt;192.168.2.3&lt;/code&gt;）和自己不在同一个网段时，PC1 &lt;strong&gt;绝对不会&lt;/strong&gt;在局域网里发 ARP 去找 PC3 的 MAC 地址。它会直接把数据包交给自己的“带路人”——网关（&lt;code&gt;192.168.1.254&lt;/code&gt;）。如果不配网关，PC1 在底层直接就会放弃发包。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="实验一路由器直连路由表查看"&gt;实验一：路由器直连路由表查看
&lt;/h2&gt;&lt;h3 id="操作步骤"&gt;操作步骤
&lt;/h3&gt;&lt;p&gt;交换机部分的 VLAN 10/20 创建及 Access 口划分配置与前文一致，详见 &lt;a class="link" href="https://crashmemo.com/p/switch-basics-vlan-isolation/" &gt;网络修炼笔记：交换机基础与 VLAN 隔离&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;此外，还需将 SW1 的 GE0/0/5 口配置为 Trunk，允许 VLAN 10 和 VLAN 20 的标签通过：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[sw1] interface g0/0/5
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[sw1-GigabitEthernet0/0/5] port link-type trunk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[sw1-GigabitEthernet0/0/5] port trunk allow-pass vlan 10 20
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[sw1-GigabitEthernet0/0/5] q
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在路由器 R1 上配置子接口 &lt;code&gt;GE0/0/0.10&lt;/code&gt; 和 &lt;code&gt;GE0/0/0.20&lt;/code&gt;，并输入 &lt;code&gt;arp broadcast enable&lt;/code&gt;（开启子接口的 ARP 广播功能）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;Huawei&amp;gt; system-view
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Huawei] sysname R1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;// 1. 创建并进入用于对接 VLAN 10 的逻辑子接口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1] interface GigabitEthernet 0/0/0.10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.10] dot1q termination vid 10 // 终结 VLAN 10 标签（入向剥标，出向打标）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.10] ip address 192.168.1.254 24 // 配置该子接口 IP，作为 VLAN 10 的网关
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.10] arp broadcast enable // 开启子接口的 ARP 广播转发功能
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.10] quit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;// 2. 创建并进入用于对接 VLAN 20 的逻辑子接口
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1] interface GigabitEthernet 0/0/0.20
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.20] dot1q termination vid 20 // 终结 VLAN 20 标签
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.20] ip address 192.168.2.254 24 // 配置该子接口 IP，作为 VLAN 20 的网关
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.20] arp broadcast enable // 开启子接口的 ARP 广播转发功能
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[R1-GigabitEthernet0/0/0.20] quit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在R1系统视图下查看路由表：&lt;code&gt;display ip routing-table&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="R1 直连路由表" class="gallery-image" data-flex-basis="292px" data-flex-grow="122" height="1108" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-42-38.webp" srcset="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-42-38_hu_3c72de5515535ce8.webp 800w, https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-42-38.webp 1352w" width="1352"&gt;&lt;/p&gt;
&lt;h3 id="路由表底层拆解"&gt;路由表底层拆解
&lt;/h3&gt;&lt;p&gt;配置完成后，路由表中会自动生成两条核心的直连路由表项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目的网段 &lt;code&gt;192.168.1.0/24&lt;/code&gt;，下一跳为 &lt;code&gt;192.168.1.254&lt;/code&gt;，Proto 为 &lt;strong&gt;Direct&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;目的网段 &lt;code&gt;192.168.2.0/24&lt;/code&gt;，下一跳为 &lt;code&gt;192.168.2.254&lt;/code&gt;，Proto 为 &lt;strong&gt;Direct&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;什么是直连下一跳？&lt;/strong&gt;
在路由表的 Proto（协议）一栏中，&lt;strong&gt;Direct&lt;/strong&gt; 代表“直连路由”。这意味着路由器发现这两个网段就在它自己抬手就能碰到的“隔壁房间”（逻辑子接口上）。
当数据包到了路由器手里后，路由器发现目标的下一跳写的是它自己的子接口 IP，它就不需要再把包丢给别的路由器了，而是直接在自己内部把数据包从 VLAN 10 的接口“递给” VLAN 20 的接口。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="实验二单臂路由-trunk-链路四步交互抓包分析"&gt;实验二：单臂路由 Trunk 链路四步交互抓包分析
&lt;/h2&gt;&lt;h3 id="操作步骤-1"&gt;操作步骤
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;右键点击 SW1 与 R1 的互联链路（GE0/0/5），开始抓包。&lt;/li&gt;
&lt;li&gt;从 PC1 发起跨网段 PING 测试：&lt;code&gt;ping 192.168.2.3&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="PC1 ping PC3 结果" class="gallery-image" data-flex-basis="550px" data-flex-grow="229" height="681" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_23-14-25.webp" srcset="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_23-14-25_hu_1a4bd44e0ef65d1f.webp 800w, https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_23-14-25.webp 1562w" width="1562"&gt;&lt;/p&gt;
&lt;h3 id="wireshark-报文时序与标签8021q透视"&gt;Wireshark 报文时序与标签（802.1Q）透视
&lt;/h3&gt;&lt;p&gt;在这根“单臂”链路上，一个完整的 PING 交互（一问一答）其实&lt;strong&gt;在这根线上跑了 4 次&lt;/strong&gt;（进去 2 次，出来 2 次）。抓包数据如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10 5.485000 192.168.1.1 192.168.2.3 ICMP 78 Echo (ping) request ttl=128 | VLAN ID: 10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;11 5.485000 192.168.1.1 192.168.2.3 ICMP 78 Echo (ping) request ttl=127 | VLAN ID: 20
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;12 5.531000 192.168.2.3 192.168.1.1 ICMP 78 Echo (ping) reply ttl=128 | VLAN ID: 20
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;13 5.531000 192.168.2.3 192.168.1.1 ICMP 78 Echo (ping) reply ttl=127 | VLAN ID: 10
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="Trunk链路 Wireshark抓包" class="gallery-image" data-flex-basis="654px" data-flex-grow="272" height="1053" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-59-40.webp" srcset="https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-59-40_hu_d4acd7216dd9681d.webp 800w, https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-59-40_hu_7214d3c6102dae24.webp 1600w, https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-59-40_hu_9b7dcc0bf6e83e5b.webp 2400w, https://crashmemo.com/p/one-armed-routing-inter-vlan-communication/PixPin_2026-06-25_22-59-40.webp 2873w" width="2873"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="单臂路由数据包完整生命周期去程与回程"&gt;单臂路由数据包完整生命周期（去程与回程）
&lt;/h2&gt;&lt;p&gt;为了让所有人都能看懂，我们将上述抓包的 4 个步骤详细说明一下：&lt;/p&gt;
&lt;h3 id="去程pc1vlan-10--pc3vlan-20"&gt;去程：PC1（VLAN 10） → PC3（VLAN 20）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第一步：普通包出门&lt;/strong&gt;
PC1 封装好一个普通的 ICMP Request 包，丢给交换机。此时包里干净无污染，没有带任何 VLAN 标签。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二步：交换机强行打标签（包 10）&lt;/strong&gt;
当包从交换机的 &lt;code&gt;GE0/0/1&lt;/code&gt;（Access 接口）进入交换机内部时，接口像安检站一样，强行在数据包的二层以太网帧头塞入一个 &lt;strong&gt;VLAN 10 的标签（Tag）&lt;/strong&gt;。随后，数据包带着这个标签，顺着 Trunk 链路（GE0/0/5）冲向路由器。此时因为没经过路由器转发，TTL 依然是初始值 &lt;strong&gt;128&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三步：路由器换标签（包 11）&lt;/strong&gt;
路由器 &lt;code&gt;GE0/0/0.10&lt;/code&gt; 子接口收到包，发现标签是 10，于是把标签剥掉，露出三层 IP 核心。路由器查路由表，发现要去 &lt;code&gt;192.168.2.3&lt;/code&gt;（VLAN 20），于是把数据包移交给 &lt;code&gt;GE0/0/0.20&lt;/code&gt; 子接口。&lt;code&gt;0.20&lt;/code&gt; 子接口重新给数据包打上 &lt;strong&gt;VLAN 20 的标签&lt;/strong&gt;，并吐回给交换机。&lt;strong&gt;因为跨越了网段，完成了三层转发，TTL 减 1 变成了 127。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第四步：交换机剥离标签送达&lt;/strong&gt;
带着 VLAN 20 标签的数据包回到交换机内部。交换机发现目标 PC3 在 &lt;code&gt;GE0/0/3&lt;/code&gt;（Access 接口）上。当数据包准备从这个接口跨出交换机、走向 PC3 的网卡时，&lt;strong&gt;Access 接口会强行把 VLAN 20 的标签剥离掉&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：普通的 PC 网卡默认是不认识 802.1Q 标签的，如果带着标签给电脑，电脑会直接报错丢弃。所以交换机出口必须剥标签，给电脑最干净的数据。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="回程pc3vlan-20--pc1vlan-10"&gt;回程：PC3（VLAN 20） → PC1（VLAN 10）
&lt;/h3&gt;&lt;p&gt;回包的逻辑完全是对称的镜像过程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;包 12&lt;/strong&gt;：PC3 回应 Reply，进交换机打上 &lt;strong&gt;VLAN 20&lt;/strong&gt; 标签，通过 Trunk 线送到路由器，此时 TTL 为 &lt;strong&gt;128&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;包 13&lt;/strong&gt;：路由器接收后，在内部查路由表，把标签剥离并换成 &lt;strong&gt;VLAN 10&lt;/strong&gt; 标签，重新扔回 Trunk 线，TTL 减 1 变为 &lt;strong&gt;127&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;数据包回到交换机，从连接 PC1 的 Access 接口&lt;strong&gt;剥离 VLAN 10 标签&lt;/strong&gt;，送回 PC1。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="结论"&gt;结论
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;电脑不带标，带标电脑抛&lt;/strong&gt;：电脑收发都是普通包，标签只在交换机和路由器之间流转。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;入向打标，出向剥标&lt;/strong&gt;：交换机的 Access 接口，进去必须盖章（打标签），出来必须撕掉（剥标签）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;三层转发看 TTL&lt;/strong&gt;：三层转发看 TTL：数据包每经过一次路由器（三层转发），IP 头的 TTL 值必然减 1。在单臂路由中，由于往返共用一根网线，我们能直观地在同条链路上抓到 TTL 从 128 变成 127 的轨迹。&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>