CDN原理

我们先来看一下正常上网的拓补图
1
图中是一个正常的网站请求,这个应该不难理解
但不知道你有没有注意到一个问题,如果这个网站是一个被架设在大洋彼岸的网站,那么网站的内容要想从地球的另一端来到你的电脑,得有多费劲?
所以聪明的人类就发明出了一种十分暴力但却有效的方法来解决这一世纪难题,也就是将网站的内容先缓存到一台离你的电脑比较近的服务器上存起来,等你要用的时候直接调用这台服务器上的内容就行。而这种技术,就被叫做CDN存储技术(Content Delivery Network)
这样的方法看着简单,但却十分有效。不过也有一个致命硬伤,就是你没法保证你所访问内容的时效性。因为听名字就知道,缓存,就是暂时存储的意思,那就必然会有时间差的存在。而这个时间差的大小也就取决于网站管理者,不过一般来说这个时间差和网站访问速度是成反比的

不过对于科学上网而言,内容储存并不是我们关注的重点。重点是CDN服务所提供的域名。对于一个可以高速裸奔的科学上网的节点,其最大的痛处想必就是稳定性没法得到保证。因此,想办法提升稳定性就变成了非安全节点的关键。而一个节点之所以会被长城防火墙干趴,本质上就是节点ip或域名被拉了黑名单。
而CDN的存在就误打误撞地解决了这个问题。
2
当防火墙在探测你的节点ip时,碰到的确实CDN的域名。而CDN本身只起到了挡箭牌的作用,就算一个CDN域名被拉黑了,再把你的节点服务器重新再部署一个就行了。而且整个过程都是免费的(如使用cloudlare),这对科学上网来说简直就算一大神器。

但CDN也不是完全没有缺点。CDN确实能够保障你的节点安全,但速度却大打折扣。从上面的原理图里应该可以看出CDN服务器其实本身就是一个挂在墙外的东西,即便你的节点本身速度够快,但被CDN这么一折腾,也还是会有很大程度上的降速。因此,给你的节点套CDN作为一个备选方案,才算是一个不错的选择

ARP欺骗

ARP(Address Resolution Protocol),中文解释为地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。

ARP大致工作流程如下:
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。
收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存(重点来了,我们要利用的就是这个点!)
攻击者可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
那么 我们如何利用ARP协议来进行断网攻击呢?大致思路如下:
首先,ARP是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷:
ARP地址转换表(ARP缓存)是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。这就是所谓的APR欺骗攻击。
ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患,这里我们是使目标主机通信失败,之后的教程会介绍重定向的方法。
ARP攻击大致流程如下:

第一步:假设主机A访问某网站,那么要告知某网站我的IP和MAC地址,但这是以广播的方式告知的。
第二步,由于是广播方式告知,猥琐的B主机也知道了A的IP和Mac地址,于是猥琐的B主机把自己伪装成某网站,给A发送回复,A误以为B就是某网站,因此更新了自己本机的ARP缓存。
第三步,两者建立连接,A不断将自己的请求发给B,可怜的某网站被挂在一遍了。如果B转发A的请求给某网站,再转发给A,那相当于A的流量都从B经过,这就是步骤4,因此可以会话劫持;如果B给A的是一个假地址,那么可怜的A永远上不了网了。