会社のインターネット接続環境は、プロキシ経由になっている。大小の様々なグループ会社が複雑に絡み合い今日も廻ってる*1感じのネットワークになっているので、イントラネットサイトとインターネットサイトへの接続時、どのプロキシを経由するのかは、会社公開の自動設定スクリプト(proxy.pac)によって判断されている。
自動設定スクリプトがどのようなものかは、以下参照。
https://technet.microsoft.com/ja-jp/library/cc985335.aspx
ある日、IE11で仕事上必要なwebサイトに接続しようとしたところ、プロキシに拒否された。理由はアップローダーだからとのこと。まあ、拒否された理由もわかるけど、閲覧が必要だったため、情報システム部に閲覧申請を行って、そのページが見られるようにプロキシを設定してもらった。
しかし、閲覧設定したにも関わらず、閲覧できるPCと閲覧できないPCが発生したのだった。PCの設定を見比べてみるも、IPアドレス以外に違いはない。ソースIPアドレスで制限をかけているのかと思ったが、ソースIPアドレス帯で制限かけているとのことで、それは比較したPCで同一だった。
ということで、自動設定スクリプトを読んでみることにした。スクリプトによれば、接続先がイントラネットなら、プロキシを通さずダイレクト接続*2。イントラネットでなければ、接続元のIPアドレスによって、プロキシサーバを変える*3という作りになっており、特に問題無さそうであった。
スクリプトが正しく動作しているのか確認するため、netstatコマンドで接続先のプロキシを確認したところ*4、明らかに「ソースIPアドレスから期待されるプロキシ」とは異なるプロキシに接続されている。つまり、この自動設定スクリプトは、接続元のIPアドレスとして、想定と異なるIPアドレスを使用しているということだろう。
ipconfigコマンドでIPアドレスを確認したところ、イントラネット接続のIPアドレスはネットワークの優先度が2番目であった。よって、優先度を1番目に変更した*5ところ、無事正しいプロキシに接続されるようになった。
つまり、自動設定スクリプトのmyIpAdress関数は、実際にインターネット接続に使用しているIPアドレスではなく、ネットワーク優先度最上位のIPアドレスをソースアドレスと見なすということだろう。
いや、大変だった。
*1:http://jplyrics.com/j-pop-lyrics/shinka-ron-kasi.html
*2:https://technet.microsoft.com/ja-jp/library/cc985335.aspx#BKMK_Ex1
*3:https://technet.microsoft.com/ja-jp/library/cc985335.aspx#BKMK_Ex8
*4:プロキシのポート番号が8080なので、「netstat -na | findstr 8080」を実施
*5:https://masaog.wordpress.com/2008/10/07/%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%AE%E5%84%AA%E5%85%88%E5%BA%A6%E3%81%AE%E8%A8%AD/