为 ruby 设置 whois 服务地址 whois gem 为 IP 地址
Setting address of whois service for ruby whois gem for IP addresses
与 whois.arin.net 的连接未对我们开放。我们的网络管理员说我们应该使用 192.0.47.59 作为我们的 whois 服务。
在某些情况下,我会有一个 DNS 名称,在其他情况下,我会有一个 IP 地址。无论哪种情况,我都想获取 whois 信息。我的网络管理员允许访问 whois 服务的特定 IP 地址,我必须使用该 IP 地址。 define 方法允许我设置 whois 服务的 IP 地址,如果我给它 TLD,但我无法让它为 IP 地址工作。
这与有关,但由于我得到了部分解决方案,我知道如何调用该服务,所以对于我的特定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={}>
如您所见,当局未找到该记录,因此它转到为 whois.arin.net
.
设置的后备 0.0.0.0/1
我尝试设置 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"
与 whois.arin.net 的连接未对我们开放。我们的网络管理员说我们应该使用 192.0.47.59 作为我们的 whois 服务。
在某些情况下,我会有一个 DNS 名称,在其他情况下,我会有一个 IP 地址。无论哪种情况,我都想获取 whois 信息。我的网络管理员允许访问 whois 服务的特定 IP 地址,我必须使用该 IP 地址。 define 方法允许我设置 whois 服务的 IP 地址,如果我给它 TLD,但我无法让它为 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={}>
如您所见,当局未找到该记录,因此它转到为 whois.arin.net
.
0.0.0.0/1
我尝试设置 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"