标签: cidr

如何在C#中将CIDR转换为网络和IP地址范围?

我一直在寻找一些C#代码来将CIDR表示法(72.20.10.0/24)中的网络转换为IP地址范围,没有太多运气.stackoverlow上有一些关于CIDR的线程,但似乎没有任何C#代码可以覆盖我需要的内容.所以我决定自己做饭,我不希望代码依赖System.Net进行此版本的任何转换.

也许它可能对某人有所帮助.

参考文献:

从网络bitcount转换为网络掩码的最佳方法是什么?

来自http://www.laffeycomputer.com/whatmask.html的 "Whatmask"C代码

用法:

uint startIP, endIP;  
Network2IpRange("72.20.10.0/24", out startIP, out endIP); 
Run Code Online (Sandbox Code Playgroud)

代码假设一切都是32位.

static void Network2IpRange(string sNetwork, out uint startIP, out uint endIP)
{           
    uint ip,        /* ip address */
        mask,       /* subnet mask */               
        broadcast,  /* Broadcast address */
        network;    /* Network address */

    int bits;               

    string[] elements = sNetwork.Split(new Char[] { '/' });         

    ip = IP2Int(elements[0]);
    bits = Convert.ToInt32(elements[1]);

    mask = ~(0xffffffff >> bits);

    network = ip & mask;
    broadcast = network + ~mask; …
Run Code Online (Sandbox Code Playgroud)

c# cidr

15
推荐指数
3
解决办法
2万
查看次数

Python 3:从CIDR表示法创建可能的IP地址列表

我已经完成了在python(3.1)中创建一个函数的任务,该函数将采用CIDR表示法并返回可能的ip地址列表.我查看了python.org并发现了这个:http://docs.python.org/dev/py3k/library/ipaddr.html

但我还没有看到任何可以满足这种需求的东西......我会非常感激任何人都愿意帮助我的方式.提前致谢.:-)

python subnet cidr

13
推荐指数
4
解决办法
3万
查看次数

检查两个CIDR地址是否相交?

给定两个CIDR地址为192.168.2.0/14和192.168.2.0/32

如何在"python2.6"中检查两个ip地址是否重叠?

我已通过netaddr,它允许检查192.168.2.0是否在CIDR地址192.168.2.0/14中

from netaddr import IPNetwork, IPAddress
bool = IPAddress("192.168.2.0") in IPNetwork("192.168.2.0/14"):
Run Code Online (Sandbox Code Playgroud)

但是如何检查两个CIDR地址?

我找到了一个引用:: 如何在python中检查ip是否在网络中

python ip-address cidr

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

AWS VPC使用不同的区域创建子网

我已经配置了一个由Amazon EC2使用的VPC(非默认).

我需要在具有不同可用区的同一VPC中创建另一个子网(非默认).

因此,当我尝试添加详细信息时,我被困在CIDR块中.尝试为CIDR设置不同的IP时,我收到2个错误.

  1. CIDR块192.168.250.225/16与来自子网6afacb2c(192.168.0.0/16)的预先存在的CIDR块192.168.0.0/16重叠.AvtarSingh公共子网.

  2. 192.167.250.225/16不在192.168.0.0/16的范围内

我尝试了许多我能想到的组合,但没有一个能为我工作.

对不起,我对CIDR知之甚少.那么你能为我提供当前配置的正确CIDR吗?现在,我只想设置开发环境,以便检查.

以下是当前的VPC和子网详细信息:

  1. VPC

    VPC ID: vpc-8fe804ea | AvtarSingh VPC
    Network ACL: acl-406a8725
    State: available
    Tenancy: Default
    VPC CIDR: 192.168.0.0/16
    DNS Resolution: yes
    DHCP Options Set: dopt-0d6a7c6f
    DNS Hostnames: yes
    Route Table: rtb-18739f7d
    
    Run Code Online (Sandbox Code Playgroud)
  2. 子网

    Subnet ID: subnet-6afacb2c | AvtarSingh Public Subnet
    Availability Zone: us-west-2c
    CIDR: 192.168.0.0/16
    Route Table: rtb-1b739f7e
    State: available
    Network ACL: acl-406a8725
    VPC: vpc-8fe804ea (192.168.0.0/16) | AvtarSingh VPC
    Default Subnet: no
    Available IPs: 65530
    
    Run Code Online (Sandbox Code Playgroud)

cidr amazon-web-services amazon-vpc

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

如何使用netaddr在Python中将子网掩码转换为cidr

如何使用netaddr库将ipv4子网掩码转换为cidr表示法?
例: 255.255.255.0 to /24

python cidr

12
推荐指数
3
解决办法
2万
查看次数

在PHP中将IPv6 cidr拆分为/ 64块

我正在寻找创建一个将ipv6范围或cidr作为输入的脚本,并吐出一个/ 64块列表(或每个/ 64块中的第一个IP).

我有一个功能,可以为IPv4 IP做类似的事情,但我缺乏理解为ipv6重新使用它.

Function BreakTo30($CIDR)
{
    $CIDR = explode("/", $CIDR); // this breaks the CIDR block into octlets and /notation
    $octet = ip2long($CIDR[0]); //turn the first 3 octets into a long for calculating later
    $NumberOf30s = pow(2,(30-$CIDR[1]))-1; //calculate the number of /30s in the CIDR block
    $OutputArray = array();
    for ($i=-4; $i<4 * $NumberOf30s; $OutputArray[] = (long2ip($octet + ($i += 4)))); //fancy math to output each /30
    return $OutputArray; //returns an array of ranges

}
Run Code Online (Sandbox Code Playgroud)

ip2long和long2ip只是ipv4.

php ipv6 cidr

12
推荐指数
1
解决办法
438
查看次数

使用SQL确定子网掩码的cidr值

我想找到一种方法来执行SQL查询,该查询将计算存储在数据库中的子网掩码的cidr(位表示).例如,我有255.255.255.0或其十进制值(4294967040)存储在数据库中.我想通过查询进行选择并返回/ 24表示.

我做了以下的事情来确定子网的最后一个IP,所以我希望做类似的事情来确定一个掩码的cidr表示.

select concat(inet_ntoa(ip_addr),'-',
    inet_ntoa(ip_addr+(POWER(2,32)-ip_mask-1))) range 
from subnets 
order by ip_addr
Run Code Online (Sandbox Code Playgroud)

最好这是一个可以在mysql,postgres,oracle等下工作的SQL语句.

sql bitmask subnet cidr

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

通过子网的 CIDR 块后出现“必须是有效的 Ipv4 CIDR”错误

我在 AWS 上使用 IPV4 CIDR 块创建了一个 VPC(公共和私有子网)10.0.0.0/26(即它可以有 2^6 = 64 个 IP 地址以及一个子网地址和一个广播地址)。我想创建以下两个子网,但Must be valid Ipv4 CIDR出现错误:

  1. 具有10.0.0.0/28CIDR 块的公共子网,以及
  2. 带有10.0.0.8/28CIDR 块的私有子网

如果我提供子网掩码 as/28并且我想将地址分成两个子网,则地址将落入 range 10.0.0.0 [10.0.0.00000000] - 10.0.0.15 [10.0.0.00001111]。另一方面,如果我将 CIDR 块设置为10.0.0.16/28,则不会出现任何错误。为什么 AWSMust be valid Ipv4 CIDR在 CIDR 块中给出错误为10.0.0.8/28

subnet cidr amazon-vpc

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

在CloudFormation模板中以编程方式生成子网CIDR块(或将整数添加到一起)

我们正在调整我们的应用程序CloudFormation模板以使用VPC.在此模板中,我们需要以编程方式生成用于VPC子网的CIDR块,以确保它们不会在CloudFormation堆栈之间发生冲突.

我最初的计划是通过将字符串连接在一起来生成CIDR,例如:

"ProxyLoadBalancerSubnetA" : {
  "Type" : "AWS::EC2::Subnet",
  "Properties" : {
    "VpcId" : { "Ref" : "Vpc" },
    "AvailabilityZone" : "eu-west-1a",
    "CidrBlock" : { "Fn::Join" : [ ".", [ { "Ref" : "VpcCidrPrefix" }, "0.0/24" ] ] }
  }
},
Run Code Online (Sandbox Code Playgroud)

然而,在进一步考虑之后,我们需要使用单个VPC,而不是为每个堆栈使用VPC.

AWS限制VPC使用最大的/16CIDR块(我们已经要求提高此限制,但显然不可能).这意味着我们不再可能使用此连接方法,因为我们的每个堆栈都需要总共超过255个地址的子网.

我想在运行中生成CIDR块,而不必将它们定义为CloudFormation模板的参数,

我有一个想法是每个堆栈都有一个"基本整数",并为每个子网的CIDR块添加.

例如:

    "CidrBlock" : { "Fn::Join" : [ ".", [ { "Ref" : "VpcCidrPrefix" }, { "Fn::Sum", [ { "Ref" : "VpcCidrStart" }, 3 ] }, "0/24 ] ] }
Run Code Online (Sandbox Code Playgroud)

其中VpcCidrStart是一个整数,用于设置第三个CIDR八位字节应在脚本中开始的值,并且3是子网号. …

cidr amazon-web-services aws-cloudformation amazon-vpc

9
推荐指数
2
解决办法
3168
查看次数

如何为Kubernetes群集确定适当的pod CIDR值?

我正在启动一个kubernetes集群:

kubeadm init --pod-network-cidr=192.168.1.0/16 --apiserver-advertise-address=192.168.0.33
Run Code Online (Sandbox Code Playgroud)

我对网络概念或CIDR不太熟悉,如何确定pod CIDR的适当值?

我之前使用10.244.0.0/16但导致:

Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "78cf556b2e87e15cc5ec8827ca3a397c16dcfb90f045e225a17028f072db6e5f" network for pod "coredns-78fcdf6894-c7kq2": NetworkPlugin cni failed to set up pod "coredns-78fcdf6894-c7kq2_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.1.1/24
Run Code Online (Sandbox Code Playgroud)

cidr kubernetes kubeadm

8
推荐指数
1
解决办法
5651
查看次数