如何从 IP 地址列表中查找 IP 地址范围

发布于 2024-08-01 22:38:24 字数 156 浏览 3 评论 0原文

我有大约 20000 个 IP 地址。 我正在寻找这些 IP 地址的网络块范围。 目的是提供信息以在防火墙中存在漏洞,以便允许这些地址。 我可以查看 abcd/x 位格式。 可能有几个范围。

更新:我的 apache 日志文件中已有 IP 地址,而不是创建新的。

I have around 20000 IP Addresses. and I am looking to find the network-block-ranges for these IP addresses. The purpose is to provide information to have hole in the firewall so that these addresses can be allowed. I can looking in a.b.c.d/x bits format. There could be several ranges.

Update: I have IP Addresses already in my apache log files, rather than creating new ones.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

捂风挽笑 2024-08-08 22:38:24

您无法从地址中确定这一点。 您需要知道子网掩码。

You can't determine this from the addresses. You need to know the subnet masks.

凤舞天涯 2024-08-08 22:38:24

我相信您正在谈论CIDR。 20000< 2^15。 所以你需要一个免费的 ABCD/15 块,但据我所知 /15 块并不常见,而 /16 是被接受的。 所以你需要ABCD/16。

I believe you're talking about CIDR. 20000 < 2^15. So you need a free A.B.C.D/15 block, but AFAIK /15 block is not common, while /16 is accepted one. So you need A.B.C.D/16.

孤君无依 2024-08-08 22:38:24

您想以编程方式找到它们吗? 如果你的答案是肯定的,我会用Java给出一个解决方案。

public static void main(String[] args) {

    String originalIP = "a.b.c.d/x";
    String[] ipParts = originalIP.split("[\\.\\/]");

    boolean ipWithinBounds = true;

    for (int i = 0; i < ipParts.length; i++) {
        ipWithinBounds &= withinBounds(Integer.parseInt(ipParts[0]), 
                                        lowerBound, upperBound);
    }
}

public static boolean withinBounds(int check, int lowerBound, int upperBound) {
    if(check >= lowerBound && check <= upperBound)
    {
        return true;
    }
    else
    {
        return false;
    }
}

除非您将originalIP变量更改为真实IP,否则这将不起作用。

Do you want to find them programatically? If your answer is yes, i'll give a solution for it in Java.

public static void main(String[] args) {

    String originalIP = "a.b.c.d/x";
    String[] ipParts = originalIP.split("[\\.\\/]");

    boolean ipWithinBounds = true;

    for (int i = 0; i < ipParts.length; i++) {
        ipWithinBounds &= withinBounds(Integer.parseInt(ipParts[0]), 
                                        lowerBound, upperBound);
    }
}

public static boolean withinBounds(int check, int lowerBound, int upperBound) {
    if(check >= lowerBound && check <= upperBound)
    {
        return true;
    }
    else
    {
        return false;
    }
}

This won't work unless you change the originalIP variable to a real IP.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文