パスワードを忘れた? アカウント作成
519536 journal

witchの日記: 自動プロキシ設定スクリプトの myIpAddress() の動作

日記 by witch

仕事上の都合でひさしぶりに proxy.pac 作ってたりするわけですが…

そのパソコンが特定のネットワーク(VPNなわけだけど)に繋がっている時だけ有効になる proxyルールを作ろうとして、myIpAddress()を使ってみたら…
WindowsだとmyIpAddress()が自分のIPアドレスを調べるタイミングが期待はずれ(しかもFirefoxとIEで挙動が違う)だったり、MacOSX(Firefox)だとループバックアドレス返してくれたり(意味ないじゃんよ)してなかなか微妙。
なんか使い方間違ってるのかな…

参考:
Navigator Proxy Auto-Config File Format (from netscape.com)
JavaScript または JScript を使った自動プロキシ ファイルの例 (from microsoft.com)

サンプルプログラム (FindProxyForURL()のalert出力はFirefoxはJavaScriptコンソール、IEはメッセージBOXに出ます)

function FindProxyForURL(url, host) {
    alert(myIpAddress());
    return "DIRECT";
}

いろいろな局面での挙動
PCはBフレッツに繋がっている状態でテスト

  • Windows (Firefox 1.5)
    • VPN接続前 : 出力: Bフレッツ割り当てアドレス
    • VPN接続後 : 出力: 10.64.XX.XXX (VPNクライアント割り当てアドレス)
    • VPN切断後 : 出力: 10.64.XX.XXX (VPNクライアント割り当てアドレス) おいっ!

      VPNに接続してしまうと、切断後も myIpAddress()がVPNのアドレスを返します。
      一度、ブラウザを再起動するまでVPN側インターフェースが無くなったことに気付かない。

  • Windows (Internet Explorer 6)
    • VPN接続前 : 出力: Bフレッツ割り当てアドレス
    • VPN接続後 : 出力: Bフレッツ割り当てアドレス おいっ!

      VPN接続後は新しいウィンドウを開かないとVPN側インターフェースの存在に気付かない。
      ウィンドウを開くときにネットワーク設定を評価するのかしらね。
      同じことは、VPN切断時にも発生。
      再起動がいらないところは Firefox よりまし。

  • Mac OS X (Firefox 1.5)
    • VPN接続前 : 出力: ループバックアドレス (127.0.0.1) おいおい… (- -;;

こんな状態で proxy.pacリリースしたらユーザーから苦情が来そう…
WindowsはまだしもMacOSXじゃ使えそうにないですね。
proxy.pac の中で ajax みたいなことできないかな…。
そうすればサーバ側から「きみのIPアドレスはフガホゲ」って返せるのに。

VPN接続時と切断時で同じサーバへのルーティング設定を変えているので必ず返事ができる&クライアントIPのチェックができる
…はず。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

計算機科学者とは、壊れていないものを修理する人々のことである

読み込み中...