非常感谢Ronald Beekelaar,他做的ISA Server 2004 LAB是如此的精致,只需要我些许的修改几个地方,就可以完成这个比较复杂的试验)
很多朋友提出了在域环境中不能正确配置ISA Server 2004的问题,主要集中在无法引用域用户和DNS无法解析。在这篇文章中,我以一个域环境实例,来给大家介绍如何在域环境中配置ISA Server 2004。从这篇文章,你可以学习到如何在域环境中配置ISA防火墙、启用域用户的身份验证、配置内部客户、配置域控上的DNS转发和建立访问规则。
这个试验的网络拓朴结构如下图所示:
这是一个由三台计算机组成的域环境,也许看起来很简单,但是却已经足以模拟域环境中配置ISA Server中的大部分操作。其中:
- Denver(DC/Dns server)
FQDN:denver.contoso.com;
IP :10.2.1.2/24;
DG:10.2.1.1;
DNS:10.2.1.2;
备注:这是一台域控,默认网关是ISA Server的内部接口,DNS设置为本机。
- Florence (ISA Server 2004)
FQDN:Florence(目前还处于工作组环境,没有加入域,我会在后面的操作中将其加入域);
(1)Internal Interface:
IP:10.2.1.1/24
DG:none
DNS:10.2.1.2
(2)External Interface:
IP:61.139.1.1/24
DG:61.139.1.1
DNS:none
备注:ISA Server上的IP设置比较讲究,首先DNS只能设置为内部AD的DNS服务器,然后默认网关为外部出口。
- Sydney(Dns/Web server)
FQDN:www.isacn.org
IP:61.139.1.2/24
DG:61.139.1.1
DNS:61.139.1.2
备注:这台计算机用来模拟外部的DNS和Web服务器。后面我们会在内部的DC上设置DNS的转发,将非域的DNS解析请求转发到此DNS服务器上,然后通过域名www.isacn.org来访问这台Web服务器上的一个Web站点。
在这篇文章中,我们会通过以下步骤来为内部域中配置ISA Server 2004防火墙:
- 在独立服务器上安装ISA防火墙;
- 将ISA防火墙计算机加入域;
- 在ISA防火墙上对域管理员进行ISA完全控制的授权;
- 建立通过验证的域管理员访问外部所有协议的访问规则;
- 测试该访问规则,通过IP地址来访问外部的Web服务器;
- 在内部AD的DNS服务器上设置DNS转发;
- 建立访问规则,允许内部网络的所有用户访问外部的DNS服务;
- 测试内部DNS解析请求的转发,并通过域名来访问外部的Web站点;
- 配置ISA防火墙,允许其访问外部站点
1、在独立服务器上安装ISA防火墙
关于ISA Server 2004的安装已经有多篇文章介绍了,在此就不重复。根据本次试验的网络拓朴结构,在内部网络选择时,通过添加适配器来勾选内部网络接口就可以了。安装好后,内部网络如下图所示:
此时,在防火墙策略中只有默认规则:
虽然只有默认规则,但是ISA防火墙的系统策略中是允许ISA防火墙访问域服务,所以我们依然可以访问内部的域。
2、将ISA防火墙计算机加入域
现在我们需要将Florence加入到内部域中。使用管理员账号登录Florence,右击我的电脑,打开系统属性,然后在计算机名页,点击更改;在弹出的计算机名称更改页,点击隶属于列表下面的域,然后输入内部域的名字Contoso.com,然后点击确定。
此时,系统会让你输入有加入该域权限的账户,输入域管理员账号和密码,点击确定;
系统验证无误后,会弹出欢迎加入contoso.com域的对话框,点击确定;
系统会提示你需要重启计算机,点击确定,然后重启ISA防火墙计算机;
3、在ISA防火墙上对域管理员进行ISA完全控制的授权
由于我是先安装ISA Server 2004,然后再加入域,此时,域管理员没有对ISA Server的管理权限。如果是计算机先加入域然后再安装ISA Server,那么域管理员也会有完全的管理权限,这一步就可以省略了。
现在,我们需要对域管理员进行ISA Server的完全管理授权:
首先使用本地管理账户登录ISA计算机,
打开ISA管理控制台,点击常规,再点击右边面板的管理委派,
此时弹出ISA服务器管理委派向导,点击下一步;
在委派控制页,点击添加;
在管理委派对话框,点击浏览;
在选择用户和组对话框,输入contoso\domain admins,点击确定;
由于此时是登录到本机,没有contoso域的浏览权限,所以系统会提示你输入对contoso.com有权限的账号,在此输入域管理员账号,点击确定;
然后在管理委派页点击确定;
在委派控制页,点击下一步;
在完成管理委派向导页,点击完成;
4、建立通过验证的域管理员访问外部所有协议的访问规则
现在我们可以使用域管理员账号来登录了,
然后打开ISA管理控制台,右击防火墙策略,然后点击新建,选择访问规则;
在新建访问规则向导页,输入规则的名字,在此我们命名为Allow Domain Admins access External,点击下一步;
在规则操作页,选择允许;点击下一步;
在协议页,选择所有出站通讯,点击下一步;
在访问规则源页,选择内部,点击下一步;
在访问规则目标页,选择外部,点击下一步;
在用户集页,删除默认的所有用户,点击添加,
在添加用户对话框,点击新建;
在欢迎使用新建用户集向导页,输入用户集名称,在此我们命名为Domain Admins,点击下一步;
Active Server Pages 错误 'ASP 0201'
无效的默认脚本语言
为此应用程序指定的默认脚本语言无效。
平台: Windows 2003 IIS 6.0
解决方法(对我的电脑适用,不知对别人是否有效,仅作参考):
1、在控制面板里,删除IIS组件。
2、删除C:\Inetpub目录。
3、重新安装IIS。
4、如果不行就试一下IIS管理器里的“重新启动IIS”
我的Discuz 4.1是在Apache+Php+Mysql下运行的,并开启了Url Rewrite,之后我发现整个论坛的大部分页面都可以使用html的静态地址方式来访问,感觉真不错,Apache实在太强大了,难怪现在用Apache的站点那么多。
IIS下能否也实现这种静态化功能呢,我知道Helicon开发了一个叫ISAPI_Rewrite的ISAPI程序,可以在IIS下实现Url Rewrite功能,不过我自己还没有尝试过,过两天按照下面的操作测试一下看看效果如何。另外,下文Discuz提供的ZIP文件里的Rewrite.dll实际上就是Helicon的ISAPI_Rewrite程序,我对Discuz做为软件开发商居然也盗版同行的软件感到遗憾。
参考文章:Discuz!4.1.0 IIS Rewrite配置方法(转自DISCUZ会员区)
Discuz! URL静态化功能受到论坛所在服务器环境的制约,在开启此功能之前,请根据你的Web服务器环境,选择相应的环境配置方法,以下提供的iis6下的服务器配置..其它服务器(如apache,zeus)你可以根据原理自行配置。
1、下载IIS Rewrite模块:http://download.discuz.net/4.1.0/discuz_iis_rewrite.zip;
2、将压缩包解压到任意目录,(如:C:\Rewrite)。然后打开“控制面板”-“管理工具”-“IIS信息服务管理器”-“网站”-“您的站点”-“属性”。在“ISAPI筛选器”项点击“添加”,筛选器名称填入Rewrite,可执行文件为C:\Rewrite\Rewrite.dll;
3、重新启动IIS就可以生效了。
通过上述配置后,您就可以在Discuz!4.1.0后台中根据需要开启影响的静态功能了。
无:不启用URL静态化功能。
Discuz!Archiver静态化:当论坛启用Archiver功能时,Archiver内的所有链接均采用*.html形式。
普通页面静态化:对论坛常用页面(如forumdisplay.php、viewthread.php、viewpro.php等)进行URL静态化转换。
Archiver和普通页面均静态化:对Archiver以及论坛常用页面(如forumdisplay.php、viewthread.php、viewpro.php等)进行URL静态化转换。
使用注意事项:
您可以通过系统设置中Discuz!选项来控制URL静态化的打开或关闭及其工作状态,本功能对服务器环境有特殊要求,独立主机用户需要对Web服务器增加相应的Rewrite规则,因此需要服务器权限才可使用;对于虚拟主机用户,您需要向您的空间服务商进行咨询:空间是否支持Rewrite以及是否支持对站点目录中.htaccess的文件解析,只有满足这两条件,URL静态化功能才会生效。打开URL静态化后,论坛一些常用链接会变成类似discuz/forum-1-1.html形式,如果您的服务器环境不支持或者尚未配置好,访问这些链接会出现“网页无法显示”的错误信息,论坛将无法正常访问。发生无法访问的现象时,请您进入管理后台,关闭URL静态化功能,论坛即可恢复正常状态。
本文提供的压缩包中还有一个httpd.ini文件,该文件是rewrite规则的配置文件。内容如下(无需修改):
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule ^(.*)/archiver/([a-z0-9\-]+\.html)$ $1/archiver/index\.php\?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay\.php\?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$$1/viewthread\.php\?tid=$2&extra=page\%3D$4&page=$3
RewriteRule ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro\.php\?$2=$3