最初にまとめ
・IEのプロキシ設定の『ローカルアドレスにはプロキシサーバーを使用しない』の意は『URLにドットが含まれていなければProxyを使わない』
・どうしても websv.contoso.localのような記述でアクセスしたければ、プロキシの例外設定に『*.contoso.local』のように書いておく
websvではアクセスできるのにwebsv.contoso.localではアクセスできない
とあるオンプレのWebサーバーにActiveDirectoryのアカウントでSSOしたいということで、ADFSサーバーを建てる羽目にことになり、構築は順調に進みテストをしてみたところ、なぜかアクセスできない。いろいろと検証してみたところ、
https://websv.contoso.local/adfs/ls/IdpInitiatedSignOn.aspx
→ 到達不可 通信を見るとローカルアドレスなのになぜかプロキシに通信が向いている プロキシの設定を外すとアクセスできた
https://websv/adfs/ls/IdpInitiatedSignOn.aspx
→アクセスできるが証明書の警告(サーバー証明書をwebsv.contoso.localで発行しているので警告は特に問題ない)
という事象であることが発覚。ローカルでしか使わないので所謂オレオレ証明書を使っていました。じゃあ証明書変えればええやんと新しくwebsvで発行したのですが、2016のADFSはIISから証明書の設定できなくて、証明書の更新手順だけでは上手くいかず段々めんどくさく、そもそも、ドメインサフィックス追加したらプロキシに通信行くのはおかしいだろ といろいろ調べてみたところ……
MicroSoft MVPを受賞されている胡田さんの10年前の記事にすべて書いてありました。windowsadmin.ebisuda.com
「ローカルアドレスにはプロキシサーバーを使用しない」という設定がくせ者です。この設定の名称だけを見ると、「名前解決をした結果のIPアドレスが、同一サブネット内に存在すれば」というような意味合いに思ってしまいがちです。
でも、よく考えてみると、Proxyサーバーを利用するケースではそもそも名前解決はホストでは実施せず、名前解決の段階からProxyにすべてを任せます。ですので、上記の解釈はそもそも成り立たないわけです。
で、結論としては、この設定は
- 「URLの中に.(ドット)があればローカルアドレスではない(Proxyを使う)」
- 「URLの中に.(ドット)がなければローカルアドレスである(Proxyを使わない)」
という意味になります。
いやーこれどう考えてもトラップだろ・・・
プロキシ例外に*.contoso.localを追加
最終的には *.contoso.localをプロキシ例外に追加して、無事にhttps://websv/adfs/ls/IdpInitiatedSignOn.aspxでアクセスできるようになりました。
まさかの展開??
Happy ever after かと思いきや、少しオチがあって、スクショ用に手元のプロキシ設定をキャプチャーしたろ!と思ったところ……
え、これデフォルトで*.local入ってますやん……Proxyの設定は a long time ago in agaraxy far,far away に設定されたもので、僕は悪くないんですが(重要)うちのADポリシーで配布しているプロキシ設定には*.localは入っていなかったみたいですね…
まとめ
IEのプロキシ設定の『ローカルアドレスにはプロキシサーバーを使用しない』の説明がトラップですね。人に誤解なく何かを伝えるってのは難しいですね。簡潔な文章で伝わるほうが良いですが、省略しすぎても必要な事柄が伝わらない…誤解なく人と人とが分かり合えるように人類は早くニュータイプに覚醒しないといけないですね。