1

与 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
4

1 回答 1

1

很抱歉,这是一个缺少分配的错误,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/1whois.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"
于 2018-09-24T10:46:50.900 回答