有没有什么好的代码将IPv6地址字符串转换为整数?使用一种格式转换IPv4似乎相当容易.但是,IPv6有几种不同的格式来显示地址:
我希望能够将这些字符串中的一个转换为用于IP到网络匹配的INTEGER,并允许任何这些格式作为输入.
我有兴趣在Linux中以编程方式查找本地主机的子网掩码,最好是通过本机C api.
我已经通过/etc/network/interfaces(分发是 Debian Squeeze)为我的专用主机分配了一个 /64 IPv6 子网
iface eth0 inet6 static
address 2a01:4f8:XXXX:YYYY::2
netmask 64
gateway fe80::1
Run Code Online (Sandbox Code Playgroud)
现在,我想让 cURL (PHP 5.3.22-1~dotdeb.0) 使用该子网的一个特定 IP 地址 pe,2a01:4f8:XXXX:YYYY::3因此我的代码如下所示:
curl_setopt($this->_curl, CURLOPT_INTERFACE, '2a01:4f8:XXXX:YYYY::3');
curl_setopt($this->_curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
Run Code Online (Sandbox Code Playgroud)
跑步时curl_exec我得到bind failed with errno 99: Cannot assign requested address. 为什么会发生这种情况?在将每个 IPv6 地址定义为 /128 时/etc/network/interfaces,例如:
iface eth0 inet6 static
address 2a01:4f8:XXXX:YYYY::2
netmask 128
up ip -6 addr add 2a01:4f8:XXXX:YYYY::3/128 dev eth0 preferred_lft 0
gateway fe80::1
Run Code Online (Sandbox Code Playgroud)
那么一切都很好,cURL 使用::3IP。但是我的意图是使用我子网中的大量 IP(真的很多 IP),因此这是不切实际的。有谁知道为什么 …
我想获得IP地址和子网掩码.现在IP部分已经完成,但是我找不到任何会返回带有子网掩码的结构的套接字函数.是否存在套接字函数,它将其返回到结构中?
谢谢!
当我使用此命令时,会扫描哪些 IP 地址
# nmap -sP 192.168.0.120/25
Run Code Online (Sandbox Code Playgroud)
当我有地址和子网时,您能帮我如何获取 IP 范围吗?因为我试图理解这一点,但到目前为止还没有结果..提前致谢
想象有一个防火墙,系统管理员阻止了许多子网,也许是特定国家的所有子网.
例如:
192.168.2.0 / 255.255.255.0
223.201.0.0 / 255.255.0.0
223.202.0.0 / 255.254.0.0
223.208.0.0 / 255.252.0.0
....
Run Code Online (Sandbox Code Playgroud)
要确定IP地址是否已被阻止,防火墙可能会使用以下算法.
func blocked(ip)
foreach subnet in blocked_subnets
if in_subnet(subnet, ip)
return true
return false
Run Code Online (Sandbox Code Playgroud)
但是,算法运行需要太多时间,时间复杂度为O(n).如果路由表包含太多条目,则网络几乎不可用.
有没有更有效的方法将IP地址与巨大的路由条目相匹配?它是基于某种树/图(特里?)我想.我已经阅读了有关最长前缀匹配和Trie的内容,但没有得到重点.
所以下面的代码是另一位用户不久前发布的。
我想知道获取 和 之间每个 IP 地址的最佳方法"net['firstip']是什么net['lastip']"?
我尝试了几种方法从十进制转换为二进制,但它不起作用。我的想法是for()增加二进制数firstip直到达到lastip,并将每个步骤转换为相当于放入新数组的十进制数。
感谢所有帮助。我把 *** 放在我试图找到 IP 之间的两个特定部分旁边。
function zerofill($val,$len,$reverse = false){
while(strlen($val)<$len)
if($reverse)
$val .= "0";
else
$val = "0".$val;
return $val;
}
function hextoip($hex){
for($i=0;$i<4;$i++)
@$ip .= base_convert(substr($hex,$i*2,2),16,10).".";
$ip = substr($ip,0,-1);
return $ip;
}
function iptohex($ip){
$iparr = explode(".",$ip);
foreach($iparr as $i => $group){
@$hex .= zerofill(base_convert($group,10,16),2);
}
return $hex;
}
function hextobin($hex){
$bin = zerofill(base_convert($hex,16,2),32);
return $bin;
}
function bintohex($bin) {
$hex = …Run Code Online (Sandbox Code Playgroud) 拥有公有子网与通过 AWS 将弹性 IP 地址分配给 VPC 实例这两个术语之间有什么区别?
我在 AWS 中有一个公共子网,其中有 3 个实例......
我的路由表设置为 192.168.0.0/16 -> local 0.0.0.0/0 -> Internet Gateway
我可以看到具有公共 IP 的实例可以访问互联网,但没有公共 IP 的实例无法访问互联网。
如何为公共子网内的其他实例提供互联网访问权限?
我是网络新手,任何帮助将不胜感激。
仅供参考:我知道创建一个 NAT,然后使用 0.0.0.0 -> NAT 创建一个单独的路由表并将该路由与私有子网相关联可以让互联网访问私有子网中的实例,但我不知道如何为公共子网中的非公共 IP 实例提供 Internet 访问权限。请帮忙 !
我正在尝试在给定 IP 地址子网的情况下生成随机 IP 地址。有很多资源可用于生成随机 IP,但我要求它从特定子网内生成。
我使用了一个名为netmask的 npm 模块- 但是实现绝对不优雅。任何人都可以为此提供一些巧妙的指针吗?
var netmask = require("netmask").Netmask
var block = new netmask('10.0.0.0/24')
console.log(block) // gives block details
var blockSize = block.size - 1 ;
var randomIndex = Math.floor(Math.random() * blockSize ) +1; // generate a random number less than the size of the block
console.log("randomIndex is: " + randomIndex);
block.forEach(function(ip, long, index){
if(index == randomIndex){
console.log('IP: ' + ip)
console.log('INDEX: ' + index)
// cannot break! this is a forEach :( …Run Code Online (Sandbox Code Playgroud) subnet ×10
ip-address ×4
amazon-vpc ×2
c ×2
ipv6 ×2
php ×2
algorithm ×1
amazon-ec2 ×1
arrays ×1
aws-vpc ×1
binary ×1
cidr ×1
curl ×1
elastic-ip ×1
hex ×1
ipv4 ×1
javascript ×1
linux ×1
networking ×1
nmap ×1
npm ×1
oracle ×1
plsql ×1
vpc ×1