Назад | Перейти на главную страницу

Apache: разрешить из домена без использования обратного просмотра

Я хочу разрешить доступ к папке с «доменного имени» вместо IP-адреса в apache. Сейчас, allow from принимает домены в качестве аргументов, но я думаю, что он также выполняет обратный поиск DNS для перекрестной проверки (что хорошо, но слишком строго для меня). Есть ли способ настроить apache, чтобы не выполнять обратную проверку DNS (для этого конкретного allow from директива).

((В принципе, я хочу разрешить доступ только с моего ПК, у которого есть динамический IP-адрес. Я сопоставил его с доменом с помощью DynDns - однако обратный поиск моего «динамического IP» не разрешит домен)).

В качестве альтернативы, если кто-то может предложить бесплатную службу, которая также настраивает обратный поиск DNS для моего динамического IP-адреса (не знаю, возможно ли это с самого начала), это тоже поможет.

Спасибо!

JP

Обновить: Если у вас версия Apache> = 2.4.19, вы можете использовать

Require forward-dns yourhost.example.com

Это не делает обратный поиск. И, конечно же, тогда требуются полные имена хостов. Видеть Документы Apache по «Требовать пересылки DNS» для подробностей.

Для более старых версий Apache:

Обычно вы не можете использовать «Разрешить от» с динамическими хостами (для которых обратный DNS обычно указывает на вашего провайдера). Но я все равно хотел этого для некоторых страниц, которые не стоили защищать аутентификацией. Так что это мой обходной путь.

Мой сервер настроен на использование файла / etc / hosts перед DNS. Это делается путем добавления order hosts,bind к /etc/host.conf:

# cat /etc/host.conf 
order hosts,bind
multi on

У меня есть задание cron, обновляющее файл hosts каждые 15 минут с моими текущими динамическими внешними IP-адресами. В моем случае у меня есть собственный поддомен на собственном DNS, и я хочу обновить несколько хостов. Скрипт обновления, который я вызываю из cron:

#!/bin/sh
## Update /etc/hosts with our dynamic hosts

# dig ends the domain name with a dot, so we need it
domain=dyn.example.com.

die() {
    echo "$1" 1>&2
    exit 1;
}

tmpfile=$(mktemp "/tmp/hosts.XXXXX")
cp -a /etc/hosts $tmpfile || die "Cannot copy /etc/hosts to $tmpfile"

perl -i -ne "print unless /\Q$domain\E\s/" $tmpfile || die "Cannot remove $domain from $tmpfile"

dig -t AXFR $domain | \
  perl -lne '/^(\S+)\s+\d+\s+IN\s+A\s+(\S+)/ && print "$2 $1"' >> $tmpfile \
  || die "Cannot add $domain entries to $tmpfile"

mv $tmpfile /etc/hosts || die "Error cannot mv $tmpfile to /etc/hosts"

Если вам нужно обновить один хост, ваш сценарий может быть намного проще.

Короткий ответ - нет, поскольку Apache Allow from должен выполнить обратный и прямой поиск DNS:

"Эта конфигурация заставит Apache выполнить двойной обратный поиск DNS по IP-адресу клиента, независимо от настройки директивы HostnameLookups. Он выполнит обратный поиск DNS по IP-адресу, чтобы найти соответствующее имя хоста, а затем выполнит переадресацию поиск по имени хоста, чтобы убедиться, что оно совпадает с исходным IP-адресом. Доступ будет разрешен только в том случае, если прямой и обратный DNS согласованы и совпадают имена хостов ».

Я бы порекомендовал поставить какую-то аутентификацию в этом конкретном каталоге, а не пытаться ограничивать по имени хоста.