ARTICLE DETAIL

资讯详情

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

锐捷RG-EG210G-E同网段互通:双向NAT解决IP地址冲突

锐捷RG-EG210G-E同网段互通:双向NAT解决IP地址冲突 两个厂区各自建网谁也没跟谁打招呼规划的时候都把网段定成了 192.168.1.0/24。等到业务上要打通数据才发现锐捷 RG-EG210G-E 路由器上死活配不出那条路由——因为 192.168.1.0/24 在自己这边是直连网段你告诉它去 192.168.1.50 走对面那台设备它凭什么信你这就是典型的 IP 地址冲突场景下的局域网互通需求。这件事看起来只是加几条静态路由的小活实际上牵扯到路由匹配优先级、NAT 转换方向、出接口绑定、ARP 行为、DHCP 抢答等一连串细节任何一环没想清楚结果就是 ping 不通、通一半、或者通了但业务跑不起来。下面我按现场实操的顺序把整套思路、配置字段填法、验证过程和踩过的坑完整捋一遍适合手上有 EG 系列网关、又碰上两边网段撞车的一线网络运维人员参考新手也能跟着一步步复现。1. 问题到底出在哪同网段互通为什么比想象中难先别急着敲配置得先把为什么不通这件事想明白。很多人第一反应是加一条静态路由不就行了然后在设备上点半天发现要么加不进去要么加进去了不生效。根子在于三层转发的基本规则和你脑子里那个两条路选一条的直觉不是一回事。1.1 路由表的最长匹配让静态路由形同虚设路由器转发一个包做的是查表动作而查表的规则叫最长前缀匹配。假设 A 区的网关自己有一个直连网段 192.168.1.0/24挂在 LAN 口上掩码长度 24 位。这时候你再写一条静态路由目标 192.168.1.0/24下一跳 192.168.99.2。两条路由的前缀长度完全一样都是 24 位设备只会挑其中一条通常优先选直连。更麻烦的是相当一部分设备在配置阶段就会直接拒绝这条静态路由提示网段冲突或者干脆静默丢弃你在界面上看着像是保存成功了实际上生效列表里根本没有它。所以这里有个必须接受的前提只要两个局域网的地址段完全重叠三层直接路由这条路就是堵死的。别在静态路由上耗时间方向从一开始就不对。想通这一点后面所有方案就顺了——要么把地址改掉要么把地址换个身份送过去。改地址意味着动终端、动服务器、动打印机、动门禁、动摄像头甚至动 PLC业务中断风险极大通常不是首选。那就只剩换身份也就是做地址转换。1.2 三个看起来可行的方案两个会翻车把两个冲突网段打通市面上常见的思路大概有三种我一个个说清楚为什么有的能用、有的千万别碰。第一种是二层打通拿一根网线把两边的交换机接起来让两个网段处于同一个广播域。这个方案听起来最省事实际上是最危险的。两边地址完全重叠接通的瞬间就会出现两台设备抢同一个 IP 的情况ARP 表会被反复刷新网关地址 192.168.1.1 同时存在两台设备在响应终端不知道该把包发给谁。更别提两个 DHCP 服务器会互相抢答客户端拿到的地址可能来自对面那台设备网关也跟着错。真要这么干基本等于给整个网络埋一颗定时炸弹能不用就不用。第二种是加静态路由前面已经说过走不通不重复了。第三种是地址转换把对端网段映射成一个本地不存在的虚拟网段本地终端访问虚拟地址设备在转发过程中把地址改写成真实地址送过去回包再改写回来。这个方案改动最小只需要在转换设备上做配置终端侧完全无感用户体验上和访问本地网段没区别。缺点也有后面会详细讲主要是广播类业务会失效、排障时看到的地址和实际地址对不上、设备负载增加。但综合来看在不能改地址这个硬约束下它是最现实的选择。1.3 为什么把 RG-EG210G-E 放在转换点上选锐捷 RG-EG210G-E 这个型号来做转换点有几个很实际的理由。它是企业级多业务网关本身就带多个千兆接口能同时承担 LAN 侧接入和 WAN 侧互联它原生支持 NAT、静态路由、策略路由这些三层功能不需要额外挂一台设备EG 系列的 Web 管理界面里 NAT 和路由的配置入口比较直观现场改配置不用记太多命令再加上它本身还带一些行为管理和流控能力作为两个网段之间的闸门顺手还能做点访问控制。这里要提醒一句RG-EG210G-E 的定位是网关不是核心交换机。它适合做两个网段之间的转换点和出口不适合扛大流量的内网东西向数据交换。如果你的业务是几十上百台机器同时对另一侧做文件传输设备的 NAT 会话表和转发能力会成为瓶颈这时候要考虑是不是该上更高一档的型号或者干脆把地址规划重新做一遍。这一点我在实际部署里吃过亏一台网关被拿去顶核心交换的活跑了两周就开始丢包排查半天才发现是转发容量的问题不是配置的问题。2. 动手前的地址规划与拓扑设计配置可以在十分钟内敲完但地址规划如果拍脑袋决定后面改起来就是半天起步。这一段把拓扑和地址怎么定讲透你照着套就行。2.1 三段式拓扑本地网、互联链路、虚拟映射网段我习惯把这种场景拆成三个地址段来看思路会清晰很多。第一个是本地真实网段也就是 A 区自己的 192.168.1.0/24网关是设备 LAN 口的 192.168.1.1这一层完全不动终端、服务器、打印机的地址一个都不用改。第二个是互联链路网段用来连接两台设备。物理上就是一根网线从 A 侧设备的一个空闲接口连到 B 侧设备的一个空闲接口两头配上同一网段的不同地址比如 A 侧配 192.168.99.1/24B 侧配 192.168.99.2/24。这个网段要选得干净不能和任何一边的现有网段重叠不然又会引入新的冲突。第三个是虚拟映射网段这是整个方案的核心。A 区要访问 B 区的 192.168.1.0/24就在 A 区这一侧造一个虚拟网段比如 10.10.10.0/24规定 10.10.10.50 对应 B 区的 192.168.1.5010.10.10.60 对应 B 区的 192.168.1.60。A 区的终端要访问 B 区的服务器就访问 10.10.10.50 这个地址。B 区那边同理造一个 10.10.20.0/24 对应 A 区的真实网段如果 B 区需要主动访问 A 区的话。需要说明的是很多资料会把互联链路和虚拟映射合并考虑让互联口直接充当映射地址的载体。这种简化在小规模场景下能用但一旦映射条目变多排查起来会很乱我建议还是分开各个网段职责单一出问题的时候一眼就能定位是哪一层的事。2.2 虚拟网段怎么选才不会给自己挖坑虚拟网段的选择看着随意其实有几个硬性约束违反了就会莫名其妙的出问题。不能落在 0.0.0.0/8、127.0.0.0/8、224.0.0.0/4、255.255.255.255 这些保留或特殊用途地址段里不能和任何一边的真实业务网段重叠包括那些暂时没在用但规划里预留的网段不能和互联链路网段重叠否则设备的接口地址会和映射地址打架不能和办公 WiFi、访客网络、监控专网这些旁路网段重叠很多人规划的时候只盯着主网忘了访客网也是 172.16 开头我一般的做法是从 10.10.0.0/16 这个大池子里切A 侧用 10.10.10.0/24B 侧用 10.10.20.0/24一个厂区一个号段规律清楚后面加第三个、第四个厂区也好扩展。另外一个细节映射粒度上如果你需要映射的是整段设备可以用网段对网段的一对一映射配置条目少如果只需要映射几台关键服务器建议用单个地址对单个地址的映射也就是 /32好处是关系明确、排查直观、不会误伤到那些不该被访问的设备。我个人的偏好是优先用单地址映射哪怕多写几条可控性比省事重要得多。2.3 配置前必须确认的四件事正式动手之前有四件事必须先核实不然后面一定会返工。第一设备的固件版本和管理模式。RG-EG210G-E 不同批次的固件版本Web 界面上 NAT 配置的菜单名称和字段位置会有差异有的版本叫地址转换有的叫NAT 策略还有的会把源转换和目的转换分开放在两个页面。动手前先看一眼实际界面别照着别人的截图找菜单。用命令行管理的话show version先看一眼版本号命令语法在不同版本间也可能有调整。第二接口的物理属性和从属关系。EG 系列设备的接口面板上LAN 口和 WAN 口是有固定角色划分的哪些能配成三层路由口、哪些在做二层交换要先弄清楚。可以用show interface status或者界面上的接口列表确认。如果接口不够用还可以用 VLAN 子接口的方式来提供额外的三层接口但要注意子接口的 VLAN 封装要和对面协商一致。第三业务端口和访问关系。把需要互通的业务先列个清单哪几台服务器、跑什么服务、用什么端口、走 TCP 还是 UDP、有没有用到组播或者广播发现。这份清单决定了你要做多少条映射规则也决定了后面是否需要额外的 ALG 处理。我曾经遇到过一个场景数据库通了、Web 也通了就是文件共享死活不行最后发现是共享发现机制依赖广播跨三层 NAT 之后彻底失效只能改用 IP 直连。第四回滚方案。改配置前先做一次配置备份界面上一般都有导出功能命令行下可以用show running-config把当前配置抄下来存好。现场改配置最怕的就是改到一半通不了又回不到改之前的状态两边业务一起停。这个习惯值千金。3. 原理拆解双向NAT在数据包里到底改了什么配置之前把数据包的旅程在脑子里过一遍后面敲命令的时候你就知道每个字段在干什么出问题也知道从哪查。3.1 一个数据包从 A 区到 B 区的完整旅程假设 A 区有一台终端 192.168.1.100要访问 B 区的一台服务器B 区服务器真实地址是 192.168.1.50映射后的虚拟地址是 10.10.10.50。终端发包源地址 192.168.1.100目的地址 10.10.10.50。因为目的地址不在本地网段终端会把这个包交给自己的网关也就是 192.168.1.1这个地址是 A 侧设备 LAN 口的地址。包进到 A 侧设备设备看到目的地址是 10.10.10.50命中你的映射规则于是做目的地址转换把目的地址从 10.10.10.50 改写成 192.168.1.50。到这里包的地址变成了源 192.168.1.100、目的 192.168.1.50。接下来是关键一步。设备要查路由表决定这个包从哪个接口发出去但 192.168.1.0/24 在它自己身上是 LAN 口的直连网段按最长匹配规则它会把包往 LAN 口发也就是原路退回去。这就是单做目的转换必然出现的问题包在设备内部打了个转又回来了。所以还必须同时做源地址转换把源地址 192.168.1.100 改写成互联口的地址 192.168.99.1。改写完成后包的地址是源 192.168.99.1、目的 192.168.1.50。此时设备如果还走直连路由依然会把包往 LAN 口送因为目的地址还是落在 192.168.1.0/24 里。真正的解法是在转换规则里绑定出接口或者在设备上配一条策略路由强制把源在 192.168.1.0/24、目的在 10.10.10.0/24的流量扔给互联口下一跳 192.168.99.2。这样一来包才会从互联口发出去跨过那根网线到达 B 侧设备。3.2 只做目的NAT为什么会死循环上面这段其实已经回答了这个问题这里再单独强调一遍因为它太容易踩。很多教程只讲做一条目的地址映射就通了那是建立在源网段和目的网段不重叠的前提上。一旦重叠目的转换之后地址依然落在本地的直连网段里路由表不可能把它送出去包要么被丢弃要么被送回内网形成所谓的路由环路或者直接被设备的防环机制拦下。所以针对冲突网段目的转换和源转换必须成对出现同时出接口必须被显式指定。这三件事是一个整体缺一个都不通。理解了这个你就明白为什么有些场景下明明规则配对了还是不通——多半是出接口那一环没绑好。3.3 转换关系对照表与端口复用把 A 区访问 B 区的转换关系整理成一张表配置的时候照着填排查的时候照着核。环节源地址目的地址动作说明终端发出192.168.1.10010.10.10.50无终端只认虚拟地址设备目的转换192.168.1.100192.168.1.50DNAT虚拟地址还原为真实地址设备源转换192.168.99.1192.168.1.50SNAT换成互联口地址避免回程迷路出接口强制192.168.99.1192.168.1.50策略路由下一跳 192.168.99.2B 侧回包192.168.1.50192.168.99.1无B 侧只需一条到 99 网段的路由设备反向还原192.168.1.5010.10.10.50自动会话表匹配后自动还原终端收到192.168.1.50192.168.1.100无业务层感知不到转换关于端口需要说明一点这种基于地址的转换是一对一或者网段对网段的关系端口号默认不变所以上层业务不用额外考虑端口偏移。但如果你用的是端口映射的方式做应急互通那端口号是会被改写的业务侧就得按改写后的端口去连。两种方式的适用场景不一样后文会单独说。4. 实操在 RG-EG210G-E 上把链路配通理论讲完进入动手环节。下面以 A 侧为主线B 侧做配合配置。文中的菜单名称以设备实际界面为准不同固件版本会有出入思路是一样的。4.1 互联接口与基础三层配置先把物理链路接好。从 A 侧设备挑一个空闲接口用网线接到 B 侧设备的一个空闲接口。接口选哪个要看你的设备面板EG 系列一般会有若干个 LAN 口和一个 WAN 口实际用哪个取决于你要把它配成什么角色。如果打算把它配成三层路由口就在接口配置页面把接口模式改成路由模式然后配上地址。界面操作大致在【网络】→【接口】里找到对应接口配置如下接口名称按实际面板丝印来比如 LAN2 或者 WAN接口模式三层路由口IP 地址192.168.99.1子网掩码255.255.255.0管理状态开启命令行的写法大致是这样具体语法以你设备的实际版本为准interface GigabitEthernet 0/2 description To-B-Site no switchport ip address 192.168.99.1 255.255.255.0 no shutdown配完之后用show interface或者界面上的接口状态看一下确认物理层是 up、协议层也是 up。接口没起来后面所有配置都是白搭。有一个细节很多设备的 LAN 口默认是二层交换模式直接配 IP 会报错必须先切成路由模式这个切换动作在不同版本里的叫法不一样有的叫三层口、有的叫路由口、有的需要先建 VLAN 接口。4.2 静态路由告诉设备虚拟网段往哪走互联口配好之后在 A 侧设备上加静态路由。这里要注意加的不是去往 192.168.1.0/24 的路由而是去往虚拟网段 10.10.10.0/24 的路由下一跳指向 B 侧的互联口地址 192.168.99.2。界面路径大致在【网络】→【路由】→【静态路由】字段填法字段取值目的网络10.10.10.0子网掩码255.255.255.0下一跳192.168.99.2出接口互联口建议同时指定优先级/度量值默认即可除非有多条冗余路径命令行写法ip route 10.10.10.0 255.255.255.0 192.168.99.2注意如果设备支持同时指定出接口和下一跳请两个都填。只填下一跳的话设备需要递归查一次路由来确认出接口在多路径场景下容易选错方向。这一步做完可以先用show ip route看一下路由表确认 10.10.10.0/24 这条条目存在下一跳和出接口都正确。路由表里看不到说明配置没生效或者被其他规则覆盖了先别往下走。4.3 目的地址转换规则的填法接下来配目的地址转换把发往虚拟地址的流量还原成真实地址。界面路径一般在【网络】→【NAT】或者【网络】→【地址转换】找到目的地址转换或者地址映射这一类入口。规则的关键字段是这么填的匹配条件里源地址选 A 区的真实网段 192.168.1.0/24目的地址选虚拟网段 10.10.10.0/24入接口选 LAN 口转换动作里把目的地址替换成 192.168.1.0/24 对应的真实地址。如果设备支持整段映射可以配一条10.10.10.0/24 对应 192.168.1.0/24的规则一条顶一百条。如果不支持就按 /32 一条一条来比如序号匹配目的转换后目的用途110.10.10.50192.168.1.50业务服务器210.10.10.60192.168.1.60数据库310.10.10.70192.168.1.70文件服务器单条映射虽然条目多但每条都看得懂后面交接给同事的时候人家一眼就明白。整段映射省事但排查为什么这台连不上的时候你得先绕一圈去确认映射关系。提示部分固件版本的目的地址转换界面会要求你同时指定转换后的下一跳或者出接口这个字段非常关键填成互联口或者 192.168.99.2能省掉后面单独配策略路由的麻烦。如果界面上没有这个字段就得靠 4.4 节的出接口绑定来兜底。4.4 源地址转换与出接口绑定源地址转换这一步目的是让包在离开设备之前把源地址换成互联口地址这样 B 侧的回包才有明确的去向。界面路径在【网络】→【NAT】里的源地址转换入口。字段填法大致是这样匹配条件里源地址选 192.168.1.0/24目的地址选 10.10.10.0/24出接口选互联口转换动作里选转换为出接口地址也就是用 192.168.99.1 做源。命令行方式大致是ip nat inside source list LOCAL_TO_VIRTUAL interface GigabitEthernet 0/2 overload其中LOCAL_TO_VIRTUAL是一条访问控制列表用来圈定哪些流量需要做转换。这里有个容易被忽略的点ACL 一定要写精确只匹配真正需要跨站访问的流量。如果写成permit ip any any那么本地终端访问互联网的流量也可能被这条规则抓去做转换后果轻则上不了网重则整个出口乱套。这个坑我在早期项目里踩过一次排查了整整一个下午。出接口绑定这一环是整套方案能不能通的胜负手。做的方式有两种一种是直接在 NAT 规则里指定出接口另一种是在设备上另配一条策略路由把特定流量强制扔到互联口。第二种方式的策略路由匹配条件要写成源 192.168.1.0/24 且目的 10.10.10.0/24下一跳 192.168.99.2。两种方式选其一就行同时配的话要注意优先级避免规则互相覆盖。4.5 对端设备的配合配置B 侧这边的配置量就小多了因为 A 侧已经把源地址改成了互联口地址B 侧看到的流量源是 192.168.99.1、目的是 192.168.1.50这两个地址都在互联链路网段和 B 侧自己的网段里直接二层转发就行甚至不需要额外的 NAT 规则。需要配的只有一条一条去往 192.168.99.0/24 的回程路由下一跳指向 A 侧互联口地址 192.168.99.1。如果 B 侧设备本身就有 192.168.99.0/24 的直连接口那么这条路由是自动生成的不用手动加。但实际现场经常出现的情况是B 侧的互联接口不在它自己的网关设备上而是挂在了一台交换机的 VLAN 接口上这时候就得手动补一条。ip route 192.168.99.0 255.255.255.0 192.168.99.1如果 B 侧也需要主动访问 A 区那就把 A 侧的配置思路照搬过去在 B 侧做对称的映射和转换虚拟网段用 10.10.20.0/24 对应 A 区的 192.168.1.0/24出接口指向互联口下一跳 192.168.99.1。4.6 用 ping 和 tracert 验收的完整过程配置完之后别急着宣布完工按顺序验证一遍。第一步从 A 侧设备自己 ping 一下 B 侧的互联口地址 192.168.99.2这验证的是物理链路和三层可达性。通了说明底层没问题不通就回去查接口状态和地址配置。第二步从 A 侧终端 ping 虚拟地址 10.10.10.50。这一步能通说明映射规则和路由都生效了。第三步用 tracert 看一下路径tracert 10.10.10.50这里要提前打个预防针tracert 的结果在 NAT 场景下往往不直观。因为中间跳点回 ICMP 超时报文的时候地址已经被改写过了你可能会看到重复的网关地址或者看到一些意料之外的地址。别被这个现象吓到只要最终能到目标、ping 的时延正常、丢包为零路径就是对的。真正要验证路径更靠谱的办法是在 B 侧设备上抓包看源地址或者查一下 A 侧设备的 NAT 会话表看有没有对应的会话条目建立起来。第四步业务验证。拿真实的业务去连比如数据库客户端连一下、Web 页面打开一下、文件传一下。这一步才是真正体现价值的地方ping 通不代表业务通很多时候 ICMP 能通但 TCP 建连失败原因可能是中间有安全策略拦了、或者 MTU 不匹配导致大包被丢弃。5. 现场踩坑记录与排查速查表这一段是整个文章最值钱的部分都是我在实际项目里踩出来的经验文档里一般不会写。5.1 单通能出去回不来现象是从 A 侧能 ping 通 B 侧但 B 侧 ping 不回 A 侧或者反过来。这种情况八成是回程路由缺了。检查两个地方一是 B 侧有没有 192.168.99.0/24 的路由二是 A 侧设备的 NAT 会话表里有没有对应的反向条目。还有一个容易被忽略的情况是B 侧服务器的网关不是 B 侧那台设备而是另一台路由器或者防火墙。这时候 B 侧服务器回包时会交给它自己的网关而那个网关不认识 192.168.99.0/24包就被丢了。解决办法是在那台网关上补一条静态路由把 192.168.99.0/24 指向 B 侧的互通设备。这个场景在现场非常常见因为很多厂区的服务器网关并不在出口网关上而是挂在核心交换机的 VLAN 接口上。5.2 ARP 表混乱与地址冲突报警配置过程中如果设备的日志里出现IP 地址冲突的告警大概率是映射地址和某个已存在的地址撞了。检查方法很简单把虚拟网段里的地址逐个和现网设备对一遍看看有没有重复。另外有些版本的固件在做转换的时候会主动发 ARP 探测如果探测到冲突会拒绝下发规则这时候日志里会有明确提示。还有一种情况是A 侧设备的两个接口配了同一个网段的地址比如 LAN 口配了 192.168.1.1互联口也配了 192.168.1.x。这种情况设备一般会直接拒绝配置但有些版本会允许然后就是无穷无尽的 ARP 表错乱。同一个网段只能配在一个三层接口上这条规则要刻在脑子里。5.3 DHCP 双服务器抢答两边各有一个 DHCP 服务器如果互联链路不小心做成了二层桥接两个 DHCP 就会互相抢答客户端拿到的地址可能是对面发过来的网关也是对面的上网直接就废了。避免的方法很简单互联链路必须是三层路由口不能是二层交换口不能把两个网段桥接到同一个广播域里。如果确实需要二层互联那两边的 DHCP 必须做隔离或者只保留一个。还有一个小概率情况是如果两边网段重叠某些客户端在续租的时候会拿到错误网关表现是上午还好好的下午突然上不了网。这种情况排查起来很费劲建议直接在前面就把互联链路的二层属性确认清楚。5.4 广播类业务失效的真实原因这是地址转换方案的固有短板得提前跟业务方交代清楚。凡是依赖广播或者组播做发现的服务跨三层 NAT 之后基本都用不了包括但不限于Windows 网络邻居的名字发现、打印机自动发现、WS-Discovery、UPnP、部分视频监控的自动发现协议、还有某些工业设备基于广播的心跳。解决办法不是去折腾 NAT而是换发现方式。文件共享直接用 IP 地址或者主机名访问打印机手动添加 IP 端口视频监控把设备地址写死到平台里。这些改动量其实不大但要在项目启动阶段就说清楚别等到业务方投诉了才解释。5.5 排查速查表把常见症状和排查方向整理成一张表现场可以直接对着查。症状可能原因排查动作完全 ping 不通虚拟地址映射规则未生效查 NAT 规则列表确认命中计数是否增加设备自己 ping 得通终端 ping 不通终端网关不对或路由未下发检查终端网关ipconfig /all看实际网关能出去回不来回程路由缺失在 B 侧查 192.168.99.0/24 的路由条目时通时不通出接口未绑定或策略路由冲突查策略路由优先级确认流量走的是哪个口小包通大包不通MTU 不匹配用ping -l逐步加大包长度定位会话建立后自动断开NAT 会话老化时间太短调整会话老化参数或改用持久连接日志报地址冲突虚拟地址与现网重复逐个核对虚拟网段地址占用情况业务页面打开但功能异常涉及多端口或广播发现检查 ALG 设置确认是否依赖端口跳转6. 异地场景两个厂区不在同一栋楼怎么办很多人的场景不是两个车间挨着而是两个厂区隔了几十公里这时候互联链路就不是一根网线的事了。6.1 隧道模式下的地址转换位置异地场景下两端之间通常会走运营商线路然后在两端设备之间建一条三层隧道把两个私网连起来。这时候地址转换的逻辑不变但位置要放对转换规则依然是加在 RG-EG210G-E 这一侧虚拟网段配在本地遮罩的是对端的真实网段。隧道的两端地址则用一对互联地址来承载比如 192.168.99.1 和 192.168.99.2 走隧道口。需要特别注意的是隧道模式下本地的真实网段和虚拟网段都要被纳入隧道的兴趣流里否则包到了隧道口发现不在保护范围内直接就被丢了。配置的时候把虚拟网段也加进去很多教程会漏掉这一条导致配置全对但就是不通。另一端同理需要把本地网段的兴趣流加上否则回包出不去。同网段的冲突在隧道模式下依然存在所以 N 端和 N 端的地址规划必须一边一套虚拟网段不能重复使用同一个虚拟网段号否则两个站点同时映射隧道对面的设备不知道这个虚拟地址是给谁的。我一般是按站点编号来排A 站映射用 10.10.10.0/24B 站映射用 10.10.20.0/24C 站就用 10.10.30.0/24规律清晰扩展方便。6.2 MTU 与会话老化两个容易被忽略的细节隧道封装会给原数据包加上额外的头部等效于减小了可用的 MTU。而 NAT 转换本身不改 MTU所以现场如果用的是隧道模式很可能出现小包通、大包不通的现象。典型的症状就是网页首屏能打开但图片加载不出来或者 SSH 能登录但一执行输出内容多的命令就卡死。处理方式有两个方向一是把隧道口的 MTU 调小一些同时在两端设备上开启 TCP MSS 调整让终端协商出更小的分段大小二是如果设备支持把 TCP MSS clamping 打开由设备在转发的时候主动改写 SYN 包里的 MSS 值。两个方向都行我一般两个都配上双保险。会话老化这个问题更隐蔽。NAT 会话表是有生命周期的默认通常几分钟到几十分钟不等。如果业务里有长时间空闲但需要保持的连接比如数据库连接池、监控平台的常连接、视频流的长连接很可能在空闲一段时间后被老化掉表现就是过一会儿就不通了刷新一下又好了。解决办法是调整会话老化时间把 TCP 的老化时间延长UDP 的单独设置另外确保业务侧有保活机制。这个坑我是在一个监控平台上遇到的摄像头预览每隔十几分钟断一次查了很久才定位到是会话老化。7. 我个人的几点实操体会7.1 文档化把映射关系写成一张表贴墙上做过的这类项目里最影响后期维护的不是配置本身而是没人知道哪台机器的虚拟地址是什么。我的习惯是实施完成后立刻产出一张映射关系对照表包含真实地址、虚拟地址、所属业务、责任人、开通日期打印出来贴在机房同时存一份电子版放进项目文档。后来接手的人照着表就能查不用去翻设备配置。这个动作花不了半小时能省下后面无数次这台机器在对面是什么地址的沟通成本。7.2 长期演进NAT 只是过渡不是终点说句实在话地址转换方案解决的是燃眉之急它本身带着不少妥协广播业务失效、排障变复杂、设备压力增加、日志和监控看到的地址对不上。只要条件允许最终还是要走地址重新规划这条路把两边网段改成互不重叠的然后在核心层做真正的三层互通。具体做法可以先在新采购的设备上开始用新网段逐步把服务器迁移过去等关键业务迁完再把旧的映射规则一条条撤掉。这个过程可能要持续几个月甚至一年但方向是对的早点规划后面的网络会越来越清爽。最后分享一个我在这个项目里一直用的验证小技巧配完之后别只在终端上 ping直接在 A 侧和 B 侧同时抓包对着看源地址和目的地址在每一跳的变换。抓包看到的东西比任何猜测都准确能省下一大半的排查时间。这也是我从多次配置看起来全对但就是不通的经历里总结出来的——设备从来不会撒谎撒谎的永远是我们的假设。
返回列表