【问题标题】:Given an IP address, how do I find the CIDR range to which it belongs?给定一个 IP 地址,我如何找到它所属的 CIDR 范围?
【发布时间】:2017-03-15 22:24:28
【问题描述】:

我正在研究如何自动更新.htaccess,以阻止已经进入并试图入侵该网站的 IP 范围。

我已经手动执行了一段时间,提取一个 IP 地址,然后使用基于 Web 的 whois 实用程序查找它所在的范围,然后手动将该范围添加到该站点的阻止 IP 列表中。这很痛苦。

现在我正在解析日志文件以使用 Perl 脚本查找可疑条目尝试的 IP 地址,并且我想找到该 IP 地址所属的 IP 地址范围,并且可能会提取一些其他描述性信息,这将很快告诉我这是否是我要阻止的范围。

我知道这是可以做到的,因为网络实用程序提供了信息。这是一个例子

.

我可以对它们运行gethostbyaddr,但这不是我需要的。

我看到一些 whois 模块包含一些信息,但无法找到对 IP 地址所属范围的访问权限。我希望有一个模块可以用来提取地址范围,以帮助我加快安全过程。

【问题讨论】:

    标签: .htaccess perl ip-address whois cidr


    【解决方案1】:

    我建议您使用Net::Whois::Raw 模块。它只返回一个文本块,你必须使用正则表达式模式来提取你需要的信息

    以下示例显示了与您在示例中使用的地址相同的 IP 范围。只需打印$info 即可查看全部内容

    use strict;
    use warnings 'all';
    use feature 'say';
    
    use Net::Whois::Raw;
    
    my $info = whois('95.137.240.189');
    
    say $info =~ /NetRange:\s*(.+)/;
    

    输出

    95.0.0.0 - 95.255.255.255
    

    【讨论】:

    • 我打算推荐 Net::Whois::Generic,它有一个更好的界面,但它会阻塞 OP 的 IP 地址。 :(
    • @ThisSuitIsBlackNot:哦?你是什​​么意思,“窒息”? Net::Whois::* 系列中有很多模块,而我只使用过其中的几个。 Net::Whois::Parser 应该与 Net::Whois::Raw 配合得很好,但在这种情况下似乎有点过分了。
    • “扼流圈”是指它会生成一堆警告,甚至会吐出内部数据结构的 Data::Dumper 转储。你的版本好多了。 :)
    • @ThisSuitIsBlackNot:哇。这有点反应过度了!我确实注意到我的解决方案产生了与在线实用程序不同的 IP 范围。我想知道哪个是正确的!
    • 情况比我想象的要复杂。这个link 提供了一些额外的细节,准确地说,whois 解析模块需要能够递归。您可能访问具有 IP 地址的写入服务器,或者您可能不会,在这种情况下,它会将您指向具有 IP 地址及其范围的写入服务器。我使用link 这个例子来导出这个查询的原始结果:rest.db.ripe.net/search?query-string=95.137.240.189
    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2018-10-08
    • 2011-06-28
    • 1970-01-01
    • 2011-12-01
    相关资源
    最近更新 更多