Настройка адреса службы whois для ruby, whois gem для IP-адресов - PullRequest
0 голосов
/ 21 сентября 2018

Соединение с whois.arin.net не открыто для нас.Наши сетевые администраторы говорят, что мы должны использовать 192.0.47.59 для нашей службы whois.

В некоторых случаях у меня будет DNS-имя, в других - IP-адрес.Я хочу получить информацию о Whois в любом случае.Мои сетевые администраторы разрешили доступ к определенному IP-адресу для службы whois, и я должен использовать этот IP-адрес.Метод define позволяет мне установить IP-адрес службы whois, если я дам ей TLD, но у меня нет способа заставить его работать для IP-адресов.

Это связано с Настройка адресаСлужба whois для ruby ​​whois gem , но, поскольку я получил частичное решение, я знаю, как позвонить в службу, поэтому для моего вопроса, касающегося 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

1 Ответ

0 голосов
/ 24 сентября 2018

Извините, но это ошибка с отсутствующим 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"
...