Perl Module Net::DNS - вызов метода tsig для объекта-преобразователя приводит к ошибке

недавно дистрибутив linux, который я использую (недавний gentoo), обновил пакет net-dns до версии 0.74 (с 0.66). с этого времени использование TSIG для запросов и обновлений больше не работает. раньше я использовал:

$resolver = Net::DNS::Resolver->new(...);

$resolver->tsig( $keyname, $key );
# ($key as base64 representation)

or

$resolver->tsig( Net::DNS::RR->new( "$keyname TSIG $key" ) );

вызов tsig теперь приводит к исключению:

"zone file representation not defined for TSIG at /usr/lib/perl5/vendor_perl/5.18.2/i686-linux/Net/DNS/RR.pm line 683."

согласно http://search.cpan.org/~nlnetlabs/Net-DNS-0.74/lib/Net/DNS/Resolver.pm#tsig

tsig() - Get or set the TSIG record used to automatically sign outgoing queries and updates.

мое использование tsig() должно быть правильным.

используя другой способ предварительного создания tsig RR-Object с помощью:

my $tsig = Net::DNS::RR->new( type => "TSIG", name => "KEYNAME", key => "KEY" );
$resolver->tsig($tsig);

приводит к ошибкам «tsig verify failure (BADSIG)» в BIND на стороне сервера.

используя $tsig только для пакетов обновления:

my $update = Net::DNS::Update->new( ... );
$update->sign_tsig($tsig);

также не работает (BADSIG); "более простой" способ

$update->sign_tsig($keyname, $key);

работает.

Как правильно использовать TSIG для как запросов, так и пакетов обновления с объектом преобразователя в Net::DNS >= V0.74?

Версия Perl — 5.18.2.

Что я делаю не так ? - большое спасибо за ваши подсказки.


person Nico Rittner    schedule 16.02.2015    source источник
comment
Вы читали документацию для 0.74? Для этого требуется некоторые дополнительные настройки   -  person David K-J    schedule 16.02.2015
comment
Да. Эти строки конфига были и есть. Без них named вообще не смог бы понять запросы/обновления TSIG (ошибки BADKEY) — также от клиентов с версиями Net::DNS ниже 0.74 (которые все еще работают с этой настройкой)   -  person Nico Rittner    schedule 16.02.2015
comment
См. mail-archive.com/gentoo-commits@lists. .gentoo.org/msg88330.html для аналогичной проблемы, которая была решена с помощью более новой версии Net::DNS.   -  person Steffen Ullrich    schedule 16.02.2015


Ответы (1)


Функциональность TSIG в Net::DNS была полностью переписана примерно в 0.74, и с тех пор в большинстве выпусков были исправлены ошибки для некоторых аспектов TSIG. Я бы посоветовал вам попытаться забыть, как это работало раньше, перечитать всю соответствующую документацию, а затем изменить свой собственный код по мере необходимости.

Кроме того, 0,74 (в этом контексте) довольно старый. Вероятно, было бы неплохо перейти на что-то более близкое к текущему (то есть 0,82, когда я пишу это).

person Calle Dybedahl    schedule 16.02.2015
comment
хорошо, версия 0.82 работает. я уже изменил код, чтобы он соответствовал документам 0.74. после обновления до 0.82 код заработал без дальнейших изменений. также некоторые функции/поведение, которые должны работать в 0.74 в соответствии с документацией 0.74, больше не являются частью документации 0.82. я полагался на 0.74, чтобы быть достаточно стабильным, потому что сейчас он находится в стабильной ветке gentoo. большое спасибо ! - person Nico Rittner; 16.02.2015