关于 IP 计算 段位或者标识的疑问

2015-01-24 15:27:42 +08:00
 fever
阿里云服务器被恶意攻击(用的是win2008 linux该吐槽了 - -)
38.99.82.**
直接防火墙添加阻断 ip从38.99.82.1到 38.99.82.255 屏蔽失败
后提交工单 阿里云让屏蔽 改成 38.92.0.0/16 就好了 说什么子网 网络标识的 我也不懂
大家知道这个38.92.0.0/16 是怎么算出来的吗 这个叫什么 叫ip段位?还是其它的
根据攻击ip添加防火墙都是要怎么算的

Google之,看到一种算法,这里以38.99.82.22为例:
A类IP段  0.0.0.0 到127.255.255.255
B类IP段  128.0.0.0 到191.255.255.255
C类IP段  192.0.0.0 到223.255.255.255
  
A类的默认子网掩码 255.0.0.0     
B类的默认子网掩码 255.255.0.0
C类的默认子网掩码 255.255.255.0

于是乎认为 38.99.82.**属于A类
A类子网掩码 转换成二进制 11111111.00000000.00000000.00000000
38.99.82.22 转换成二进制 00100110.01100011.01010010.00010110
算法把IP和子网掩码的每位数AND (AND方法:0和1=0 0和0=0 1和1=1)
得到 00100110.00000000.00000000.00000000 换成十进制
得到 38.0.0.0 (说这个应该是网络标识?)
.......然后就不知道38.92.0.0/16 这个该如何算出 38.92.0.0的 后面 /16 的意思又是什么
在网上好像还见过后面是/24的 = =
3402 次点击
所在节点    问与答
33 条回复
fever
2015-01-24 17:06:21 +08:00
@bellchu 非常感谢 我主要是网站开发的 小公司没有网管什么的 系统是win的 也就没怎么去理 平时装了个安全狗 就没理了 昨天被攻击 阿里叫我屏蔽 才发现填写ip都不会= =
fever
2015-01-24 17:06:46 +08:00
@lincanbin 谢谢
@ryd994 好的
extreme
2015-01-24 18:31:04 +08:00
我觉得你们说得太抽象了。
不知你是否听说过IPv4是32位的,这个32位就是32个"1"。
CIDR是通过子网掩码计算出来的。
例如子网掩码是255.255.255.0,把这四个数字分别转换为二进制,共24个"1",那CIDR就是24。
CIDR推回子网掩码,就是逆运算了。
例如22这个CIDR,就是22个"1"了(IPv4是32位的,所以要补0):
11111111111111111111110000000000
分成四段,每段八位:
11111111.11111111.11111100.00000000,
然后把各段转换为十进制,就是:
255.255.252.0

网络标识,应该是第一个IP吧,算法比较复杂,用手机中,不方便打太多字。
如果你看得懂PHP的话,考虑看看我写的IP计算的算法(也许大家有更优的算法,别取笑我写的那算法和代码):
http://downloads.yzs.me/ip_calculate.php.tar.bz2
只完成了IPv4部分,IPv6的算法已经在纸上设计好了,只不过没时间弄成PHP代码。
$cidr这个数组是2的0次方至2的32次方的值。

这个是用CIDR或者子网掩码计算IP数目的方法,看完后你应该知道$cidr这个数组的作用了: http://yzs.me/2013.html
extreme
2015-01-24 18:32:40 +08:00
这句话: 不知你是否听说过IPv4是32位的,这个32位就是32个"1"。

改成这个很准确: 不知你是否听说过IPv4是32位的,这个32位就是一个长度为32的二进制数。
tanyuxiang
2015-01-24 19:49:28 +08:00
@fever 常用的就是这样,只看前面连续的1是多少位就是/多少。

比如1111111.1111111.1111111.1111100就是/30
1111111.1111111.1111111.00000000就是/24

实际上并不止/24 /30这种表示方法,还可以用十进制。

比如1111111.00000000.1111111.1111111就无法用/8来表示,只能用255.0.255.255表示。
maye696
2015-01-24 22:38:21 +08:00
刚考完计算机网络的路过
bellchu
2015-01-24 22:57:36 +08:00
@tanyuxiang 没有255.0.255.255这种子网掩码。要么0.0.255.255那是反掩码,ospf和eigrp里面用的。

子网掩码网络位在前面都为1,主机位在后面都为0,不可能有主机位0在中间的情况。
Draplater
2015-01-24 23:04:45 +08:00
38.92.0.0/16表示所有前16位和38.92.0.0相同的IP。
38.92.0.0就是:00100110.01011100.00000000.00000000,
前16位00100110.01011100,
所对应的范围是00100110.01011100.xxxxxxxx.xxxxxxxx,
恰好为38.92.x.x
tanyuxiang
2015-01-25 00:00:10 +08:00
@bellchu LZ是要屏蔽ip段,有的是可以支持随便使用的。
msg7086
2015-01-25 08:33:42 +08:00
以前的ABC类的那种分类已经过时了,现在都用CIDR以提高IP分配效率。
具体要屏蔽多少要根据你的实际情况而定。
一般屏蔽的话,单个IP,也就是/32就够了。
如果遇到攻击IP在一个段内的,那么屏蔽/24甚至/16也可以,当然是要根据实际情况而定,没有一个万能的数字可以给你参考。
总之CIDR数字越小,范围越大。你要是屏蔽一个/8说不定能屏蔽掉一个国家什么的。
fever
2015-01-25 08:50:29 +08:00
@msg7086
@tanyuxiang
@Draplater
@tanyuxiang
@extreme
╮(╯▽╰)╭非常谢谢大家的耐心解答啦
jsq2627
2015-01-25 13:57:45 +08:00
fever
2015-01-25 18:35:32 +08:00
@jsq2627 谢谢啦 - -

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/165054

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX