Help:Range blocks/zh


 * 有关 IPv6 范围封禁的信息，请参考 /IPv6. 

范围封禁是施加于一组 IP 地址之上的技术限制手段，它通过 Special:Block 页面实施，以阻止他们编辑、创建新帐号、通过维基界面发送邮件等等. 如果你选中了阻止登录用户使用这些 IP 地址编辑的复选框，那么当注册帐号使用被封禁范围内的 IP 地址连接时，他们也将不能编辑.

范围封禁在所有的 Wikimedia 维基中都是启用的. 如果它没有在你的维基上启用，在  中加上“ ”即可启用它（在 MediaWiki 1.18.0 及更高版本中已永久启用）.

要通过 Special:Block 页面封禁一个 IP 范围，输入范围内的首个 IP 地址，加一个正斜线，最后再加一个无类别域间路由（CIDR）后缀. '''你应避免执行范围封禁，除非你明白你正在干什么. 否则，你最终可能会封禁上万甚至数百万无辜的人！'''

'''这篇文章主要讨论 IPv4；IPv6 与之类似，但又有所不同——参考 /IPv6. '''

非技术性解释
IP 地址被划分为若干组数字. 比如：从 148.20.57.0 至 148.20.57.255. 一旦达到 255，下一个数字就是 148.20.58.0.

IP 地址可被分为或小或大的分块. 最小的有实际意义的分块大小是 4. 它可能是下面中的一个：


 * 148.20.57.0 - 148.20.57.3，或者
 * 148.20.57.4 - 148.20.57.7，或者
 * 148.20.57.8 - 148.20.57.11，等等.

在每一块的 4 个数字中，只有两个可以被分配给计算机. 任何一块的第一个和最后一个数字都被保留给网络通讯使用. 这些都是 30 级分块，它们可以这样表示：


 * 148.20.57.0/30</tt>，或者
 * 148.20.57.4/30</tt>，或者
 * 148.20.57.8/30</tt>，等等.

下一个较大的分块大小是 8. 它们是：


 * 148.20.57.0 - 148.20.57.7</tt>，或者
 * 148.20.57.8 - 148.20.57.15</tt>，或者
 * 148.20.57.16 - 148.20.57.23</tt>，等等.

类似地，在这一块的 8 个数字中只有 6 个可被分配给计算机，因为第一个和最后一个数字在网络通讯中有特殊用途. 它们可被这样表示：


 * 148.20.57.0/29</tt>，或者
 * 148.20.57.8/29</tt>，或者
 * 148.20.57.16/29</tt>，等等.

依此类推，分块中的 IP 地址数量持续倍增：16，32，64，128，256，等等.


 * 某个大小为 16 的块可能开始于 148.20.57.0/28</tt>.
 * 某个大小为 32 的块可能开始于 148.20.57.0/27</tt>.
 * 某个大小为 64 的块可能开始于 148.20.57.0/26</tt>.
 * 某个大小为 128 的块可能开始于 148.20.57.0/25</tt>.
 * 某个大小为 256 的块可能开始于 148.20.57.0/24</tt>.

那么，如果你有一个 IP 地址，并且你想封禁指定的范围，你如何知道应该用哪一个呢？假设你认为 148.20.57.34</tt> 是有问题的. 你可以在 http://arin.net/whois/?queryinput=148.20.57.34 查询是谁拥有这个 IP 地址. 假设它告诉我们：这个 IP 地址与许多位于 /17</tt> 范围内的其它 IP 地址被分配给了国防部. 我们当然不想封禁一大片来自国防部的 IP 地址！经验上是封禁的越少越好. 如果有一串 IP 地址导致问题，那么就应该只封禁一个范围.

针对这个问题，有一个很有用的计算器：http://www.csgnetwork.com/ipinfocalc.html. 访问这个网站并在首个空白处输入. 然后选择“网络前缀长度（Network Prefix Length）”并输入 （这表示含有 32 个地址的块），单击“计算网络信息（Calculate Network Information）”，我们就得到了一块含有 32 个 IP 地址、且包括 <tt>148.20.57.34</tt> 的块. （第一个——网络地址——和最后一个——广播地址——以及范围内的可用地址都会显示出来. ）在执行封禁操作之前，你可以用这个工具测试你想要封禁的范围，以确保无误.

技术性解释
CIDR 表示法由 IP 地址，一个斜线，以及 CIDR 后缀够构成（例如，IPv4“<tt>10.2.3.41/24</tt>”或 IPv6“<tt>a3:bc00::/24</tt>”）. CIDR 后缀的含义是一个“起始二进制位数”，对于范围内的所有 IP 地址来说，这些二进制位上的值都相同.

例如：“<tt>10.10.1.32</tt>”二进制为“<tt>00001010.00001010.00000001.00100000</tt>”，因此 <tt>10.10.1.32/27</tt> 将匹配起始的 27 位（“<tt> 00001010. 00001010 . 00000001 . 001 00000</tt>”）. 对于 <tt>10.10.1.32</tt>–<tt>10.10.1.63</tt> 之间的 IP 地址来说，当转换到二进制之后，都具有相同的 27 个起始位. 因此，如果 <tt>10.10.1.32/27</tt> 被封禁，那么它们都将被封禁.

随着 CIDR 后缀数值的增大，分块所影响的 IP 地址数量将会减少（参见示例范围表格）. CIDR 后缀在 IPv4 地址中和 IPv6 地址中有所不同；同一个 CIDR 后缀在 IPv6 中封禁的地址数量将是 IPv4 中的 296=79,228,162,514,264,337,593,543,950,336 倍.

计算 CIDR 后缀
你可以参考下面的示例范围表格来猜测范围，或者使用一个计算机脚本，或者手工计算范围.

转换到二进制
手工计算范围的第一步是将第一个和最后一个 IP 地址转换为二进制表示的. （脚本可能会帮你计算范围，但此处假设你不使用脚本. ）一个 IP 地址是由四组八位二进制数（0 或 1）构成的. 每组都代表一个 0 至 255 之间的数字. 要将一个数字转换为二进制，你可以使用一张参考表，或者，你知道每个二进制位的值：


 * <tt>二进制位： 1   1   1   1   1   1   1   1</tt>
 * <tt>值：     128  64  32  16   8   4   2   1</tt>

按照从左至右的顺序，如果数字不小于对应的值，则填入 <tt>1</tt>，然后减去对应的值（否则就填入 <tt>0</tt> 而且不用做减法）. 例如，要计算 240： 因此，240 就是 <tt>1111 0000</tt>，因为它可以被表示为 128+64+32+16+0+0+0+0.
 * 1) 240 不小于 128，所以记 <tt>1</tt> 然后减去 128.
 * 2) 112 (240-128) 不小于 64，所以记 <tt>1</tt> 然后减去 64.
 * 3) 48 (112-64) 不小于 32，所以记 <tt>1</tt> 然后减去 32.
 * 4) 16 (48-32) 不小于 16，所以记 <tt>1</tt> 然后减去 16.
 * 5) 剩余的值是 0，所以剩下的位中都是 <tt>0</tt>.

计算范围

 * 1) 将一个 IP 地址写在另一个之上，然后数出有多少个起始位是相同的. 这就得到了 CIDR 后缀.
 * 2) 再检查一遍！哪怕只差一位都有可能导致你的封禁范围扩大了数千个地址.

下面的示例中计算了 <tt>69.208.0.0</tt> 和 <tt>69.208.0.255</tt> 之间的 CIDR 范围. 注意这只是一个简单的例子，有些 IP 地址组并不会恰巧被 CIDR 后缀包括在内，因此需要多个不同大小的分块以封禁精确的范围.


 * IP 地址：
 * <tt> 69.208.0.0</tt>
 * <tt> 69.208.0.255</tt>


 * 转换到二进制：
 * <tt> 0100 0101.1101 0000.0000 0000.0000 0000</tt>
 * <tt> 0100 0101.1101 0000.0000 0000.1111 1111</tt>


 * 数出相同的起始位数：
 * <tt> 0100 0101.1101 0000.0000 0000.0000 0000</tt>
 * <tt> 0100 0101.1101 0000.0000 0000.1111 1111</tt>
 * <tt> |____________________________|</tt>
 * <tt>             24 位</tt>


 * CIDR 范围:
 * <tt> 69.208.0.0/24</tt>

示例范围表格
下面的表格列出了每个 CIDR 后缀所影响的 IPv4 地址块. 注意，默认情况下，MediaWiki 仅支持在 IPv4 中封禁 CIDR 后缀 16–32，以及在 IPv6 中封禁 64–128（在 中控制）. IPv6 范围表可参考 /IPv6.

默认限制
默认安装的 MediaWiki 限制范围封禁不能大于 /16 的 IPv4 范围块（65,536 个地址）. 要封禁更大的范围，需要对 LocalSettings.php 中的 $wgBlockCIDRLimit 做出相应设置.

参考

 * 无类别域间路由

外部链接

 * IP 地址范围封禁 可查询某些国家所使用的完整 IP 范围
 * 网络掩码计算器 可以帮你得出 which helps in making the correct decision for range blocks.
 * IP CIDR 计算器
 * Rangeblock-Calculator gives you the range you should use when blocking.