<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>计算机网络 on Jiale's personal blog</title><link>http://savila.me/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/</link><description>Recent content in 计算机网络 on Jiale's personal blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 24 May 2026 22:59:27 +0800</lastBuildDate><atom:link href="http://savila.me/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/index.xml" rel="self" type="application/rss+xml"/><item><title>NAT配置与路由</title><link>http://savila.me/p/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/</link><pubDate>Sun, 24 May 2026 22:59:27 +0800</pubDate><guid>http://savila.me/p/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/</guid><description>&lt;img src="http://savila.me/p/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91.png" alt="Featured image of post NAT配置与路由" /&gt;&lt;h1 id="事情起因"&gt;事情起因
&lt;/h1&gt;&lt;p&gt;今天May 24是我院计算机通信网络的实验考试，考试要求设计在Cisco仿真软件中配置单臂路由，DHCP，静态IP，NAT，ACL；同组的一个同学做的比我快，但是最后卡在了NAT配置上，导致最后以我的实验成果作为最好的标准完成了考核目标
该同学具有刨根问底的精神，哪怕考试后依然虚心向我请教学习和思考，我被我校同学的探究精神打动，耐心回复与解答，并且打算成文一篇，把我们今天遇到的问题公布于互联网上一起讨论：&lt;/p&gt;
&lt;h1 id="a-quick-glance-at-网络拓扑"&gt;A Quick glance at 网络拓扑
&lt;/h1&gt;&lt;p&gt;&lt;img alt="网络拓扑.png|695" class="gallery-image" data-flex-basis="424px" data-flex-grow="177" height="718" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://cdn.jsdelivr.net/gh/XiDianJiale/picgo-repo-img/img/%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91.png" srcset="http://savila.me/%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91_17911076990446043451_hu_fcb2601650c137d3.png 800w, https://cdn.jsdelivr.net/gh/XiDianJiale/picgo-repo-img/img/%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91.png 1271w" width="1271"&gt;&lt;/p&gt;
&lt;p&gt;我们的网络拓扑大致分为左、中、右三块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;左侧（内网/私网）：&lt;/strong&gt; 由 Router0 作为边界网关，下挂交换机和路由器（Router2, Router3），连接 PC0-PC3。采用单臂路由（Router-on-a-stick）划分了多个 VLAN，IP 网段规划为 &lt;code&gt;192.168.14.0/24&lt;/code&gt; 等私网地址。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中间（骨干网/公网）：&lt;/strong&gt; 由 Router1 充当 ISP（运营商）路由器。它与 Router0 之间是公网网段 &lt;code&gt;200.14.1.0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;右侧（外部网络）：&lt;/strong&gt; 由 Router4、Router5、Router6 组成的外部目标网络，连接 PC4-PC7。
Router0 路由表：
&lt;img alt="router0-routetable.png" class="gallery-image" data-flex-basis="444px" data-flex-grow="185" height="557" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://cdn.jsdelivr.net/gh/XiDianJiale/picgo-repo-img/img/router0-routetable.png" srcset="http://savila.me/router0-routetable_10606605274323915332_hu_7aff9bb5ea66c9e4.png 800w, https://cdn.jsdelivr.net/gh/XiDianJiale/picgo-repo-img/img/router0-routetable.png 1032w" width="1032"&gt;
Router1 路由表：
&lt;img alt="router1-routetable.png" class="gallery-image" data-flex-basis="376px" data-flex-grow="156" height="546" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://cdn.jsdelivr.net/gh/XiDianJiale/picgo-repo-img/img/router1-routetable.png" srcset="http://savila.me/router1-routetable_1189029980463275410_hu_bcc64a176695231f.png 800w, https://cdn.jsdelivr.net/gh/XiDianJiale/picgo-repo-img/img/router1-routetable.png 857w" width="857"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="问题聚焦"&gt;问题聚焦
&lt;/h1&gt;&lt;p&gt;假设配置好所有VLAN，单臂路由，DHCP等等之后，思考几个问题：&lt;/p&gt;
&lt;h3 id="1-为什么本网络老师要求用静态路由配置写很多规则难道是老师折磨学生的变态心理"&gt;1. 为什么本网络老师要求用静态路由配置，写很多规则，难道是老师折磨学生的变态心理？
&lt;/h3&gt;&lt;p&gt;很多同学的第一反应是为了让左侧的 PC0 能够 Ping 通右侧的 PC7，干脆在 Router0、Router1 和右侧的所有路由器上全部开启 RIP，互相学习路由。全网路由全覆盖，自然就通了。然后做一个NAT限制，外网访问不了PC0等内网设备就可以了，&lt;strong&gt;我的组员队友就是踩在了这个坑里&lt;/strong&gt;
真相是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这样做在模拟器里确实能通，但在逻辑上&lt;strong&gt;完全违背了真实世界的网络架构，也让 NAT 彻底失去了意义。&lt;/strong&gt; 在真实情况中，Router1 是运营商的路由器，公网路由器&lt;strong&gt;绝对不可能&lt;/strong&gt;包含你家内网（&lt;code&gt;192.168.x.x&lt;/code&gt;）的路由表。如果用了动态路由，左右两边完全不需要做 NAT 转换就能互相访问，公网私网的边界就被打破了。路由器同样学会了外网怎么打入内网设备的路由，那这个NAT还有什么意义？&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-公网不知道私网的ip那么ping的回包是怎么传回的"&gt;2. 公网不知道私网的IP，那么Ping的回包是怎么传回的？
&lt;/h3&gt;&lt;p&gt;假设 PC0（&lt;code&gt;192.168.14.1&lt;/code&gt;）去 Ping 远端的 PC7，流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;去程：&lt;/strong&gt; PC0 发出 ICMP 包（源:&lt;code&gt;192.168.14.1&lt;/code&gt;，目的:&lt;code&gt;PC7 IP&lt;/code&gt;）。包到达边界 Router0。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NAT 介入：&lt;/strong&gt; Router0 发现配置了 NAT，于是将包的&lt;strong&gt;源 IP&lt;/strong&gt; 修改为自己的公网 IP（&lt;code&gt;200.14.1.2&lt;/code&gt;），目的 IP 不变，丢给下一跳 Router1。&lt;/li&gt;
&lt;li&gt;Router1 查路由表，找到去往 PC7 的路，将包顺利送达。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回程：&lt;/strong&gt; PC7 收到包，准备回包。此时回包的&lt;strong&gt;目的 IP 是 &lt;code&gt;200.14.1.2&lt;/code&gt;&lt;/strong&gt;（Router0 的公网口 IP），而不是 PC0 的私网 IP！&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NAT 映射开始作用：&lt;/strong&gt; Router1 知道怎么去 &lt;code&gt;200.14.1.0&lt;/code&gt; 网段（直连路由），把包交还给 Router0。Router0 查自己的 NAT 映射表，把包的目的 IP 还原成 &lt;code&gt;192.168.14.1&lt;/code&gt;，最终送回 PC0。
而相反的，如果是PC7直接pingPC1的话，数据包到达Router1之后就不知道去哪里了，此时路由器会直接丢包并向源地址PC7地址发送一个 ICMP 错误消息（如“目的不可达”或“超时”）。&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>