一切都要从那只万恶的蝙蝠/穿山甲/果子狸说起……
车轱辘话,划掉。
早在十几年前,远程办公的概念就已经兴起,而直到最近,席卷半个地球的公共卫生危机才让远程办公真正火了一把。
华山派期望内部弟子们在家修行时也可以连接到内部网络,但内部网络和弟子们家中网络之间隔着互联网,实现远程办公需要解决两个问题:
- 用户如何用公司内网地址,跨越互联网和公司网络互通?
- 怎么样保证中间的流量是安全的,不被监听?
当岳不群向令狐冲提出这两个问题的时候,一边的林平之立即插嘴:“师傅,我来解决!”
岳不群本来不信任林平之,但林平之平时经常歌颂师娘的优美感,师娘发话了:“这一次,就让小林子试试看吧!”
林平之得到信任,开始动手指定方案——
由于华山派在全球各地开设了多个分舵,华山派总舵出口防火墙早就具备了IPSec功能,通过加密隧道与分舵互通。
林平之想,我们把每个弟子家都当做一个分舵,通过IPSec的方式和总部连接,不就行了吗?
与林平之交好的劳德诺第一个跳出来嘲笑林平之了:
“你要知道,弟子家中的路由器一般都是TP-Link的百元机,如何做到支持IPSec?”
林平之翻了翻白眼,道:
“我华山派可以将支持IPSec的设备借给弟子远程使用……”
劳德诺不再插话,等着看林平之笑话。
果然,林平之的方案在部分弟子家里可以正常工作,但另外一些弟子则完全无法建立IPSec连接……
这是因为,运营商为企业用户提供的是有效的全球单播IP地址 (Global Unicast Address),但对于家庭宽带用户,并没有义务提供全球单播地址。在实践中,运营商会通过CGN (Carriger Grade NAT)的方式,为用户提供100.64.0.0-100.127.255.255的网段,经过NAT转换后进入公网。
好,到这里,我们知道原因了——
IPSec既不是基于UDP的,也不是基于TCP的,它需要IP端到端的连通性,任何NAT的存在,都有可能导致IPSec不可用,或需要在NAT设备上进行非常特殊的配置。显然,CGN设备不可能支持IPSec穿越——因此,IPSec方案对于远程办公是不可行的。
让我们梳理一遍以上的逻辑,我们会发现,IPSec无法用于远程办公的本质原因是,个人用户无法保证拥有公网的全球单播IP地址。那么,什么样的通信方式可以满足以下的需求:
- 一端无需拥有全球单播IP地址;
- 通信是安全的,有认证/鉴权/加密功能;
答案就呼之欲出了——使用SSL/HTTPS。
这就是SSL VPN。
前面,我们已经提到了,LB设备具备SSL连接终结能力,也就是说,它可以实现SSL/HTTPS的加解密/认证/鉴权,那么,只需要对LB设备做一些修改,就能造出支持SSL/HTTPS的VPN设备!
说时迟,那时快,令狐冲已经拿着改造好的SSL VPN设备进行测试了,测试组网如下:
如图,数据中心服务器的地址是10.100.100.10,SSL VPN用户接入公司网络后,分配到的地址是10.100.200.100。
用户访问内网VM的流:10.100.200.100:31233->10.100.100.10:443
被封装在从用户到VPN网关的VPN隧道中穿越Internet。
由于从用户到VPN网关隧道之间经过了2次NAT,隧道的源IP和源端口做了两次转换(192.168.1.101:13763转换为100.64.123.213:12580; 100.64.123.213:12580转换为123.118.108.217:51167),但由于NAT的机制保证了基于HTTPS的隧道能够正常工作。
这样,无论用户从何处接入,SSL VPN都可以保证远程的安全访问啦!
但,令狐冲没有想到,更多的挑战还在后面……