-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750

需求描述:

使用一个公网IP发布CA、Exchange及OOS到外网,提供给Internet用户访问,本案采用IIS ARR实现相关应用的发布。

环境描述:

Exchange2016服务器两台,对外域名yuntcloud.net,两台服务器采用DAG,DAG的VIP为192.168.0.30

CA为主域服务器,IP:192.168.0.194

OOS服务器两台,采用NLB群集,单播,VIP:192.168.0.32

IIS ARR为反向代理服务器,两台,采用NLB群集,单播,VIP:192.168.0.31

操作步骤如下:

步骤1、安装ARR

在IISARR服务器上安装有两块网卡,一个用于内部网络,一个用于外部网络。(可以根据需要使用一块网卡也可以)

iis-arr-01的内网IP:192.168.0.115,外网IP:192.168.0.133

iis-arr-02的内网IP:192.168.0.112,外网IP:192.168.0.132

(微软ARR NLB环境官方文章是单网卡,没加域,修改计算机Netbios名称)

如果没有使用内部dns服务器,应该更新hosts文件,确保可以解析Exchange、OOS和发布的URL名称。

操作系统使用windows server 2012 R2,计算机名命名为iis-arr-01.zh-yunner.com和iis-arr-02.zh-winner.com(注:不用加域,也是支持Windows server 2016环境,为什么我没选2016而是用2012 R2环境,我也不记得为什么了,反正2012 R2和2016都是受支持的)

软件下载及相关介绍及操作具体可参考如下网站:

https://www.iis.net/downloads/microsoft/application-request-routing

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/achieving-high-availability-and-scalability-arr-and-nlb

https://blogs.technet.microsoft.com/exchange/2013/07/19/part-1-reverse-proxy-for-exchange-server-2013-using-iis-arr/

https://blogs.technet.microsoft.com/nexthop/2013/02/19/using-iis-arr-as-a-reverse-proxy-for-lync-server-2013/

https://technet.microsoft.com/zh-cn/library/jj219455.aspx

http://masteringlync.com/2013/02/12/using-iis-application-request-routing-arr-as-a-tmg-replacement/

步骤2、IIS-ARR-01更改Netbios名称,不需要加域

clip_image002

步骤3、防火墙启用文件共享

clip_image004

步骤4、防火墙启用远程桌面

clip_image006

步骤5、在内部接口上创建连接到客户端或服务器所在的所有内部网络的永久静态路由,我们设置指向内部网络的永久静态路由,参考命令如下:

route add 192.168.0.0 mask 255.255.0.0 192.168.0.253 -p

[注:由于我环境的两个IIS ARR服务器均为虚拟机,内网卡和外网卡的网段一致,已经有了到网关的路由,所以就不添加了]

在两个IIS ARR服务器安装NLB组件,

clip_image008

步骤6、由于都是hyper-V虚拟机,故采用单播,且启用MAC地址欺骗。(两块网卡都启用MAC地址欺骗)

clip_image010

步骤7、使用WAN口网卡做NLB,外网访问的时候因为是连接到WAN口

clip_image012

clip_image014

步骤8、添加IIS ARR群集IP:192.168.0.31

clip_image016

步骤9、选择单播,保持默认即可,完整Internet名称此处不用填写

clip_image018

步骤10、添加IIS ARR两台机器到NLB群集

clip_image020

步骤11、下面为ARR的两台虚拟机及群集VIP的ARP信息,如果采用多播的话,我们需要ARP静态绑定到出接口G 0/0/1(我们目前的环境为防火墙为华为USG6350防火墙,三层交换机为华为S5700,在下联二层交换机,ARR虚拟机的两台宿主服务器都接在二层交换机,连接到上级的三层交换机接口G 0/0/1)

clip_image022

clip_image024

clip_image026

所以如果采用多播的方式的话ARP需要绑定并设置出接口端口为G 0/0/1,由于是测试环境,目前使用的是单播。

因为内部访问不用经过ARR反向代理,所以Mail、autodiscover、crl、oos及所有域名记录都指向到自己本身地址。

192.168.0.30为两台Exchange2016的DAG的VIP地址

192.168.0.31为两台ARR的NLB的VIP地址

192.168.0.32为两台OOS的NLB的VIP地址

192.168.0.194为CA服务器IP,用于发布crld吊销列表

clip_image028

步骤12、DNS服务器上新增两条A记录,IIS-ARR-01的内网卡IP:192.168.0.115,IIS-ARR-02的内网卡IP:192.168.0.112

clip_image030

步骤13、iis-arr-01和iis-arr-02 host文件都新加exchange内部和外部虚拟目录名称mail.yuntcloud.net和iis-arr两台计算机的fqdn完整计算机名称及Netbios名称,不填写可能因为解析不了造成NLB群集成员丢失,Exchange服务器的FQDN及OOS、CRL名称也需要加上。

clip_image032

clip_image034

步骤14、在IIS ARR服务器上安装ARR3.0。

https://www.iis.net/downloads/microsoft/application-request-routing

clip_image036

clip_image038

clip_image040

clip_image042

clip_image044

步骤15、安装完成后,在IIS管理器中出现了Server Farms

clip_image046

步骤16、选择IIS-ARR-01的default web site,我们需要给IIS ARR的两台服务器绑定证书

clip_image048

步骤17、拷贝之前我们已经导出的Exchange证书,选择IIS根目录,切换到证书,选择导入证书

clip_image050

步骤18、导入后入下图

clip_image052

步骤19、在默认站点中绑定证书

clip_image054

步骤20、如果需要使用pop和imap,注意域名外网发布,建议外网mail和pop使用同一个公网IP,客户端pop模式可以设置pop或者mail域名。

域名名称信息如下:

证书使用者

CN = mail.yuntcloud.net

OU = IT

O = 风云再起信息科技有限公司

L = 珠海市

S = 广东省

C = CN

使用者可选名称

DNS Name=mail.yuntcloud.net

DNS Name=AutoDiscover.yuntcloud.net

DNS Name=zh-winner.com

DNS Name=yuntcloud.net

DNS Name=pop.yuntcloud.net

DNS Name=imap.yuntcloud.net

DNS Name=smtp.yuntcloud.net

DNS Name=ex2016.zh-winner.com

DNS Name=ex2016-02.zh-winner.com

DNS Name=oos.yuntcloud.net

步骤21、同时安装CA根证书,安装后我们点击看证书路径,可以发现CA根证书已经导入好

clip_image056

步骤22. 下面开始配置Exchange服务器所需要的服务器场,配置Server Farms(注:以下为给每个Exchange目录设置一个目录路径,可以对每个http路径健康检测,因为我们的环境都是使用同一个域名mail,如是和我环境一致,请跳过此步骤)

针对每个单独的协议,创建单独的Server Farms和URL重写规则,这样就可以对每个协议执行健康检查,重而提供真正的反向代理和负载均衡配置。

下面是IIS ARR实现每个协议的健康检查

clip_image057

  1)确保每个发布的协议都使用不同的命名

Get-OWAVirtualDirectory | FL Server, InternalURL, ExternalURL  
Server      : TS-E2013-CA-01   
InternalUrl : https://mail.contoso.com/OWA

ExternalUrl : https://mail.contoso.com/OWA

Server      : TS-E2013-CA-02  
InternalUrl : https://mail.contoso.com/OWA

ExternalUrl : https://mail.contoso.com/OWA

Get-ECPVirtualDirectory | Fl Server, InternalURL, ExternalURL  
Server      : TS-E2013-CA-01   
InternalUrl : https://ecp.contoso.com/ECP

ExternalUrl : https://ecp.contoso.com/ECP

Server      : TS-E2013-CA-02  
InternalUrl : https://ecp.contoso.com/ECP

ExternalUrl : https://ecp.contoso.com/ECP

Get-WebServicesVirtualDirectory | fl Server, InternalURL, ExternalURL  
Server      : TS-E2013-CA-01   
InternalUrl : https://ews.contoso.com/EWS/Exchange.asmx

ExternalUrl : https://ews.contoso.com/EWS/Exchange.asmx

Server      : TS-E2013-CA-02  
InternalUrl : https://ews.contoso.com/EWS/Exchange.asmx

ExternalUrl : https://ews.contoso.com/EWS/Exchange.asmx

Get-ActiveSyncVirtualDirectory | fl server, InternalURL, ExternalURL  
Server      : TS-E2013-CA-01   
InternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync

ExternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync

Server      : TS-E2013-CA-02  
InternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync

ExternalUrl : https://eas.contoso.com/Microsoft-Server-ActiveSync

Get-OABVirtualDirectory | fl server, InternalURL, ExternalURL  
Server      : TS-E2013-CA-01   
InternalUrl : https://oab.contoso.com/OAB

ExternalUrl : https://oab.contoso.com/OAB

Server      : TS-E2013-CA-02  
InternalUrl : https://oab.contoso.com/OAB

ExternalUrl : https://oab.contoso.com/OAB

Get-OutlookAnywhere | fl server, *hostname*  
Server           : TS-E2013-CA-01   
ExternalHostname : oa.contoso.com   
InternalHostname : oa.contoso.com

Server           : TS-E2013-CA-02  
ExternalHostname : oa.contoso.com   
InternalHostname : oa.contoso.com

2)创建Server Farms,每个协议的服务器场创建完成后,添加健康测试URL

健康测试格式https://FQDN/ProtocolName/HealthCheck.htm   

Server Farm

Health Test URL

autodiscover.contoso.com

https://autodiscover.contoso.com/Autodiscover/HealthCheck.htm

OA.contoso.com

https://oa.contoso.com/rpc/HealthCheck.htm

mail.contoso.com

https://mail.contoso.com/owa/HealthCheck.htm

ECP.contoso.com

https://ecp.contoso.com/ecp/HealthCheck.htm

EWS.contoso.com

https://ews.contoso.com/ews/HealthCheck.htm

OAB.contoso.com

https://oab.contoso.com/oab/HealthCheck.htm

EAS.contoso.com

https://eas.contoso.com/Microsoft-server-ActiveSync/HealthCheck.htm

Mp.contoso.com

https://mp.contoso.com/mapi/HealthCheck.htm

步骤23、我们这里使用的同样的虚拟目录,ex2016和ex2016-02服务器内部和外部都使用mail.yuntcloud.net

clip_image059

步骤24、切换到server farms,选择create server farm

clip_image061

步骤25、server farm name:mail.yunrcloud.net(或者是任何一个可标识此server farm的名称都可以)

clip_image063

步骤26、添加两台Exchange服务器名称

clip_image065

步骤27、添加后如下图,当然这里我们也可以从对应的服务器场随时移除指定服务器

clip_image067

步骤28、点击是

clip_image068

步骤29、选择建好的服务器场mail.yuntcloud.net

clip_image070

步骤30、继续选择caching,反选Enable disk cache

clip_image072

步骤31、Health Test设置,如果对应的Server Farms是单机环境此处可以为空,如果有多台服务器,此处则需填写相关URL,才能对相关服务器执行健康检测

Health Test URL:https://mail.yuntcloud.net/owa/healthcheck.htm

Interval(seconds):5

Time-out(seconds): 30

Acceptable status codes: 200

clip_image074

步骤31、我的环境是IIS ARR 3.0,Load balance保持默认即可,如果是IIS ARR 2.5, 此处选择Least Current Request.

clip_image076

步骤32、monitoring and management,我们可以看到添加的两台服务器状态,health status为unhealthy,说明这个服务器相关服务不正常或者宕机,客户端请求就不会在向对应的服务器继续发送。

clip_image078

步骤33、proxy设置

Time-out(seconds): 200

Response buffer threshold:0

clip_image080

clip_image082

步骤34、routing rules,反选enable ssl offloading

clip_image084

步骤35、不带SSL的因为用不到,此处删除或者禁用

clip_image086

步骤36、选择URL重写,编辑入站规则

clip_image088

clip_image090

clip_image092

步骤37、添加条件

条件输入:{HTTP_HOST}

模式:mail.yuntcloud.net

clip_image094

步骤38、添加后如下

clip_image096

步骤39、操作,操作属性,选择对应的服务器场

clip_image098

步骤40、类似步骤设置服务器场,autodiscover.yuntcloud.net

clip_image100

clip_image102

clip_image104

clip_image106

步骤41、设置完后,回到IIS根目录,设置允许的最大内容长度如下

clip_image108

步骤42、设置http到https的重定向

因为我们习惯输入网址mail.yuntcloud.net或者是http://mail.yuntcloud.net,所以我们需要在新建各规则,80跳转到https

名称:Redirect To HTTPS

clip_image110

步骤43、编辑入站规则

条件 {SERVER_PORT},类型 与模式匹配,模式 80

条件 {HTTP_HOST},类型 与模式匹配,模式 mail.yuntcloud.net

clip_image112

步骤44、操作 方案https://mail.yuntcloud.net/{R:0},停止处理后续规则

clip_image114

步骤45、两台ARR机器同样的操作,设置后,就实现了80到443的跳转

clip_image116

步骤46、因为IIS ARR只能代理80和443类似的HTTP端口,所以外网80和443端口指向到IIS ARR的NLB VIP地址,SMTP、POP及IMAP不能通过IIS ARR实现反向代理,所以只能指向到DAG的VIP:192.168.0.30,内网不用反向代理

clip_image118

步骤47、内网DNS记录如下:

clip_image120

步骤48、内网端口映射如下:

192.168.0.31为IIS ARR的NLB VIP地址

192.168.0.30为DAG的VIP地址

clip_image122

步骤49、外网域名设置如下:

所有相关域名都指向到公网IP:221.4.214.186

clip_image124

步骤50、客户端POP和IMAP设置如下:

clip_image126

分别关机IIS ARR中的一台和Exchange 2016中的一台,外网outlook均能在2分钟内完成故障转移和切换,停掉Exchange的OWA IIS应用池,outlook和owa将不会在访问故障的Exchange服务器,说明IIS ARR实现了应用层的7层负载均衡。(注:NLB为第三层网络层的负载均衡,只能识别到IP的非正常才切换,第四层负载均衡为IP加端口的传输层负载均衡的硬件负载均衡设备)

步骤51、如果需要IIS ARR发布Exchange同时发布OOS,我们需要首先修改ARR的证书以便包括Exchange和OOS的相关证书名称,为了统一,我把Exchange、OOS及ARR都更换为包括所有名称的证书。

步骤52、ARR的证书包括OOS的域名记录

证书使用者

CN = mail.yuntcloud.net

OU = IT

O = 风云再起信息科技有限公司

L = 珠海市

S = 广东省

C = CN

使用者可选名称

DNS Name=mail.yuntcloud.net

DNS Name=AutoDiscover.yuntcloud.net

DNS Name=zh-winner.com

DNS Name=yuntcloud.net

DNS Name=pop.yuntcloud.net

DNS Name=imap.yuntcloud.net

DNS Name=smtp.yuntcloud.net

DNS Name=ex2016.zh-winner.com

DNS Name=ex2016-02.zh-winner.com

DNS Name=oos.yuntcloud.net

步骤53、ARR的HOST记录如下

clip_image128

步骤54、创建office online server 对应的服务器场

参考如下网址:

http://masteringlync.com/2013/02/12/using-iis-application-request-routing-arr-as-a-tmg-replacement/

clip_image130

步骤55、创建所需的服务器场,如果更换证书,需要重建对应的服务器场

New-OfficeWebAppsFarm -InternalURL "https://oos.yuntcloud.net" -ExternalURL "https://oos.yuntcloud.net" -CertificateName arr -SSLOffloaded -AllowHttp -EditingEnabled

(注:-SSLOffloaded 允许卸载到负载平衡器的 SSL 端接)

clip_image132

步骤56、加oos02到服务器场

New-OfficeWebAppsMachine -MachineToJoin "oos.zh-winner.com"

clip_image134

步骤57、我们可以看到oos及oos02都加到了同一个服务器场

clip_image136

步骤58、场名:oos.yuntcloud.net

clip_image138

步骤59、添加对应的OOS服务器

clip_image140

clip_image142

clip_image144

步骤60、Caching设置如下

clip_image146

步骤61、Heath Test设置如下(如果有2台以上的服务器组成服务器场,这个就需要设置,否则关机一台后服务将可能打不开或者反应特别慢)

URL:https://oos.yuntcloud.net/hosting/discovery/healthcheck.htm

clip_image148

步骤62、Health status不健康的不会发送代理请求,否则即使关机也会显示为healthy,会继续接受发送请求。

clip_image150

步骤63、Proxy设置如下,time-out设置为200

clip_image152

Response设置为0

clip_image154

Routing Rules禁用SSL offloading

clip_image156

禁用或者删除没SSL的规则

clip_image158

步骤64、如果考虑同时使用HTTP的话,我们就保留这条规则

clip_image160

步骤65、相关设置如下,这样设置后,在外面,oos也能通过80端口访问

clip_image162

步骤66、继续设置带SSL的规则

clip_image164

使用选择正则表达式,模式(.*)

clip_image166

选择条件,添加,条件输入{HTTP_HOST},与模式匹配,模式:oos.yuntcloud.net

clip_image168

clip_image170

步骤67、操作选择路由到服务器场,选择对应的oos场

clip_image172

步骤68、我们可以继续发布CA的吊销列表

clip_image174

clip_image176

步骤69、添加server farm name:crl.yuntcloud.net

clip_image178

步骤70、添加dc01.zh-winner.com到对应的服务器场

clip_image180

步骤71、选择是

clip_image182

clip_image184

clip_image186

clip_image188

clip_image190

禁用带SSL的CRL规则

clip_image192

入站规则

条件输入:{HTTPS}

模式:^OFF$

clip_image194

clip_image196

clip_image198

clip_image200

步骤72、继续发布CA的Certsrv目录

在万网新增dc01记录,用于客户端自行下载CA根证书

clip_image202

步骤73、ARR的HOST文件设置如下,添加crl及dc01的内网FQDN地址

image.png

步骤74、create server farm…

clip_image206

步骤75、server farm name:dc01.yuntcloud.net

clip_image208

步骤76、server address:dc01.zh-winner.com

clip_image210

步骤77、选择是

clip_image212

反选Enable disl cache

clip_image214

Time-out:200

clip_image216

Response buffer threshold:0

clip_image218

反选Enable SSL offloading

clip_image220

URL重写禁用带SSL的

clip_image222

使用选择正则表达式,模式(.*)

clip_image224

添加条件如下,禁止https的访问,只允许http访问

clip_image226

编辑入站规则如下

clip_image228

最后设置效果如下

clip_image230

操作,选择对应的服务器场

clip_image232