Help us understand the problem. What is going on with this article?

Macで仮想PC(Windows)経由でVPN接続(多段SSH、リバースプロキシ)

More than 5 years have passed since last update.

なかなか変則的なパターンですが、仮想で立てた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
~/.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という便利ツールがあるので、こちらを使っています。

参考サイト
http://www.moongift.jp/2010/11/2010111012/

balmychan
株式会社オロでエンジニアをやっています。家族内クローズド写真共有サービスnicoriの開発や、iPhone、Android、Rails、CakePHPなどの案件を主にやっています
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away