LINUX.ORG.RU
решено ФорумAdmin

rDNS для интернет-узлов


0

0

Здравствуйте!
Что делать, если нужен rdns на одной машине, чтобы преобразование работало для целого списка ip-адресов из интернета (ну, допустим, 66.0.1.2, 198.0.0.7, т.е. не адреса какой-то одной подсети). У меня в bind есть настройка зоны domain.ru, можно ли заставить систему при rdns искать соответствие сначала в этой зоне, а потом уже отправлять запрос владельцу соответствующей подсети?

Или, может быть, есть файл, аналогичный /etc/hosts, но для rdns?



Последнее исправление: utandr (всего исправлений: 2)

Ответ на: комментарий от true_admin

Чтобы все красиво в лог-файлах было. А договариваться с владельцами зоны на предмет добавления rdns со всеми интересующими провайдерами мне не хочется, к тому же они постоянно забывают про то, что это кому-то нужно, и меняют свои rdns записи как угодно.

Ведь задача-то логически очень простая: узел через bind знает список узлов домена и их ip-адреса. Как сделать, чтобы эта информация использовалась не только для dns, но и для rdns.

utandr
() автор топика
Ответ на: комментарий от utandr

как раз логически она сложная потому что между собой «прямая» и «обратная» записи никак не связаны. На один ip можно повесить много прямых зон.

Хотя рациональное зерно в твоём предложении есть и, например, djbdns(или как это поделие называется) поддерживает записи типа IN+PTR когда прямая автоматом попадает и в обратку.

К сожалению не могу посоветовать прямо в том виде что ты хочешь, а костыли советовать не хочется. Попробуй посмотреть различные ДНС-серверы на предмет реализации обратных записей. Вроде тот же bind умеет вызывать внешние скрипты для резолвинга и лазить в базу. PowerDNS точно так умеет, он может тебе подойти без костылей. Точнее сказать не могу, сто лет это хозяйство не настраивал.

true_admin ★★★★★
()

Сам себе отвечаю:

named.conf:
zone «in-addr.arpa» {
   type master;
   file «/etc/bind/dir.DOMAIN.reverse»;
};

Создаем файл из пустого /etc/bind/db.empty (который уже есть в системе) и добавляем там записи вида
4.3.2.1 IN PTR hostname.
точка в конце обязательна.
Перезапускаем.

Написал скрипт для обработки файла из основной зоны в обратную.
Скрипт:
#!/bin/sh
BASEDIR=/etc/bind/
PROTO=db.empty
DNS=dir.DOMAIN
RDNS=dir.DOMAIN.reverse
cat $BASEDIR$PROTO > $BASEDIR$RDNS
cat $BASEDIR$DNS | grep -w A | grep ^[a-z] | sed -e 's/\;$//' -e 's/\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)/\4\.\3\.\2\.\1/' | awk '{print $3 «\t\tIN PTR\t» $1 ".DOMAIN.«}' >> $BASEDIR$RDNS
exit 0
sed -e 's/\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)\.\([0-9]\{1,3\}\)/\4\.\3\.\2\.\1/'
--
Можно, конечно, еще и серийный номер увеличивать. Но я посмотрел - и без него работает, кажется, он в данном случае не актуален.
Если кто улучшит скрипт, дайте знать - я впервые пользуюсь sed,awk и, кажется, у скрипта проблемы с обработкой комментариев и лишних символов в строках с A-записями в файле „прямой“ зоны.

utandr
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.