インターネットへの接続でProxyを利用しているイントラネット環境においてMicrosoft/Office365の利用が増えてきた場合に考える必要が出てくるのがProxyの分散だろう。(ExpressRoute経由でMicrosoft Peeringを使用している場合はその必要はないだろうが)
PowerShellでO365用Pacのひな形が作成できるようなのでやってみる。
①新規にGuidを生成
PS C:\> New-Guid Guid ---- 6ea6e89f-b85e-4076-8319-e6cd6d17a747 PS C:\>
②Pacファイル生成
-TenantNameには自組織のテナント名称を指定、-ClientRequestIdには①で生成したGuid、-TenantNameには自組織のテナント名、-DefaultProxySettingsにはProxyサーバを指定。
PS C:> Get-PacFile.ps1 -ClientRequestId af4a1b07-c765-4aa2-b8fa-b9ffbf3b6d1d -TenantName mytenantName -Instance WorldWide -Type 2 -DefaultProxySettings "PROXY 192.168.100.20:3128"
③生成されたPacのひな形
コマンド実行の出力は以下のとおり。(ファイルにリダイレクトしておけば良い)
そのまま使用することはできないが、ゼロから作成するよりはましだろうと思う。
// This PAC file will provide proxy config to Microsoft 365 services // using data from the public web service for all endpoints function FindProxyForURL(url, host) { var direct = "DIRECT"; var proxyServer = "PROXY 192.168.100.20:3128"; if(shExpMatch(host, "cdn.odc.officeapps.live.com") || shExpMatch(host, "excelcs.officeapps.live.com") || shExpMatch(host, "mrodevicemgr.officeapps.live.com") || shExpMatch(host, "ocsa.officeapps.live.com") || shExpMatch(host, "ocsredir.officeapps.live.com") || shExpMatch(host, "ocws.officeapps.live.com") || shExpMatch(host, "odc.officeapps.live.com") || shExpMatch(host, "odcsm.officeapps.live.com") || shExpMatch(host, "ols.officeapps.live.com") || shExpMatch(host, "pptcs.officeapps.live.com") || shExpMatch(host, "roaming.officeapps.live.com") || shExpMatch(host, "statics.teams.microsoft.com") || shExpMatch(host, "uci.officeapps.live.com") || shExpMatch(host, "wordcs.officeapps.live.com")) { return proxyServer; } if(shExpMatch(host, "*.broadcast.skype.com") || shExpMatch(host, "*.lync.com") || shExpMatch(host, "*.mail.protection.outlook.com") || shExpMatch(host, "*.manage.office.com") || shExpMatch(host, "*.msftidentity.com") || shExpMatch(host, "*.msidentity.com") || shExpMatch(host, "*.officeapps.live.com") || shExpMatch(host, "*.online.office.com") || shExpMatch(host, "*.outlook.office.com") || shExpMatch(host, "*.portal.cloudappsecurity.com") || shExpMatch(host, "*.protection.office.com") || shExpMatch(host, "*.protection.outlook.com") || shExpMatch(host, "*.skypeforbusiness.com") || shExpMatch(host, "*.teams.microsoft.com") || shExpMatch(host, "account.activedirectory.windowsazure.com") || shExpMatch(host, "account.office.net") || shExpMatch(host, "accounts.accesscontrol.windows.net") || shExpMatch(host, "admin.microsoft.com") || shExpMatch(host, "adminwebservice.microsoftonline.com") || shExpMatch(host, "api.passwordreset.microsoftonline.com") || shExpMatch(host, "autologon.microsoftazuread-sso.com") || shExpMatch(host, "becws.microsoftonline.com") || shExpMatch(host, "broadcast.skype.com") || shExpMatch(host, "clientconfig.microsoftonline-p.net") || shExpMatch(host, "companymanager.microsoftonline.com") || shExpMatch(host, "device.login.microsoftonline.com") || shExpMatch(host, "graph.microsoft.com") || shExpMatch(host, "graph.windows.net") || shExpMatch(host, "home.office.com") || shExpMatch(host, "login.microsoft.com") || shExpMatch(host, "login.microsoftonline.com") || shExpMatch(host, "login.microsoftonline-p.com") || shExpMatch(host, "login.windows.net") || shExpMatch(host, "logincert.microsoftonline.com") || shExpMatch(host, "loginex.microsoftonline.com") || shExpMatch(host, "login-us.microsoftonline.com") || shExpMatch(host, "manage.office.com") || shExpMatch(host, "mytenantName.sharepoint.com") || shExpMatch(host, "mytenantName-my.sharepoint.com") || shExpMatch(host, "nexus.microsoftonline-p.com") || shExpMatch(host, "nexus.officeapps.live.com") || shExpMatch(host, "nexusrules.officeapps.live.com") || shExpMatch(host, "office.live.com") || shExpMatch(host, "outlook.office.com") || shExpMatch(host, "outlook.office365.com") || shExpMatch(host, "passwordreset.microsoftonline.com") || shExpMatch(host, "portal.microsoftonline.com") || shExpMatch(host, "portal.office.com") || shExpMatch(host, "protection.office.com") || shExpMatch(host, "provisioningapi.microsoftonline.com") || shExpMatch(host, "smtp.office365.com") || shExpMatch(host, "teams.microsoft.com") || shExpMatch(host, "www.office.com")) { return direct; } return proxyServer; }
以上。