ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

NAT原理与实验配置:NAPT、端口映射、双出口及排障全解析

NAT原理与实验配置:NAPT、端口映射、双出口及排障全解析 不少刚接触网络的人第一次被 NAT 弄懵都是因为发现一个诡异现象内网两台机器明明用的是私有地址可一上外网服务器那边看到的源 IP 居然一模一样更邪门的是你在这边开个下载任务那边查到的“出口 IP”可能是隔壁城市某个机房。我在给学生讲交换机路由器配置时也总说NAT 是整个网络世界里“最会撒谎”的一层装置但恰恰是这层善意的谎言把 IPv4 的老底给续了下来。这篇东西准备把 NAT 从头到尾掰开揉碎讲清楚从它到底解决什么问题到数据包在 NAT 设备上怎么被改头换面再到我在实验环境里实际敲过的静态 NAT、动态地址池、端口映射、回流问题、双出口场景全部过一遍。文章不挑设备品牌命令示例会覆盖华为/H3C 风格和 Linux iptables 两种常见环境能帮你在 GNS3、EVE-NG、VMware 或者一台普通 Linux 服务器上把实验复现出来。不管是期末考试、保研复习、考证面试还是工作中遇到“为什么这个应用在 NAT 后面就用不了”的诡异故障这文都能给你一个能落地的参考。1. 先说清楚 NAT 到底在解决什么问题以及它的谎言是怎么编圆的1.1 没有公网地址的日子根本过不下去IPv4 地址总共就 43 亿左右。听着不少但今天一个人手里可能同时攥着手机、电脑、平板、智能手表、路由器、摄像头好几个地址需求43 亿根本扛不住。IANA 在 2011 年就把最后的 IPv4 地址池分完了各地运营商手里的存量也早就是省着用。那怎么办两拨人分别给出了解决方案。一拨人搞 IPv6用 128 位地址从根上解决数量问题另一拨人务实一点在 IPv4 基础上做“复用”——这就是 NAT让一个公网地址后面挂几百上千台私网设备大家共用这一个“门牌号”出去玩。1.2 NAT 的底层逻辑就是一张能改地址的“登记表”NAT 设备通常部署在内网出口和公网之间的位置比如家里那台宽带路由器或者机房里的出口防火墙。它有两张网卡一张叫 inside内网侧一张叫 outside公网侧。内网设备发往外网的包到达 NAT 设备后设备会瞟一眼源地址如果源地址是 RFC 1918 规定的私网地址段10.0.0.0/8、172.16.0.0/12、192.168.0.0/16它就把这个源地址改写成自己的公网接口地址同时记下来一条映射关系当外网服务器回包时目的地址是 NAT 设备的公网 IPNAT 设备再根据表里查到的记录把目的地址改回原来那台内网机器的私网 IP然后从 inside 口丢进去。整个过程对两端来说都是透明的。内网机器以为自己在直接跟服务器通信服务器也完全不知道自己面对的其实是一台“翻译官”。数据包在穿越过程中被改写的位置很固定就是 IP 报头里的源地址/目的地址字段以及校验和字段。TCP 和 UDP 的校验和因为涉及伪头部通常也要跟着重算这一点抓包的时候能看得很清楚在 NAT 设备内网侧抓到的是私网地址版本在外网侧抓到的是公网地址版本。1.3 端口的复用是 NAT 真正的核心智慧如果只是简单把私网地址一对一换成公网地址那一个公网 IP 也只够一台设备用问题根本没解决。NAT 真正的骚操作在于把传输层的端口也拉进来一起做映射——这就是 NAPTNetwork Address Port Translation也就是大家平时说的 PAT。打个比方理解一下公司前台有一部公用电话号码是 010-88888888。全公司几百号人想往外打电话都通过这部电话拨出去。对方看到的主叫号码永远是这个总机但总机接线员会在本子上记张三要的是线路 A李四要的是线路 B。等外面的人回电话进来时接线员按线路号找对应的人转接。NAT 设备干的就是接线员的活它把“内网 IP 端口”和“公网 IP 端口”建立起一一对应关系。发往外的包把源 IP 改成公网地址源端口改成随机分配的一个高位端口回应包到达时再靠目的端口号反推回原来的内网 IP 和端口。这样一来一个公网地址理论上最多能撑起 65535 个并发连接实际上受资源限制远到不了这个数但几千上万个是没问题的。我见过有同学在实验报告里写“一个公网 IP 只能让一台电脑上网”这就是没搞懂 NAPT 和静态 NAT 的区别。后面实验部分我会用抓包数据把这个过程展示出来。2. 四类常见 NAT 形态从静态一对一到大网段复用2.1 静态 NAT一对一适合服务器发布场景静态 NAT 就是管理员手动在设备上写死一条映射把某个公网 IP 永久绑定给内网某一台设备。比如公司有一台内网 Web 服务器IP 是 192.168.1.10你希望外网用户访问公网地址 203.0.113.10 时能到达这台服务器。华为上的配置思路是interface GigabitEthernet0/0/1 ip address 192.168.1.254 255.255.255.0 interface GigabitEthernet0/0/0 ip address 203.0.113.1 255.255.255.0 nat static global 203.0.113.10 inside 192.168.1.10 netmask 255.255.255.255配置完成后在系统视图下需要确保接口启用了 NAT 绑定interface GigabitEthernet0/0/0 nat static enable这条命令之后所有访问 203.0.113.10 的流量都会被转给 192.168.1.10而且是双向的既有源地址转换也有目的地址转换。适合做对外服务器映射因为外网用户访问入口是固定的。2.2 动态 NAT多对多只能建立在地址池基础上动态 NAT 不去固定一对一而是准备一个公网地址池内网设备来一个就分配一个池里的地址。比如公司买了 100 个公网 IP内网有 300 人那最多同时允许 100 人上网第 101 个人就得等前面的人用完把地址释放出来。华为的做法nat address-group 1 203.0.113.100 203.0.113.199 acl number 2000 rule 5 permit source 192.168.1.0 0.0.0.255 interface GigabitEthernet0/0/0 nat outbound 2000 address-group 1这种方式的优点是地址利用率高缺点是公网地址紧张时用户上网体验会受影响。实际上动态 NAT 现在已经不太常用了因为和 PAT 相比它没有节省地址的优势还要占用一整段公网地址来配置地址池费用上不划算。真正常见的是下面这种地址池 端口复用。2.3 NAPT/PAT 才是家用路由器和企业出口的常态NAPT 就是我在前面 1.3 节讲的那种方式。家用宽带路由器、企业出口防火墙、运营商的 CGN 设备全都是靠 NAPT 才用少量公网 IP 撑起大量用户。华为下发的典型配置acl number 2000 rule 5 permit source 192.168.1.0 0.0.0.255 nat address-group 1 203.0.113.2 203.0.113.10 interface GigabitEthernet0/0/0 nat outbound 2000 address-group 1瞧瞧这个配置和 2.2 节动态 NAT 的差别就在最后多了一行nat outbound 2000 address-group 1里隐含的“复用”逻辑华东通常只要把地址池加上no-pat关键字就变成纯动态 NAT默认不加no-pat就是 NAPT。比如interface GigabitEthernet0/0/0 nat outbound 2000 address-group 1 no-pat加了no-pat就是只转换 IP 不转换端口纯粹的一对一占用公网地址不加no-pat时就是 PAT 模式几百台内网机器可以共用地址池里的几个 IP同时配合不同的源端口进行区分。2.4 双向 NAT不光是上网出去更要让外网主动进来找你开头提到那些场景不论静态 NAPT 还是动态 NAT都在处理“内网主动访问外网”这种单向流量。但实际场景还有一种非常核心的需求让外网用户主动访问内网服务器。这是 DNATDestination NAT干的活——修改目的地址。以华为为例假设内网有一台 FTP 服务器 192.168.1.10想发布到公网 203.0.113.50 的 21 端口配置是interface GigabitEthernet0/0/0 nat server protocol tcp global 203.0.113.50 21 inside 192.168.1.10 21这条命令翻译成人话就是所有到达 203.0.113.50 且目的端口是 21 的 TCP 包目的地址一律改写成 192.168.1.10端口保持不变。以后外网用户直接访问ftp://203.0.113.50就能连到内网那台主机。但这里藏着一个新手特别容易踩的坑就是“回流问题”或者说 NAT 环回问题内网用户通过公网 IP 访问自己发布的服务器很多设备默认是不通的。原因在于内网数据包到达防火墙时源地址是 192.168.1.x目的地址是 203.0.113.50防火墙做完 DNAT 后数据包确实进入了服务器但服务器的回应包看到源地址是 192.168.1.10自己网段它不会绕到防火墙转一圈而是直接回了客户端。客户端一看我明明请求的是 203.0.113.50怎么回包的源地址是 192.168.1.10TCP 连接直接被打断。解决思路一般有三种配置 NAT hairpin / NAT loopback让设备支持内网访问自身公网地址时的特殊转发内网用户访问服务器直接用内网 IP在 DNS 上做内网外网区分在企业网络里常用Split DNS。做实验时条件有限一般用方案 2 向学员解释但工作中方案 1 才是真正的杀手锏。这里不展开设备具体命令了不同厂商差异极大重要的是先理解“为什么会有这个问题”。3. 动手搭一套 NAT 实验环境把每种转换过程抓到明面上3.1 环境规划复刻一个最小但五脏俱全的局域网我的建议是别一上来就在真机上折腾先用模拟器把拓扑跑通理解流程后再搬到实体设备。如果你有真机当然更好。我这里给出一个随时能复现的实验拓扑设备需求极低。用 EVE-NG 或 GNS3 跑三台路由器加两台 PC 就行PC1192.168.1.10/24网关 192.168.1.254PC2192.168.1.20/24网关 192.168.1.254R1作为 NAT 网关/防火墙G0/0/0 接内网 192.168.1.254G0/0/1 接外网 203.0.113.1/24R2模拟互联网上的远端服务器Lo0 地址 8.8.8.8/32G0/0/1 接口 203.0.113.2注意 R1 和 R2 之间链路直接起一个 203.0.113.0/24 的网段代表公网。所有公网接口上不要配置私网地址这样更贴合实际。R2 上加一条默认路由指回 203.0.113.1或者写条静态路由指向 R1 的接口也行。EVE-NG 里如果拉了 IOSv 镜像这个拓扑五分钟内就能拉起来。Windows 用户完全可以在 VMware Workstation 里搭 Linux 虚拟机做同样的实验只用一个标准虚拟机加一张 NAT 模式的虚拟网卡即可。但我觉得既然标题里带了“实验配置”还是用路由器命令行讲更直观因为路由器上的 NAT 规则表达得最清晰。3.2 先做一组基础 NAPT 实验抓包验证端口复用的全过程在 R1 上做如下配置把内网 PC 上网的流量全部做成 NATacl number 2000 rule 5 permit source 192.168.1.0 0.0.0.255 nat address-group 1 203.0.113.10 203.0.113.10 interface GigabitEthernet0/0/1 nat outbound 2000 address-group 1为了让实验更有说服力我特意把地址池写成了只有一个 IP203.0.113.10这样能在报告里看到多台 PC 共享同一个公网 IP 出口的效果。配置完别忘了在 R1 上确认display nat session all这个命令出来的每一行都代表一条当前活跃的 NAT 映射记录。正常你会看到类似NAT Session Type: IKE NAT : 203.0.113.10:1024 -- 8.8.8.8:80 IKE : 192.168.1.10:1024 -- 8.8.8.8:80两行对照就一目了然内网那条记录是 192.168.1.10 发起的出网后源地址变成了 203.0.113.10源端口可能变成了 1024 或其他高位值。如果两台 PC 同时发连接就能看到一个公网 IP 背后挂着两条不同内网 IP 的记录。再用 Wireshark 在 R1 的 G0/0/1 接口公网侧抓包PC1 去 ping 一下 8.8.8.8。公网侧抓到 ICMP 请求的源地址就是 203.0.113.10绝对不是 192.168.1.10。如果想要实验报告更完整建议同时在 R1 的内网接口也抓一份对比两份 pcap 的 IP 头NAT 的修改行为就铁证如山了。3.3 临时给一个内网 IP 放行特殊待遇关于 ACL 匹配顺序的坑我见过不少人在做高级实验时犯过一个低级错误ACL 规则顺序写反了。比如需求是这样的——允许 192.168.1.0/24 网段全部上网但 192.168.1.100 这台服务器必须要固定映射到 203.0.113.20不允许动态改动。有些同学写出了这样的 ACLacl number 2000 rule 5 permit source 192.168.1.0 0.0.0.255 rule 10 permit source 192.168.1.100 0.0.0.0这条规则完全没起作用因为路由器从上到下匹配先命中了范围更大的 rule 5192.168.1.100 的流量会直接落入 NAT 动态地址池根本不会走到 rule 10。正确写法acl number 2000 rule 5 permit source 192.168.1.100 0.0.0.0 rule 10 permit source 192.168.1.0 0.0.0.255特例放在前面普适规则垫底这是写 ACL 的基本素养。放到 NAT 场景里同样适用只要涉及“某个 IP 特殊处理”规则顺序绝对要先特殊后一般。类似的问题在做 H3C 实验时一模一样你在这边掉了坑去那边十有八九也会掉。3.4 用 Linux iptables 复现同样场景适合没有模拟器的同学很多人手边并没有华为模拟器或者思科镜像但基本都有台 Linux 服务器甚至树莓派。用 iptables 也能完美演示 NAT 的核心逻辑而且代码量极少。打开 Linux 的转发功能sysctl -w net.ipv4.ip_forward1 echo net.ipv4.ip_forward1 /etc/sysctl.conf然后添加两条关键的 NAT 规则iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE iptables -t nat -A PREROUTING -d 203.0.113.50 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80第一条等价于 NAPT所有从 eth1 出去的 192.168.1.0/24 网段的包源地址自动伪装成 eth1 的 IP同时自动管理端口映射。第二条是 DNAT把进入 eth1、目的地址是 203.0.113.50、目的端口是 80 的 TCP 包全部转到内网那台 Web 服务器。用 iptables 查看当前转换表conntrack -L | grep 192.168.1.10或者看一下 conntrack 的完整记录cat /proc/net/nf_conntrack你会发现 iptables 的 NAT 本质上就是靠 Linux 内核的 conntrack连接跟踪机制在记录地址端口的对应关系。这也能解释为什么 NAT 设备必须是有状态的它必须记得每个连接是谁发起的否则回包来了不知道往哪送。无状态防火墙做不了 NAT这是一个重要的原理性认识。4. 进阶实验双出口 NAT、负载均衡和运营商级 NAT 延展4.1 一条网线不够用双出口场景下 NAT 该怎么看公司同时拉了两条宽带线路一条电信一条联通希望通过不同的目的网络走不同的出口并且在出口设备上分别做 NAT。这种场景在热搜词里有“双出口 NAT”说明实际工作中确实经常遇到。核心思路就两条策略路由決定走哪个出口每个接口做自己的 NAT。拓扑上 R1 是两个运营商的接入点G0/0/0 接电信 202.100.1.1G0/0/1 接联通 210.50.1.1G0/0/2 接内网。配置思路示意华为风格acl number 3000 rule 5 permit ip destination 202.0.0.0 0.0.0.255 acl number 3001 rule 5 permit ip destination 210.0.0.0 0.0.0.255 traffic classifier ctc if-match acl 3000 traffic behavior ctc redirect ip-nexthop 202.100.1.254 traffic policy ctc classifier ctc behavior ctc interface GigabitEthernet0/0/2 traffic-policy ctc inbound interface GigabitEthernet0/0/0 nat outbound 2000 interface GigabitEthernet0/0/1 nat outbound 2000注意这里两个出接口治理的是同一批内网 IP但 NAT 出接口不一样所以数据包从哪个口出去源地址就会被改写成哪个口的公网 IP。这就是“双出口 NAT”的实际落地方式策略路由先决定路线NAT 在出口再改一次源地址。如果不做策略路由只配置两条默认路由做负载分担你就得小心 NAT 的回包问题。假设内网发出一个 HTTP 请求走电信出口但回来的包因为路由不对称走到了联通出口联通接口上的 NAT 状态表根本没见过这个连接回包直接丢弃。这是双出口 NAT 最典型也是最容易踩的坑。解决办法是要么做对称路由要么在防火墙上开 session 同步/开启 asyn 处理要么老老实实按源地址哈希绑定出口不要让一条流的去程回程散到两个出口。4.2 多公网 IP 的地址池与 ALG为什么 FTP 在 NAT 后面总出幺蛾子FTP 可能是 NAT 环境下最经典的反面教材。传统 FTP 分主动模式和被动模式两种主动模式客户端用 20 端口连接服务器的 21 端口然后服务器主动从 20 端口连接客户端的某个高位端口传数据被动模式客户端先从 21 端口发 PASV服务器返回一个高位端口客户端再去连这个端口收数据。问题来了数据连接里携带的是 IP 地址和端口号如果整条链路经过 NAT数据包里的“地址信息”是私网地址外面的服务器按这个私网地址根本连不通。比如主动模式下服务器要连客户端的高位端口客户端经过 PAT 之后这个高位端口对应的公网地址和端口对应关系如果 NAT 设备不额外处理服务器拿到的就会是一个内网不可达的地址。这就是 FTP 明明控制连接通了但列目录、传文件时就卡死的原因。NAT 设备一般通过 ALGApplication Level Gateway来解决这类问题。华为上默认开启了部分协议的 ALGnat alg ftp enable思科 IOS 里通常是ip nat service ftp tcp port 21开启后NAT 设备会去“偷看”FTP 控制连接里携带的私网地址和端口在数据连接建立之前把自己的公网地址和映射端口替换进去。SIP 视频通话、H.323、RTSP 这些多媒体协议同样有这个问题全部依赖 ALG 做二次改写。做完实验后我想强调一句遇到 NAT 环境下某个上层应用异常别第一时间怀疑防火墙拦截先想想这个应用是不是在应用层报文里藏了 IP 或端口。如果藏了必须上 ALG 或应用层代理如果没有再往 ACL 和路由方向排查。4.3 运营商级 NATCGN与为什么网站老提示我网络异常热搜清单里有句很生活化的词条我们的系统检测到您的计算机网络中存在异常流量。曾几何时好多人后台私信我问这是不是电脑中毒了。其实很多时候就是因为你的流量从运营商 NAT 设备出来后和几百个人共享了同一个公网 IP网站风控系统看到这个 IP 同时段有大量不同来源的请求于是误判为攻击或异常流量给你弹了个验证码或者干脆拒绝服务。运营商级 NATCarrier-Grade NATCGN就是运营商在城域网出口部署的巨型 NAPT 设备把大量用户的私网流量汇总后用少量的公网 IP 出口。它和我们自己做的 NAT 原理一模一样区别只是规模大、并发高、设备要求高。CGN 环境下,普通用户是拿不到独立公网 IP 的对外统一表现为运营商 NAT 池里的某几个 IP 之一。这导致一些依赖“公网 IP 直连”的场景没法玩比如家用 NAS 的端口映射、某些 P2P 联机游戏。如果你在家里做实验想跳过 CGN 的坑可以打电话向运营商申请公网 IPv4很多地方现在仍然可以免费开或者转向 IPv6。这也是为什么网上有那么多人同时搜“NAT 实验配置”和“IPv6”。IPv6 虽然也保留了 NAT66 之类的技术但正常情况下完全不需要 NAT因为公网地址多到用不完端到端直连才是它的设计初衷。5. 我在实际配置和排障时沉淀下来的几条关键经验5.1 NAT 表项老化时间与实际业务的关系NAT 映射不是永久有效的。设备会给每条记录设置一个老化时间TCP 的默认老化时间通常是 60 到 300 秒UDP 一般是 60 秒左右。问题在于很多应用的长连接比如数据库连接、SSH 空闲会话、大文件传输可能几分钟都没有数据包流动。NAT 表项一旦老化后面再有回包就找不到转换记录了连接直接断掉。现象就是“过一会就掉线重新连一下又好”。解决办法一般有两种调大 NAT 会话老化时间但这样会增加设备内存压力并发高的场景要谨慎在应用层配置 TCP KeepAlive让连接定期产生小流量避免表项被清。如果是华为设备调整 NAT 老化时间的命令是firewall session aging-time tcp 1800有的设备是nat aging-time tcp 1800不同型号命令有差异但思路完全一致。做实验时如果发现某个连接不用之后就断了优先检查 NAT 表项还在不在。5.2 私网地址冲突两个网段用了同一个 192.168.1.0/24公司合并分公司时经常遇到这种情况两边内网都用 192.168.1.0/24。总公司和分公司通过专线互联但两边同时存在 192.168.1.10 这台机器路由就打架了。NAT 在这里可以再救一次场——在总部出口设备上把分公司的 192.168.1.0/24 整体转换成另一个私网网段比如 10.10.1.0/24再做路由互通。这类转换在华为上叫 NAT 二次转换或者私网到私网的 NAT命令类似interface GigabitEthernet0/0/0 nat outbound 3000 address-group 2ACL 3000 匹配分公司内网过来的源地址地址池 2 放一段 10.10.1.100-10.10.1.200。这样总公司路由表里就完全感知不到分公司的冲突网段了。这里有个核心认知NAT 不仅能帮私网访问公网也能解决私网之间的地址重叠问题。原理和实现完全一样只是转换前和转换后的地址都在私网段里。5.3 抓包验证怎么判断 NAT 到底生效了没有我经常被问到“老师我 NAT 配了但外网还是不通怎么查”我的答案永远是先抓包、再看表、最后查路由。排障顺序特别重要。看表用display nat session all能快速确认有没有 NAT 记录生成。如果没有任何记录说明流量根本没过 NAT 设备问题可能在路由或 ACL。如果记录生成了但业务不通就去接口上抓包看在内网接口抓包看数据包是否正常到达在公网接口抓包看出接口前数据包源地址有没有变成公网地址如果第 2 步看到源地址已经是公网地址那问题基本出在防火墙上丢包、路由回包错误或对端设备回程路由不对。回程路由是另一个高频坑。R2 上必须有一条指向 203.0.113.0/24 网段的路由如果 R2 没有回程路由公网侧的响应包根本回不到 R1外网自然就不通。不管下游接的是交换机还是 PC只要你对它做了 NAT就必须保证它能回到 NAT 设备。6. 这些命令和配置在面试笔试中怎么答以及进一步扩展的方向6.1 常考面经题一句话总结 NAPT 和静态 NAT 的区别每年到保研季、校招季总有人拿 NAT 相关题目来问我。被问最多的大概是这两个第一个NAT 和 PAT 到底有什么区别标准答法NAT 是网络地址转换只修改 IP 报头中的源或目的 IP 地址一对一映射PAT 是端口地址转换在 NAT 基础上同时修改传输层端口实现多对一映射是 NAT 的一种扩展。第二个为什么说 NAT 破坏了端到端通信原则答法要分两层一是 NAT 设备需要维护转发状态变成一个有状态节点这和 IP 网络“中间设备无状态、只存转发”的设计初衷相背离二是 NAT 对部分应用协议不透明像 FTP、SIP 这类携带 IP 地址的应用需要 ALG 辅助才能工作。面试里能说清楚这两点再结合自己的实验过程聊几句display nat session的输出基本就能证明你真的动手做过而不只是背书。6.2 和 IPv6 的关系NAT 的“退休”与“返聘”IPv6 大规模普及之后理论上每个设备都有公网地址NAT 自然就没有存在意义了。但现实里 IPv6 过渡期间仍然存在各种变种 NATNAT64 用于 IPv6 和 IPv4 互通NAT66 用于 IPv6 地址重写。所以你会发现 NAT 这个知识点不仅不会过时反而还在各种过渡技术里反复出现。就算你将来主要搞 IPv6 网络理解 NAT 的原理也能帮你更快地上手地址转换类技术。6.3 做完实验后我还建议你去折腾的进阶方向一个基础 NAT 实验做完可以继续挑战这几个方向每个都能显著加深你对网络的理解使用nat server把内网多个服务发布到同一公网 IP 的不同端口比如 203.0.113.50:80 映射到内网 Web203.0.113.50:3389 映射到内网远程桌面。这需要理解目标端口区分规则。在 Linux 上把 iptables 规则加进 systemd 服务脚本里模拟真实的开机自启动也能理解 NAT 规则在设备重启后丢失的痛点。在 EVE-NG 里把三台路由器串成一个三跳 NAT 环境分析每跳对数据包的影响。自己动手在华为设备上抓包并导出 pcap用 Wireshark 分析 NAT 前后数据包的 TTL、标识符、校验和变化。TTL 会减少标识符可能不变但校验和必然改变。这些方向做完你对 NAT 的掌握就不是停留在“能上网”层面而是真正到了“能讲明白、能排故障”的水平。最后说一句个人体会NAT 这个东西你说它难原理其实就那么点一张地址映射表翻来覆去你说它简单实际环境里又总能在最想不到的地方给你上一课。所以我一直建议身边的朋友别只在模拟器里敲完命令就完事有条件就拿两台真实设备或两台 Linux 虚拟机配合 Wireshark 把每个包的变化过程亲眼确认一遍。地址怎么改的、端口怎么换的、老化时间怎么掉的这些细节只看书永远记不牢抓过一次包就再也忘不掉了。
返回列表