让我们回到华山,再看一看令狐冲和小师妹的幸福生活。
我们在《网络设备硬核技术内幕 交换机篇 8 还是选择原谅她》中提到,令狐冲设定了ACL,只允许小师妹和自己通信,禁止门派内其他人和小师妹通信,于是,两个人过上了没羞没臊幸福的生活。
然而,实际上并没有这么简单——
由于令狐冲对小师妹做了严格的ACL访问限制,小师妹无法对外发起任何访问,连主动向本门派其他弟子学习武功也无法实现。令狐冲的这种做法引来了微博上女权大V们的口诛笔伐,认为令狐冲是武侠PUA,对小师妹实施精神控制,要求岳不群将令狐冲逐出师门。
岳不群和师娘宁中则约谈了令狐冲,要求令狐冲限期三天完成三件事情:
- 立即整改交换机,使得小师妹岳灵珊可以主动对外发起连接,只是屏蔽其他人对小师妹主动发起的连接骚扰;
- 在微博上公开向女权大V们致歉;
- 写一万字的论文歌颂岳不群的崇高感和宁中则的优美感,并向高影响因子的期刊投稿;
若三天内完不成,则不许再和小师妹见面。
令狐冲不敢违抗,只好回到实验室钻研交换机……
原来,在交换机和路由器上增加ACL功能以后,它们就具备了简单的包过滤防火墙的功能。
如图,如果在交换机上配置了ACL,禁止源地址是A,目的地址是B的数据包,那么,A到B的流量将被丢弃,而B到A的流量可以放行。
但是,对于B向A发起TCP或UDP连接的情况,由于A的回应都被ACL丢弃,因此,A和B是无法正常通信的。
令狐冲的任务就是,需要让B向A发起TCP或UDP连接后,A能够在原有的防火墙上打个洞,让回应B的数据包能够被B接收。
令狐冲挽起袖子,找了台服务器,安装上CentOS,把两个网卡,一头连接到小师妹的计算机,另一头连接到交换机上。一番操作以后,神奇的事情发生了:小师妹可以对外发起连接,而其他人对小师妹发起的连接都显示“连接超时”。
令狐冲对CentOS做了什么?
秘密在于,CentOS7版本带有的firewall功能,可以针对出站和入站方向实现状态检测防火墙。
什么是状态检测防火墙呢?
如图,我们在状态检测防火墙上配置允许B向A发起连接,但拒绝A向B发起连接。这种情况下,从A到B的所有数据包都会被丢弃。
此时,B向A发起了一个TCP连接:
A收到TCP SYN后,回应了SYN-ACK包:
这时,TCP连接通过三次握手建立,A和B就可以通信了。
类似地,TCP的四次挥手拆除连接后,所有A向B发送的数据包,又会被防火墙拦截了。
把B换成小师妹,A换成其他弟子,就是令狐冲通过配置Linux Firewall实现的功能,实现了小师妹可以主动访问其他弟子。
完成了师傅和师娘交代的第一件事,令狐冲立即在微博上向女权大V们公开道歉。
但是,第三件事情如何实现呢?
令狐冲眉头一皱,想好了标题:《基于导师的崇高感和师娘的优美感实现的防火墙性能优化》。
具体内容如何,请看下回分解——