使用DNS提供程序阻止/允许来自IP提供商no-ip.org htaccess

时间:2012-08-06 00:00:38

标签: apache .htaccess dns ip

我有一个安全的网站(.htaccess =全部拒绝),我想允许某些人访问

但是,他们正在使用移动笔记本电脑并且ISP已经为其分配了动态IP

所以,我下载了no-ip client,它应该为他们提供一个可以解析为IP的主机。

然而,当我把

Allow from xxx.no-ip.org

在.htaccess文件中,我仍然会看到禁止的页面。

我允许其他固定IP位置 - 并且正在工作 - 我已经测试了xxx.no-ip.org使用http://www.webyield.net/ipa.php解析为我想要的IP。

我在这里做错了什么想法?

2 个答案:

答案 0 :(得分:2)

Apache AllowDeny规则使用通配符(例如Allow from *.example.com),因此在反向DNS上工作。您的用户的IP地址没有转换为no-ip.org地址(它们可能解析为特定于ISP的某些内容),因此Apache拒绝他们访问。

您可能最好只为他们提供所有用户名和密码,并使用HTTP身份验证(通过mod_authz_user或类似方式)授予他们访问权限。

答案 1 :(得分:0)

这可以通过使用脚本来实现(根据您的需要进行修改):

#!/bin/bash
# Dynamic IP .htaccess file generator
# Written by Star Dot Hosting
# www.stardothosting.com

dynDomain="$1"
htaccessLoc="$2"

dynIP=$(/usr/bin/dig +short $dynDomain)

echo "dynip: $dynIP"
# verify dynIP resembles an IP
if ! echo -n $dynIP | grep -Eq "[0-9.]+"; then
    exit 1
fi

# if dynIP has changed
if ! cat $htaccessLoc | /bin/grep -q "$dynIP"; then

        # grab the old IP
        oldIP=`cat /usr/local/bin/htold-ip.txt`

        # output .htaccess file
        echo "order deny,allow" > $htaccessLoc 2>&1
        echo "allow from $dynIP" >> $htaccessLoc 2>&1
        echo "allow from x.x.x.x" >> $htaccessLoc 2>&1
        echo "deny from all" >> $htaccessLoc 2>&1

        # save the new ip to remove next time it changes, overwriting previous old IP
        echo $dynIP > /usr/local/bin/htold-ip.txt
fi

不仅仅是cron它在.htaccess文件上生成一个新行:

*/15 * * * * /bin/sh /usr/local/bin/.sh yourhostname.no-ip.org /var/www/folder/.htaccess > /dev/null 2>&1

来源:https://www.stardothosting.com