红茶三杯的原文 :【有点儿意思系列 02】哎哟喂停不下来了 ,看完原文描述,我想到的是用 NAT 转换目的地址的方式解决,经过实验验证后,也说明了这个方法是可行的。做完实验后又想还有没有其他方法实现呢,想到用霸道的 PBR ,也能实现,不过这个方法我个人觉得比较傻。
背景描述:
- R1、R2为两台出口路由器,分别连接电信及网通的广域网出口线路;
- R1、R2、SW1、SW2运行OSPF,R1配置指向网通的静态路由并部署静态路由到OSPF的路由重发布,R2则向OSPF域发布缺省路由。换而言之,内网访问网通的流量缺省走R1,而访问其他Internet资源的流量走R2出去;
- 内网有两种服务器:一是向网通公网用户提供服务的服务器,以及向电信公网用户提供服务的服务器。为了使得这两台服务器能够被外网访问,在R1上将网通服务器映射到网通公网地址220.12.15.x/27,而在R2上把电信服务器映射到电信公网地址202.112.12.x/24。
- 完成上述部署后,网通的公网用户使用目的地址220.12.15.x可以访问网通服务器,电信外网用户通过202.112.12.x可以访问电信服务器。但是电信外网用户使用220.12.15.x地址却无法正常访问网通服务器。请分析原因,并提出解决方案。
Solution
Part 1
详细的配置我就不贴文中了,可到文章末尾链接自取。
先说明一下拓扑在中的设备:CNC_User 和 Telecom_User 是用 PNETLab 的 Docker Chrome Node 设备(打开界面是是一个 Chrome 浏览器,用命令行登陆发现是个 Linux 系统),内网服务器用的是 Docker Apache (命令行登后发现是 Linux 系统,开启了 Apache 服务)。本次实验模拟外网客户端访问内网映射到公网的 HTTP 服务。
首先,日常配置 VLAN、VRRP、OSPF、NAT……
一顿操作后,实现上面提到的 1 - 3 的需求及 4 中的前半部分需求。电信外网用户使用220.12.15.x地址却无法正常访问网通服务器。原因在于电信用户访问220.12.15.x地址来回路径不一致导致 TCP 会话超时(拓扑中模拟访问 HTTP),解决方案就是使来回路径一致(皮)。
Part 2
没有添加配置前,查看 Telecom_User 访问网通服务器 的情况。
从图中可以看出 Telecom_User (202.112.13.2)电信用户向网通服务器映射地址(220.12.15.1)发出目的端口为 80 的 TCP 的数据包,而 R2 上电信的公网 IP (202.112.12.1)回应了 TCP ,证实了前面提到的 来回路径不一致(其实从内网路由表也可看出),后面数据包逐渐黑化了。
在 R1 上添加公网访问网通服务器的目的地址 NAT 转换配置
1 | ! -- R1 配置 |
配置完成测试结果如下:
电信外网用户使用220.12.15.x地址正常访问网通服务器。
查看 R1 NAT 映射表,有目的地址 NAT 转换,注意观察 Outside local 和 Outside global
原理就是让 网通服务器 回程的数据包从 R1 出去。在 R1 上配置目的地址 NAT 转换。这时从网通服务上看就是源地址为 172.16.1.100 - 172.16.1.110 的地址访问的自身,回包也就回这个地址段。待回包至 R1 ,查找路由表发现 172.16.1.0 网段下一跳地址是 220.12.15.2 (手动配置的静态路由),触发 NAT 转换(此处查找 NAT 映射表项),源地址转成 R1 网通公网 IP地址回包最终至电信用户。此处配置的 172.16.1.0 网段静态路由是触发 NAT 转换,如果不配置,R1 就把网通服务器发过来的数据包丢弃了。
普及一下 NAT 执行的顺序,查看思科官网(NAT Order of Operation)
Part 3
Part 2 中使用 目的地址 NAT 转换的手段使得来回路径一致,那有什么办法能使网通服务器回包强制从 R1 的公网 IP 地址端口出去呢?— PBR。从 SW1 上就开始把网通服务器回包路径扭到 R1 上,R1 再把数据强行从公网接口丢出去。
清除 Part 2 增加的配置,SW1、R1 添加如下配置:
1 | ! -- SW1 配置 |
1 | ! -- R1 配置 |
配置完成测试结果如下:
电信外网用户使用220.12.15.x地址正常访问网通服务器。
查看 R1 NAT 映射表,没有目的地址 NAT 转换,但是触发了正常流量上网的 PAT,注意观察 Outside local 和 Outside global
Ending
- 原文后边加两台防火墙的测试我就不做了(古董 AMD 台式机跑不起 ASAv),大概的考察点还是 数据包来回路径一致的问题
- 文中可能有些配置未提及或内容术语表述的不规范,请见谅。
- 配置存阿里云盘了,这是链接:[分享的文件]
- 欢迎“
来电”来函探讨。