我们的数据中心为我们提供了所有机器的 JSON 转储,以导入我们自己的库存管理系统。这提供了 IP 块,例如 (192.168.1.1/26),但是当我导入数百个块时,我还想计算网络掩码和网关。
我查看了 PHP Doxygen 上的网络功能,但找不到任何方法来做到这一点。如何从 IP 块计算网络掩码/网关?
这些天我在玩多播,遇到了一些我不明白的奇怪事情。
我创建了一个聊天多播客户端,一切似乎都正常。之后,我阅读了一些 linux 文档并发现通过 ping 224.0.0.1 应该从加入某个多播组的所有节点返回我的回复。我在 xp 和 win7 机器上试过。两者的行为是相同的。我的客户似乎只加入我定义的组 (224.0.19.1)。它不加入 224.0.0.1 组。
来自wireshark:[source ip] 224.0.0.22 IGMPv3 54 Membership Report / Join group 224.0.19.1 for any source
这是我设置套接字的方式:
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));
m_socket.Bind(ipep);
IPAddress ip = IPAddress.Parse(mcastGroup);
m_socket.SetSocketOption(
SocketOptionLevel.IP, SocketOptionName.AddMembership,
new MulticastOption(ip, IPAddress.Any));
Run Code Online (Sandbox Code Playgroud)
然后我检查了netsh:
C:\Users\user1>netsh interface ip show joins
Interface 1: Loopback Pseudo-Interface 1
Scope References Last Address
---------- ---------- ---- ---------------------------------
0 2 Yes 239.255.255.250
Interface 11: LAN
Scope References Last Address
---------- ---------- ---- --------------------------------- …Run Code Online (Sandbox Code Playgroud) 好的,问题来了。
我有一个 IP 地址的纯文本列表,我在我的服务器上阻止了这些地址,每天都变得越来越笨拙(仅今天就增加了 3000 多个条目)。
它已经针对重复项进行了排序,因此这不是问题。我想做的是编写一个脚本来完成它并更好地合并条目以进行大规模阻塞。
例如,拿这个:
2.132.35.104
2.132.79.240
2.132.99.87
2.132.236.34
2.132.245.30
Run Code Online (Sandbox Code Playgroud)
并将其变成这样:
2.132.0.0/16
Run Code Online (Sandbox Code Playgroud)
关于如何在 bash 脚本中编码的任何建议?
更新:我已经部分地解决了如何做我需要的事情。将其转换为 /24 很容易,如下所示:
cat /usr/local/blocks/blocks.txt | while read line; do
oc1=`echo "$line" | cut -d '.' -f 1`
oc2=`echo "$line" | cut -d '.' -f 2`
oc3=`echo "$line" | cut -d '.' -f 3`
oc4=`echo "$line" | cut -d '.' -f 4`
echo "$oc1.$oc2.$oc3.0/24" >> twentyfour.srt
done
sort -u twentyfour.srt > twentyfour.txt
rm -f twentyfour.srt
ori=`cat /usr/local/blocks/blocks.txt | wc -l`
new=`cat twentyfour.txt …Run Code Online (Sandbox Code Playgroud) 最近,一位同事告诉我,第三方可以看到 HTTPS GET 请求的查询字符串,我开始证明他是错的。但是找到任何明确的 URL 解析描述是很困难的。
我的理解是 URL 只是零碎发送,域传递到 IP 标头,端口传递到 TCP 标头等。在 HTTPS GET 的特殊情况下,这意味着查询字符串将只驻留在 HTTP 标头中,它又位于 TLS 正文中,它是端到端加密的,因此是安全的。
那么,我的问题是双重的:
是否有任何 node.js 模块可用于获取发出请求的客户端计算机的公共 IP 地址?我不是指 IPv4 或 IPv6,我需要像您访问http://www.whatismyip.com/时获得的公共 IP
我试过了,req.connection.remoteAddress;但它不返回公共 IP。它必须是公开的,这样我才能根据 IP 地址定位城市。
谢谢 :)
我需要客户端 IP 地址来查找客户端位置,以便我可以向客户端列出该区域的详细信息。我使用此代码来查找 IP 地址。
$this->container->get('request')->getClientIp();
但是我得到的 IP 是127.0.0.1。
如何获取客户端IP地址?有人可以给我一个完整的工作代码吗?
我想从网站读取数据,但将我的真实 IP 地址涂黑了
我想使用 IP 列表读取数据:
我正在测试以这种方式隐藏我的真实 IP 地址,我的 IP 地址不存在于标题中,但目标网站找到我的真实 IP 地址并阻止它
我正在使用带有 curl 的 php
而我的目标网站是由 python 编写的
请帮我
如何在 Windows 上用 C 语言获取本地机器的 IP 地址?我无法在以下代码中获取我机器的 IP 地址:
#include <ifaddrs.h>
#include <stdio.h>
int main()
{
struct ifaddrs *id;
int val;
val = getifaddrs(&id);
printf("Network Interface Name :- %s\n",id->ifa_name);
printf("Network Address of %s :- %d\n",id->ifa_name,id->ifa_addr);
printf("Network Data :- %d \n",id->ifa_data);
printf("Socket Data : -%c\n",id->ifa_addr->sa_data);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在编译时遇到错误:
致命错误 C1083:无法打开包含文件:“net/if.h”:没有这样的文件或目录。
我无法使用,#include <net/if.h>因为它仅在 Linux 上可用。
我在一个变量中设置了一个 IP 地址,我想将其转换为网络地址。
这仅适用于一位数:
echo '192.168.1.2' | sed 's/.$/0/' => 192.168.1.0
echo '192.168.1.22' | sed 's/.$/0/' => 192.168.1.20
echo '192.168.1.223' | sed 's/.$/0/' => 192.168.1.220
Run Code Online (Sandbox Code Playgroud)
如果最后一位数字发生变化,我需要一种方法来返回相同的网络值,即:
myip="192.168.1.2" => "192.168.1.0"
myip="192.168.1.22" => "192.168.1.0"
myip="192.168.1.223" => "192.168.1.0"
Run Code Online (Sandbox Code Playgroud)
如何用上面的网络地址替换任何IP地址?
在 bash 脚本中,我有一个像 140.179.220.200 这样的 IP 地址和像 255.255.224.0 这样的网络掩码。我现在想计算网络地址(140.179.192.000)、第一个可用的主机 IP(140.179.192.1)、最后一个可用的主机 IP(140.179.220.254)和广播地址(140.179.223.255)。我能够找到一种干净的方法来处理下面的网络地址。我可以手动进行子网计算,但主要是难以将其转换为 bash 脚本。提前致谢
$ IFS=. read -r i1 i2 i3 i4 <<< "192.168.1.15"
$ IFS=. read -r m1 m2 m3 m4 <<< "255.255.0.0"
$ printf "%d.%d.%d.%d\n" "$((i1 & m1))" "$((i2 & m2))" "$((i3 & m3))" "$((i4 & m4))"
192.168.0.0
Run Code Online (Sandbox Code Playgroud)