15年毕业,就莫名其妙做了运维,也成为了阿里最后一批业务运维(pe)。刚开始做运维的时候由于基础知识太差,很多事情做了就做了,但也不理解为什么那么做了,知道后来跳出运维的圈子,自己做了开发,思路、见识、视野渐渐开阔之后也就慢慢明白了之前好多不懂的东西,想着想着也觉得比较有意思,这里记录下。
在阿里干过运维的人都只知道阿里有七网隔离,具体是哪七网我也记不全了,大概就是办公网、生产网、公网、阿里云、蚂蚁金服……,隔离也就意味着这些网络之间是无法直接访问的。当时做运维的时候没有经过任何系统的培训,摸着黑干活,好多事只有遇到了才能接触到,说实话我也是干了好久才看到七网隔离的。为什么要做七网隔离,最主要一点就是网络安全,不把所有鸡蛋放一个篮子里,即便黑客入侵了其中一个网络,剩下的其他网络也是安全的。除了生产隔离之外,我觉得七网隔离也带来一些其他的好处,比如业务系统的强制解耦,更安全的发布规范………
但七网隔离也有有些不便的地方,比如我们经常要在各个网络间就跳转,最常见就是从办公网进入生产网,公司为我们提供了跳板机,相当于开了一扇从办公网进入生产网的门。再比如,我们有些应用可能需要从外网去获取有些资源,服务器默认都是不能连外网的,这就悲剧了,之前好多应用做迁移的时候,换到新服务器上,结果就不能正常运行了。最开始做应用迁移的时候我也不知道,出问题了才有人告诉我有这个坑。
解决方案就是到我们一个系统上去提交安全外联申请,然后主管审批+安全部门同事审批后就可以连到公网了。我开始做运维的时候这些都已经变成一个走流程的事了,提个单子,点吧点吧就好了,当时也不理解点几下按钮的背后到底发生了什么,直到后来有一次有个同事让我查一个网络问题,大概是他的应用需要从互联网下载一个jar包,但是一直下不下来,我居然当时没意识到这是受七网隔离的限制,但最后让我发现了网络隔离的秘密。
当时知道肯定是网络的问题,但也不知道怎么查,还有有台正常的机器可以对比,;然后google+百度找方法,两台机器做对比,最后终于让我发现两者的差别了。 在服务器上执行route
这个命令可以看到本机的静态路由表,大概如下
数据表在网络中传输起始就是依靠一张张路由表来找到路的,比如在上图中,去往100.64.0.0子网掩码是255.192.0.0网络请求就可以通过10.45.71.247这台gateway跳转出去,这里没有具体配置的网段都可以通过default 47.88.191.247这台gateway跳转出去。
就好比在猎户座B1024星系,有好多个联邦(网络,比如一个局域网),每个联邦都有一个联邦编号(子网掩码),每个联邦由很多个国家(服务器),每个国家都有一个32位的二进制编号(ip地址),一个 国家的人(数据包)想去另一个国家,就必须通过某个港口(港口)出去,可能特定联邦某个国家必须走一个特定的港口,或者直接走一个通用的港口(default),这些联邦和港口之间对应的关系写在本国法律里(路由表),如果某个联邦要闭关锁国,联邦就会要求自己所有的国家关闭通用港(default路由),只开特定的港口,这这个联邦就和其他联邦隔离了。
通过上面这个例子,很明显不能访问公网的机器路由表都没有default这一条。服务器刷系统的时候,都默认不刷default路由,只刷特定几个特定网段的路由表,七网隔离是这么实现了。不过有root权限的我啥搞不定啊(偷笑),route add default gw *.*.*.*
就搞定,于是当时我也是这么解决的。
虽然我是发现了这个“秘密”,但是也不敢怎么用,因为到时候出了网络安全的问题,背锅的还是自己,况且后来逐渐引导研发自己去提安全外联申请,逐渐也就没我什么事了。
回过头来想想,凡事皆有利弊,只要利大于弊就值得去做。别看限制网络连接是一个非常简单的事,但也是非常有效且低成本的网络安全防护措施。减少网络出入口,也就大大减少了出现安全漏洞的可能性。自己在搭设云服务的时候可以考虑下只开放必要的流量出入口,像有些比较成熟的云厂商(比如阿里云)其实已经提供了服务器安全策略的配置,假如云厂商未提供相关配置,可以考虑自行用iptables配置一些安全策略,有备无患。