なかなか変則的なパターンですが、仮想で立てたWindowsのVPN経由で、ホストのMacからVPN越しのサーバーにSSHアクセスしたくて、いろいろ試しながら構築したので、そのメモです。下記のような経路です。
Mac → 仮想Windows(VMWare) → VPN → 接続したいサーバー
SSH接続はもちろん、WindowsのIISでリバースプロキシを使用してWebもVPN経由でアクセスできるようにしました
前準備
VPN接続する
なにはともあれ、仮想WindowsでVPN接続をしてください
WindowsにSSHサーバーを立てる(cygwin)
Windows経由でSSH接続するには、Windowsを踏み台にするためにSSHサーバーを立てる必要があります。今回はcygwinを使いました。
このあたりを参考にさせていただきました。
http://www.uhero.info/techinfo/CygwinSSH_setup/
インストール時に、nc(netcat)をインストールし忘れないようにしてください、多段SSHで使用します。
多段SSH
とりあえず、cygwinでsshdが起動したら、Macから接続してみます。
下記のようなネットワークと思ってください。
マシン | IP |
---|---|
Mac | 192.168.1.2 |
Win | 192.168.1.3 |
Win(VPN割当IP) | 192.168.2.1 |
接続したいサーバー | 192.168.2.2 |
まずはWindowsにSSH経由でつながるか試す
$ ssh 192.168.1.3
接続成功したらOK
成功したら、そっから接続したいサーバーにつながるか試します
$ ssh 192.168.2.2
接続成功したらOK
ここまできたらあとは多段SSHの設定
$ vi ~/.ssh/config
Host 192.168.2.2
HostName 192.168.2.2
ProxyCommand ssh 192.168.1.3 nc %h %p
これで、192.168.2.2に接続しようとすると、192.168.1.3経由になるはずです
$ ssh 192.168.2.2
接続成功したらOK
簡単!めっちゃはかどります!
WebもVPN経由でアクセスするようにしたい場合
これまた変速ですが、接続したいサーバーのWebサーバーがIP制限かけてるなんかして、WebアクセスもVPN経由にしたいときがあります。これはいろいろ考えた結果、WindowsのIISのリバースプロキシでやりました。下図のようなフローです
Mac(Webアクセス) → Windows(IIS リバースプロキシ) → 接続したいサーバー
IISをインストール
IISはWindowsに最初から入ってはいるのですが、有効化する必要があります。
手順を全部記載するのは大変なので、このへん参考になります!
http://awoni.net/personal-site/iis
IISがインストールできたら、あとはリバースプロキシを入れます
これまたこのへんが参考になります
http://codezine.jp/article/detail/7018
例えばgoogle.co.jpへの接続をリバースプロキシ経由でしたい場合は、
マッチするパターン | URL書き換え |
---|---|
^(https?)://google.co.jp | https://google.co.jp/{R:1} |
とかしておきます
そして、/etc/hostsを書き換えて、google.co.jpへのアクセスをWindowsを経由するようにします
$ sudo vi /etc/hosts
192.168.1.3 google.co.jp
これで、ブラウザからgoogle.co.jpを入力したときに、WindowsはIISのリバースプロキシの設定に従って、裏でgoogle.co.jpのHTMLを取得してきて、Macに返してくれます。Googleのページが表示されれば成功です!
httpsが接続できないときは・・・
これ、すごいレアですが、接続したいサーバーがhttpsを提供していて、しかもこのサーバー証明書がオレオレ証明書だったとき、リバースプロキシは502を返したりします(リバースプロキシの先が信頼できないので、エラーを返してしまいます)
そんな時は、そのオレオレ証明書をダウンロードして、Windowsにルート証明書(サードパーティールート証明書)としてインストールしておきましょう。そうすれば、きっとうまくいきます
※今回の僕のケースでは自分で用意したサーバーかつ自分で用意したオレオレ証明書だったのでルート証明書に入れていますが、オレオレ証明書をルート証明書としてインストールすることは推奨しません
参考
http://www.jcsinc.co.jp/support/xp_root.html
hostsをいちいちいじるなんて嫌だ!というときは
おいおい、hostsいじるなんて面倒だよ・・・。という場合は(僕のことですが)
Macだとhostsを切り替えるのに便利なGas Maskという便利ツールがあるので、こちらを使っています。