标签: cidr

列出IP子网中的所有地址

我需要获取子网中包含的所有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)

如您所见,这不是理想的结果.我错过了什么?是否有其他工具或方法来完成这项工作?我已经设法破解了一些东西,但它并不漂亮,我不确定它是否正确枚举更大的子网.

c# ip-address subnet cidr

6
推荐指数
1
解决办法
1万
查看次数

由于IPV6需要128位(16字节),为什么在postgres CIDR数据类型中存储为24字节(8.1)和19字节(9.1)?

我正在使用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

postgresql ipv4 ipv6 cidr inet

6
推荐指数
1
解决办法
1550
查看次数

Ruby/Rails中的IP范围到CIDR?

我想做两件事:将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.

如果我忽视任何主流方法,流行宝石或回购,请告诉我.谢谢!

ruby ip ruby-on-rails ip-address cidr

6
推荐指数
3
解决办法
5914
查看次数

ipSecurity - 如何添加 IP 地址范围

我们需要将来自 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)

更多详情:

https://incapsula.zendesk.com/hc/en-us/articles/200627570-Restricting-direct-access-to-your-website-Incapsula-s-IP-addresses-

我正在使用 .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)

我是子网掩码的新手。

有没有一种优雅的方法来实现这一点?

security asp.net-mvc web-config whitelist cidr

6
推荐指数
1
解决办法
2301
查看次数

Python正则表达式将IP地址与/ CIDR匹配

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

python regex ip-address pattern-matching cidr

5
推荐指数
2
解决办法
6660
查看次数

Python 中是否有与 netaddr/ipaddr 等效的 javascript?

我使用NetAddripaddr-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 和其他一些东西,但为了最小化示例的规模,我使用了一个简单的、蹩脚的循环)

javascript python ip-address cidr

5
推荐指数
0
解决办法
573
查看次数

如何使用 ipaddr 模块获取 CIDR 的第一个/最后一个 IP 地址

蛮力方法:

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)

python ip-address cidr

5
推荐指数
2
解决办法
1万
查看次数

Bash - 以 CIDR 表示法转换网络掩码?

示例:我有这个网络掩码:255.255.255.0

在 bash 中,是否有一个命令或一个简单的脚本来将我的网络掩码转换为符号 /24?

bash netmask cidr

5
推荐指数
3
解决办法
9801
查看次数

如何对具有IP子网的列表列表进行排序python

我是一个十足的菜鸟,让 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)

python networking list cidr

5
推荐指数
1
解决办法
3377
查看次数

AWS 客户端 VPN 客户端 CIDR 范围的目的?

最初是在 AWS 论坛上提出的,但我感觉很长一段时间都不会收到回复,所以我也在这里提出我的问题:

我最近根据本指南设置了客户端 VPN 。连接后,我可以成功访问互联网以及私有子网中的资源,因此此时我对所有部分如何组合在一起有了基本的了解,除了一个:客户端 CIDR 范围。这个概念给我带来了很多麻烦,我认为它延长了构建时间 2 天,因为我在尝试将其与客户端 VPN 涉及的其他概念连接起来时进行了所有的努力。但当我不完全理解某件事时,它会让我烦恼,所以我对此有一些疑问:

  • 假设范围不与目标网络重叠,那么范围与其所属的 VPC 位于同一 CIDR 范围内是否会受益?为什么或者为什么不?
  • 为什么范围需要为 /22,而目标网络可以小至 /27?这是否意味着由于给定子网中有可用地址,可能会有 2^5 个以上的客户端尝试访问 VPC 中的资源?
  • 在为私有子网设置安全组时,我注意到我必须使用基于目标子网客户端连接登陆的 CIDR 范围的规则,而不是客户端 CIDR 范围 - 这是为什么?

您可能从我的问题中看出,我不是网络管理员。我试图了解这个世界,同时尝试建立有用的基础设施。我的猜测是,对于在该领域有经验的人来说,这些问题的答案是显而易见的,但我就是不明白。

vpn cidr amazon-web-services amazon-vpc

5
推荐指数
1
解决办法
928
查看次数