论圈内论坛/社区封禁IP的不可行性
前段时间看到一些站点目前仍是用IP封禁的方法来辅助封禁用户,我个人觉得不是很可行,因此有了这篇文章。
封禁IP地址这一习惯的起源
IP(Internet Protocal)地址是用来标识一个实体在互联网中位置的一串标识,目前最为普遍使用的是IPv4,也即版本4,由32位二进制组成,可写为w.x.y.z的形式,w,x,y,z都为不超过255的十进制数字,为方便阅读,下文我们统一简称IPv4为IP;另一个正在普及的是IPv6,相较于IPv4,它增加了许多先进的特性,更重要的是大幅扩大了地址空间的范围(128位二进制)。
互联网在中国刚普及之时,大家上网的媒介主要是电脑,通过ADSL拨号上网,可在Modem后接无线路由器实现全家多台设备同时访问网络。由于接入互联网的家庭数量较少,因此每个家庭都可以获得一个IP地址,家庭内的所有设备都使用这个IP地址访问网络,甚至许多地方获得的是静态IP(常年保持不变)。在这种情况下,可以简单地使用IP地址在一段时间内去“识别”一户家庭。
鉴于一户一IP、部分用户是静态IP这一情况,许多的论坛、社区开始以封禁IP地址作为手段去封禁对应用户。如:“在十天内,禁止该用户及该用户所使用的IP地址访问本站”、“禁止三十天内新注册用户数超过2的IP地址再次注册本站”,更有甚者,会直接永久封禁对应IP地址访问站点。
为何封禁IP的手段不再可行
之一:CGNAT的出现
随着互联网用户的增多,中国可分配的IP地址数量已不足以同时给每户人家一个独一无二的IP地址。自2013年起,国内运营商已大规模部署了CGNAT(Carrier-Grade NAT)设备,简单来讲,由每户一个独立的IP地址变为了多户共用一个IP地址。据我所了解到的内容,江苏移动目前是20-32户共享一个IP地址。
这也意味着,封禁一个用户的IP地址会同时造成其他正常的用户无法访问站点。同时,CGNAT并不会将某个用户始终映射到某一个IP地址上,因此,只需过段时间/重新拨号,便可以绕开基于IP地址的限制。
之二:静态IP逐渐变为动态IP
近些年来,对于具有公网IP的家庭用户,国内运营商使用动态IP逐渐替代了静态IP。绝大多数具有独立公网IP的用户的IP地址会隔段时间刷新一次。大部分地区是7天一刷新,也有小部分地区14天一刷新。
这使得依据IP地址封禁用户成为了吃力不讨好的事情,不仅无法阻挡恶意用户,反而会干扰到正常用户的访问。
之三:IPv6的普及
由于IPv4地址的枯竭,国家大力推进了IPv6的普及。IPv6共有128位的地址空间,其中分为前缀+子网ID+接口ID,每个接入的用户都会获得56~64大小的前缀(视不同地区的运营商而定),前缀之后的地址便由用户/设备自主设定。
若访问者是IPv6地址,该如何设定封禁界限呢?是封禁128位的地址?这样用户甚至只需要刷新一下网络接口即可获得新的接口ID,绕过封禁;是封禁前缀?那封56位前缀还是64位还是其他长度呢?封的少了可能只是封了用户自己的子网ID,用户改一下子网ID即可,封的多了那多封一位可是多少用户被误伤?
更何况,IPv6地址也是动态的,重新拨号后,会获得一个新的IPv6地址。
之四:手机取代电脑成为最常用的上网工具
目前手机成为了大家上网最常用的工具,如我运营的站点有70%的用户使用手机进行访问。手机通过基站上网,访问站点所使用的IP也与许多人共享,大多为对应运营商分配给移动通信的IP地址,或部分地区是漫游回归属地。
这又该如何封禁呢?
之五:圈内站点与社区逐渐转移到外网
自“曼陀事件”之后,国内的小圈社区网站纷纷停止运营。目前可访问的站点多数位于国外地区,用户常常是自备梯子访问这些站点,而站点看到的用户IP则多为梯子的IP。如此一来,依据IP地址封禁用户也成了不可能的事情。