【开荒】本地转发跨三层漫游的作死解决方案
  

俺是大逗逼 4591

{{ttag.title}}
前言
前几天接手了一个令人非常尴尬的项目,整体情况突出一个麻烦,处理方式也是典型的作死。不过,勉勉强强的能满足所有功能。
先说环境,由于预算问题!
1.客户从运营商购买了10条百兆固定ip的专线,全部接入到中心机房
2.交换机大部分不可网管。
3.预算因素,导致客户无法购买负载均衡 或者高端网关设备。
4.无线信号要覆盖整个厂区,而且速度要达到千兆。
5.全厂区都要用同一个ssid。
6.唯一一个好消息,常规认证方式。
在思考实施方案的时候,先思考需求和原理。最终定下一个作死的解决方案。

按照惯例,先搞原理
整个需求中,最麻烦的其实是第5条,要覆盖全场而且用一个ssid,这种情况下,必然涉及了三层漫游。这个问题的核心点是,dhcp的工作原理导致。
999.png
常规情况下,在经过dhcp的Discover,Offer,Request,Ack 的四个步骤,其中Ack中的option51 中指定了 dhcp的租期,如上图,在正常情况下,一个终端设备在通过dhcp获取了一个ip以后,只要网口灯不灭,或者无线信号不断,终端的ip将一直保持为dhcp获取的ip,直到租期结束。在无线中,只要ssid不更换,就会被认为是信号不中断,ip会一直延续。
888.png
一个经典的三层漫游问题就如同上图,本地转发中,一终端连接到左边的ap,并且通过dhcp获取到10.0.0.2/24/1 的地址,然后终端漫游到右边的ap后,由于ssid不变,导致dhcp获取的ip会继续被沿用,而此时,IP就已经无法正常上网了。解决方法是重新dhcp一次(断开重连最简单了)

找死大作战
在本次的实施环境中,由于客户有多个外网线路,根据经验(反正,要相信经验的力量),设计出了如下的部署方案
666.png
这里为了方便,只画了3个外网。首先,互联网的十个外网接入网络之后先经过10个路由器,这个时候 要注意lan口的配置,首先 要配置合适的较大的地址段,然后 在这个地址段中选取其中的一小部分ip预留为dhcp池。
交换机为傻瓜二层,在最右边的路由器中,把wac映射出去,然后其他9个互联网的ap通过公网连接到wac,获取配置,而且务必使用本地转发。
一个移动终端接入左边的ap以后 会获取10.0.1.1/16/0.1 的ip,此移动终端漫游到中间的ap以后,ip不变,由于是16掩码,所以,基础网络这一部分还是没有问题的,然后继续漫游到最右边,ip依旧不变,网络仍然无问题。
而且 由于每个网络的dhcp范围相互隔离而且互不冲突,也不会造成ip地址冲突的问题。

思考
单从三层的角度而言,整个的解决方案似乎天衣无缝。然而到了tcp,就有问题了,tcp是面向连接的协议,在传输数据前,需要先建立链接,而终端从左漫游到右边的时候,由于是不同的互联网出口,所以snat无法把地址转换为固定地址。这样势必会中断tcp(5元组中的源ip发生变化)连接。
更重要的一点,网络切换时,对于终端设备而言是感知不到网络切换的,tcp会超时重传直到重传失败才会中断连接,然后重新建立tcp连接。而这个时间会持续近1分钟(30-180秒,看配置情况),尤其是终端处于两类ap中间的位置,搞不好就会来回切换ap。
还有一个问题,重新建立的tcp连接对于高层应用来说是全新的连接,这个时候,以源ip做会话保持的用户登录信息一定会丢失。好在,主流的网站或者软件,都使用了cookie 或者session或者系统id来做会话保持(这也就是为什么手机端软件随意切换网络,也不会要求重新登陆),所以,实质影响不大。

写在最后
这种方案在设计的时候务必注意,风险很大,而且由于切换的时候会话中断的问题会很难处理。要尽量避免来回切换ap,非常考验工勘能力。除非必要,请不要使用此解决方案。
另外,想借助这类方案,阐述一下,本地转发跨三层异常的原因。顺便从网络层对三层ip做一次探讨,顺带提了一小点的dhcp工作特点。

打赏鼓励作者,期待更多好文!

打赏
3人已打赏

li 发表于 2017-10-26 10:51
  
来学习了
Luca 发表于 2018-1-31 09:24
  
解释了以前不太了解也没去深究的一些问题
新手779781 发表于 2018-3-8 16:09
  
网络中没有交叉部分,等于10个独立的网络,怎么做漫游呀
ie5000 发表于 2018-12-25 09:26
  
感谢分享
蓝海 发表于 2019-1-30 14:39
  
感谢分享!!!!!!!!
会飞的癞蛤蟆 发表于 2019-2-15 08:16
  
厉害!!!!!!!!!
会飞的癞蛤蟆 发表于 2019-2-27 08:24
  
谢谢分享
秋水伊人 发表于 2019-3-16 20:54
  
好资料,学习一下!
feeling 发表于 2019-3-17 15:16
  
学习一下!
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
每周精选
技术笔记
干货满满
技术咨询
新版本体验
信服课堂视频
标准化排查
产品连连看
安装部署配置
功能体验
自助服务平台操作指引
秒懂零信任
GIF动图学习
2023技术争霸赛专题
通用技术
技术晨报
社区帮助指南
安全攻防
每日一记
玩转零信任
天逸直播
华北区交付直播
深信服技术支持平台
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV

本版达人

adds

本周建议达人

无极剑圣

本周分享达人

新手25642...

本周提问达人