Mar 2, 2011

自宅のMac から、会社のWindows を経由して、IP制限のかかった環境へSSH

会社のPCから、自宅の環境へVPNで接続し、会社のPCに立てた HTTP Proxyを介して、
IP制限された接続環境へ、http, https, ssh するようにしてみました。

VPN 接続

まず、自宅に、Linux でVPNサーバを立ち上げます。
PPTP接続の環境は簡単に構築できます。
「 CentOS pptpd 」などで検索すると色々出てきます。
私の自宅の環境は、だいぶ前に作って、詳細を掘り起こすのが、、、割愛します。
会社PC --->  自宅VPNサーバ

HTTP Proxy の設定

会社のPCに、Free Proxy などを使って、HttpProxy を立ち上げます。
自宅Mac -- (VPN) --> 会社Win (Http Proxy) --> (http, https, ssh) --> 目的サーバ

プロキシ構成ファイルの作成

http, https のアクセスは、制限のあるサーバだけをプロキシ経由にします。
そのため、例えば Mac の場合だと、以下にプロキシ構成ファイルを設定します。

システム環境設定 -> ネットワーク -> 詳細 -> プロキシ -> 自動プロキシ構成

プロキシ構成ファイル(.pac)の例
function FindProxyForURL(url, host) {
    var proxy = "PROXY mypc.at.office:8080";
    if (isPlainHostName(host)
        || shExpMatch(host,"client.server")) {
        return proxy;
    }
    return "DIRECT";
}


sshに、ProxyCommand の設定

まず、connect.c をインストールします。
curl http://www.meadowy.org/~gotoh/ssh/connect.c > connect.c
gcc connect.c -o connect -lresolv

~/.ssh/config の設定をします。
Host *.client.server
    ProxyCommand /path/to/connect -H mypc.at.office:8080 %h %p


参考サイト

http://www.gcd.org/sengoku/docs/NikkeiLinux00-12/config.ja.html
http://dsas.blog.klab.org/archives/50765770.html
http://bent.latency.net/bent/darcs/goto-san-connect-1.85/src/connect.html
http://findproxyforurl.com/