为IP地址设置ruby whois gem的whois服务地址

马林·皮尔斯

我们尚未打开与whois.arin.net的连接。我们的网络管理员说,我们应该将192.0.47.59用于我们的Whois服务。

在某些情况下,我将使用DNS名称,在其他情况下,我将使用IP地址。无论哪种情况,我都想获取Whois信息。我的网络管理员已允许访问Whois服务的特定IP地址,而我必须使用该IP地址。如果我给它提供TLD,则define方法允许我设置whois服务的IP地址,但是我无法使它适用于IP地址。

这与为ruby whois gem设置whois服务的地址有关,但是由于我得到了部分解决方案,因此我知道如何调用该服务,因此对于我特定于IP地址的问题,我认为我将从头开始。

我需要设置我们的Whois服务的地址。因此,对于DNS名称:

> Whois.whois('wandajackson.com')
Whois::ConnectionError: Errno::EHOSTUNREACH: No route to host - connect(2) for "whois.verisign-grs.com" port 43
    from (irb):4
> Whois::Server.define(:tld, 'com', '192.0.47.59')
=> ["com", "192.0.47.59", {}]
irb(main):006:0> Whois.whois('wandajackson.com')
# => #<Whois::Record>

但是,我无法使它适用于IP地址。

> Whois::Server.define(:ipv4, '74.0.0.0/8', '192.0.47.59')
=> ["74.0.0.0/8", "192.0.47.59", {}]
> Whois.whois('74.220.215.203')
Whois::ConnectionError: Errno::EHOSTUNREACH: No route to host - connect(2) for "whois.arin.net" port 43
    from (irb):7

> Whois::Server.define(:ipv6, '2607::/8', '192.0.47.59')
=> ["2607::/8", "192.0.47.59", {}]
> Whois.whois('2607:f8b0:4004:800::200e')
Whois::ConnectionError: Errno::EHOSTUNREACH: No route to host - connect(2) for "whois.arin.net" port 43
    from (irb):9
巨嘴鸟

我很遗憾地说,但这是缺少配置的错误,74.0.0.0/8如果您创建自己的defined列表,则可能无法在列表中正确搜索,因此=>根据IP进行的配置目前无法正常工作。

为什么?

您可以检查列表并找出分配给ARIN的范围:

Whois::Server.definitions(:ipv4).each { |records| p "IP range #{records[0]}" if records[1] = 'whois.arin.net'}

首先,不做任何更改就检查IP地址:

 Whois::Server.find_for_ip("74.220.215.203")
=> #<Whois::Server::Adapters::Arin:0x00000000030244c0 @type=:ipv4, @allocation="0.0.0.0/1", @host="whois.arin.net", @options={}>

如您所见,在主管部门找不到该记录,因此该记录0.0.0.0/1已设置为whois.arin.net

我试图设置fatory(以某种方式被忽略)和define

Whois::Server.factory :ipv4, "74.0.0.0/8", "whois.iana.org", :option => Whois::Server::Adapters::Standard

define 工作:

Whois::Server.define :ipv4, "74.0.0.0/8", "whois.iana.org"

...,{}],[“ 222.120.0.0/15”,“ whois.nic.or.kr”,{}],[“ 222.122.0.0/16”,“ whois.nic.or.kr”, {}],[“ 222.232.0.0/13”,“ whois.nic.or.kr”,{}],[“ 220.0.0.0/6”,“ whois.apnic.net”,{}],[“ 74.0.0.0/8”,“ whois.iana.org”,{}]]

如您所见,有

["74.0.0.0/8",
> "whois.iana.org", {}]]

因此您现在应该可以查询IANA吗?看来您不是:

Whois::Server.find_for_ip("74.220.215.203")
=> #<Whois::Server::Adapters::Arin:0x000000000434c250 @type=:ipv4, @allocation="0.0.0.0/1", @host="whois.arin.net", @options={}>

如您所见,@allocation仍然在获取"0.0.0.0/1"而不是74.0.0.0/8为什么?我还不知道。在搜索或找到正确的对象时可能存在一些错误。

一切都丢失了吗?并非如此,有一个非常简单的解决方法,但是您必须了解其含义。

解决方法

如果您通过以下方式定义备用地址:

Whois::Server.define :ipv4, "0.0.0.0/1", "whois.iana.org"

一切开始起作用。现在,所有后备查询将通过IANA进行,这对您来说不是问题,因为无论如何您都无法达到ARIN。

现在,如果您通过IP地址查询,您将获得正确的结果:

Whois::Server.find_for_ip("74.220.215.203")
=> #<Whois::Server::Adapters::Standard:0x000000000351c298 @type=:ipv4, @allocation="0.0.0.0/1", @host="whois.iana.org", @options={}>

Whois.whois("74.220.215.203")
=> "% IANA WHOIS server\n% for more information on IANA, visit http://www.iana.org\n% This query returned 1 object\n\nrefer:        whois.arin.net\n\ninetnum:
    74.0.0.0 - 74.255.255.255\norganisation: ARIN\nstatus:       ALLOCATED\n\nwhois:        whois.arin.net\n\nchanged:      2005-06\nsource:       IANA\n\n"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章