wiki:TipAndDoc/network/proxy

Version 7 (modified by mitty, 8 years ago) (diff)

--

proxy pac file

  • 注意
    • localhostなどについても、個別に設定しないとプロクシ経由で接続しようとする -> プロクシサーバが動いているノードのlocalhostに接続しようとする

myIpAddress

test on Firefox/IE/Chrome

  • IE 9
    • myIpAddress()はIPv4のアドレスを正しく返す
    • VPN接続によるデフォルトゲートウェイの変化にも追従(メトリック設定によってゲートウェイが変化しない場合は元のまま)
    • ゲートウェイが変化すると、iexplorer.exe再起動無しでプロクシ設定の再読込も行われる
    • ネットワークに変化がない状態でpacファイルを更新しても、再起動するまで反映されない模様
    • プロキシ自動設定ファイルのTIP - Admintech.jp

      return DIRECTを記述すると、Direct接続先はイントラネットとなります。

  • Chrome 23
    • alertの確認方法が不明
    • myIpAddress()はIPv4のアドレスを正しく返す模様
    • IE 9と同様に、ゲートウェイ変更時には、chromeの再起動無しにプロクシ設定の再読み込みが行われる
    • GoogleChrome に独立したプロキシ設定: な○の 屋
    • --proxy-pac-urlによるpacファイルの指定は、インターネットオプション > 接続 > LANの設定 > 自動構成スクリプト よりも優先される

example

  • chrome-proxy.pac
    function useProxy(host) {
        if (
                dnsDomainIs(host, "mitty.jp")
            ||  dnsDomainIs(host, "tsukuba.ac.jp")
        ) {
            return true;
        }
        return false;
    }
    
    function detectNet(ipaddr) {
        if (isInNet(ipaddr, "192.168.0.0", "255.255.255.0")) {
            // maybe local
            if (isInNet(dnsResolve("some.host.example.jp"), "192.168.0.0", "255.255.255.0")) {
                return 'LOCAL';
            }
            else {
                return 'UNKNOWN';
            }
        }
        if (isInNet(ipaddr, "192.168.100.0", "255.255.255.0")) {
            return 'GUEST';
        }
        
        return 'UNKNOWN';
    }
    
    var localnet = detectNet(myIpAddress());
    
    function FindProxyForURL(url, host) {
        if (! useProxy(host)) {
            return "DIRECT";
        }
        if (localnet == 'LOCAL') {
            return "PROXY proxy.local.example.net:8080";
        }
        if (localnet == 'GUEST') {
            // alternative port
            return "HTTPS proxy.example.net:8443";
        }
        
        return "HTTPS proxy.example.jp:443";
    }
    
  • HTTPSを使用しているので、chrome専用
  • mitty.jp, tsukuba.ac.jpで終わるドメインに対してのみプロクシを使用
  • 現在のネットワークをmyIpAddress()から判断し、プロクシを切り替えている
    • 特定のFQDN(some.host.example.jp)がプライベートIPに名前解決できるかで確認を取っている