2016-01-13 28 views
0

我看到AWS职位json文件,他们所有的IP范围here(实际JSON HERE节点 - 解析AWS的IP范围,并阻止

我想用这个json文件核对每一个传入连接的我节点应用程序,但首先我想知道是否会有太多的开销循环通过它的每个请求?其次,我不确定如何去解决这个问题,因为许多IP范围格式不同,例如,

43.250.192.0/24 
46.51.128.0/18 
27.0.0.0/22 

我不太确定他们的后缀是什么意思。

有没有人有类似的东西?

+1

有可用于帮助这种事情的代码,例如:https://github.com/whitequark/ipaddr.js – jarmod

+0

的后缀是子网掩码设置为1的位数,从左边,所以,例如'/ 18'是'255.255.192.0'(8位,8位,2位,0位)。它被称为[CIDR](https://en.m.wikipedia.org/wiki/IPv4_subnetting_reference)(发音为“苹果酒”)符号。 –

回答

2

您的第一个担心是正确的 - 对于每个请求,通过Amazon的IP进行循环的开销很大。这应该在防火墙处理。

尽管如此,亚马逊提供的ip_prefix字段可用于确保该子网中存在有效的IP地址。 node-ip模块可以帮助解决这个问题。它有一个cidrSubnet函数可用于测试针对用户IP的前缀。请参阅下面的咖啡文字。

ip = require 'node-ip' 
amazonIPs = require 'amazonIPs.json' 
someUsersIP = '192.168.1.190' 

for prefix in amazonIPs.prefix 
    if ip.cidrSubnet(prefix).contains(someUsersIP) 
    console.log "#{someUsersIP} is within the #{prefix} range" 
+0

谢谢。这个解决方案效果很好,但是就像你说的那样,这是一个开销。实际的请求处理速度非常快,这需要几毫秒,但通常以3%cpu运行的服务器将以30%的CPU运行。我想我需要试着弄清楚是否有办法将ip添加到AWS防火墙中? – Darren

+0

是的,您可以将它们添加到AWS防火墙。我不确定会发送什么请求到您的节点应用程序,但它听起来可能是您在AWS中部署的另一个资源。如果是这样,请考虑设置[Virtural Private Cloud](https://aws.amazon.com/vpc)。您可以配置防火墙只允许来自VPC内部的请求,即网络中的其他应用程序。 – justMiles

+0

这些请求来自客户端,所以需要打开,但我经历了一些尝试从其他AWS服务器使用我的API。 – Darren