我需要获取子网中包含的所有IP地址,我正在尝试使用IPnetwork
例如,子网192.168.1.0/29将具有以下输出:
// Output
// 192.168.1.0
// 192.168.1.1
// 192.168.1.2
// 192.168.1.3
// 192.168.1.4
// 192.168.1.5
// 192.168.1.6
// 192.168.1.7
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
IPNetwork ipn = IPNetwork.Parse("192.168.1.0/29");
IPAddressCollection ips = IPNetwork.ListIPAddress(ipn);
foreach (IPAddress ip in ips)
{
Console.WriteLine(ip);
}
// Output
// 192.168.1.0
// 192.168.1.0
// 192.168.1.0
// 192.168.1.0
// 192.168.1.0
// 192.168.1.0
Run Code Online (Sandbox Code Playgroud)
如您所见,这不是理想的结果.我错过了什么?是否有其他工具或方法来完成这项工作?我已经设法破解了一些东西,但它并不漂亮,我不确定它是否正确枚举更大的子网.
我正在使用ipv4和ipv6存储在postgres db中.
因为ipv4需要32位(4字节)而ipv6需要128(16byte)位.那么为什么在postgres中CIDR和INET数据类型的存储分别为IPV4和IPV6(8.1)的12字节和24字节.
对于IPV4和IPV6,它分别有7个字节和19个字节.
我不明白为什么它需要超过16字节的额外字节用于存储IPV6和4字节用于IPV4?
http://www.postgresql.org/docs/8.1/static/datatype-net-types.html
http://www.postgresql.org/docs/9.1/interactive/datatype-net-types.html
我想做两件事:将IP地址输入转换为CIDR以下是一些示例输入:
1.1.1.1
192.168.*.* #=> 192.168.0-255.0-255
192.168.1.2-20
1.1.1-10.1-100
Run Code Online (Sandbox Code Playgroud)
检查给定的IP地址是否属于任何CIDR.这必须是一个非常快速的查询,因为它是我的Web应用程序中非常常见的查找.我想做这样的事情:
def matches?(request)
valid = @ips.select {|cidr| cidr.contains?(request.remote_ip) }
!valid.empty?
end
Run Code Online (Sandbox Code Playgroud)
我认为将IP范围转换为CIDR将使查找比我们现在所做的更快,这将IP分解为整数八位字节.然后,我们将前两组八位字节编入索引以部分匹配IP.另一个选择可能是将所有内容转换为int并以这种方式进行比较.我会用这样的东西转换成int IPAddr.new("1.1.1.1").to_i
但是我需要为每个范围存储一个上限和下限IP而不是一个CIDR.
如果我忽视任何主流方法,流行宝石或回购,请告诉我.谢谢!
我们需要将来自 WAF 的 IP 地址范围列入白名单,如下所示:
199.83.128.0/21
198.143.32.0/19
149.126.72.0/21
103.28.248.0/22
45.64.64.0/22
185.11.124.0/22
192.230.64.0/18
Run Code Online (Sandbox Code Playgroud)
更多详情:
我正在使用 .net ipSecurity部分。但是还没有找到如何添加上述 ip 地址而不必添加所有 ip 地址的示例。
例如
<ipSecurity allowUnlisted="false">
<!-- this line blocks everybody, except those listed below -->
<clear/>
<add ipAddress="xx.xx.xx.xx" allowed="true"/>
</ipSecurity>
Run Code Online (Sandbox Code Playgroud)
我是子网掩码的新手。
有没有一种优雅的方法来实现这一点?
m = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",s)
Run Code Online (Sandbox Code Playgroud)
如何修改它,使其不仅可以匹配IPv4,还可以匹配CIDR之类的东西10.10.10.0/24
?
我使用NetAddr和ipaddr-py在 Python 中计算子网包含,但我希望开始使用客户端逻辑来确定包含。我可能可以弄清楚如何实现基于位掩码的基本逻辑,但我宁愿使用更通用且得到良好支持/优化的东西。
我想做的基本上是这样的:
function filter_by_containment(candidate_subnets, ipaddr_or_cidr) {
accepted = [];
for (i = 0; i < candidate_subnets.length; i++) {
if (candidate_subnets[i].contains(ipaddr_or_cidr)) {
accepted.append(candidate_subnets[i]);
}
}
return accepted;
}
Run Code Online (Sandbox Code Playgroud)
(注意;我不是 Javascript 专家,所以这可能是垃圾语法。我还使用 JQuery 和其他一些东西,但为了最小化示例的规模,我使用了一个简单的、蹩脚的循环)
蛮力方法:
from ipaddr import IPv4Network
n = IPv4Network('10.10.128.0/17')
all = list(n.iterhosts()) # will give me all hosts in network
first,last = all[0],all[-1] # first and last IP
Run Code Online (Sandbox Code Playgroud)
我想知道如何从 CIDR 获取第一个和最后一个 IP 地址,而不必迭代可能非常大的列表来获取第一个和最后一个元素?
我想要这个,这样我就可以使用如下命令生成此范围内的随机 IP 地址:
socket.inet_ntoa(struct.pack('>I', random.randint(int(first),int(last))))
Run Code Online (Sandbox Code Playgroud) 示例:我有这个网络掩码:255.255.255.0
在 bash 中,是否有一个命令或一个简单的脚本来将我的网络掩码转换为符号 /24?
我是一个十足的菜鸟,让 google 制作了我的第一个 python 脚本。
我正在打开 2 个文件并从列表 2 中删除列表 1。
修改 list2 以删除列表 1 中的内容后,我想按 IP 网络对列表进行排序。例如:
1.1.1.1/24
1.1.1.1/32
5.5.5.5/20
10.10.11.12/26
10.11.10.4/32
Run Code Online (Sandbox Code Playgroud)
目前正在排序
1.1.1.1/24
1.1.1.1/32
10.10.11.12/26
10.11.10.4/32
5.5.5.5/20
Run Code Online (Sandbox Code Playgroud)
代码:
import os
import sys
import random
import re
text_file = open("D:/file/update2.txt", "rt")
lines = str(text_file.readlines())
text_file.close()
ip_address = r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]
{1,3}/\d{1,2})'
foundip = re.findall( ip_address, lines )
text_file2 = open("D:/file/Block.txt", "rt")
lines2 = str(text_file2.readlines())
text_file2.close()
foundip2 = re.findall( ip_address, lines2 )
test =(list(set(foundip2) - set(foundip)))
items = sorted(test)
print (*items, sep …
Run Code Online (Sandbox Code Playgroud) 最初是在 AWS 论坛上提出的,但我感觉很长一段时间都不会收到回复,所以我也在这里提出我的问题:
我最近根据本指南设置了客户端 VPN 。连接后,我可以成功访问互联网以及私有子网中的资源,因此此时我对所有部分如何组合在一起有了基本的了解,除了一个:客户端 CIDR 范围。这个概念给我带来了很多麻烦,我认为它延长了构建时间 2 天,因为我在尝试将其与客户端 VPN 涉及的其他概念连接起来时进行了所有的努力。但当我不完全理解某件事时,它会让我烦恼,所以我对此有一些疑问:
您可能从我的问题中看出,我不是网络管理员。我试图了解这个世界,同时尝试建立有用的基础设施。我的猜测是,对于在该领域有经验的人来说,这些问题的答案是显而易见的,但我就是不明白。
cidr ×10
ip-address ×5
python ×4
amazon-vpc ×1
asp.net-mvc ×1
bash ×1
c# ×1
inet ×1
ip ×1
ipv4 ×1
ipv6 ×1
javascript ×1
list ×1
netmask ×1
networking ×1
postgresql ×1
regex ×1
ruby ×1
security ×1
subnet ×1
vpn ×1
web-config ×1
whitelist ×1