SoftEther VPNでEC2(Amazon Linux)に繋いでみた③(まとめ)

導入編設定編通してのまとめ(感想)です。

 

やってみて感想

  1. 導入はシェル叩くだけ。非常に簡単だった。
  2. 今気づいた。公式サイトにLinuxへのServerのインストール方法書いてあるorz
  3. 公式サイトのチュートリアルが充実しているので、導入も設定も非常に助かった。
    Windowsだとほとんど困ることなんて無いんじゃないだろうか?
  4. Serverの設定は遠隔からGUIでできたりして非常に簡単だった。
  5. Clientもコマンドが分かりやすくできている感じがして、
    リファレンス見ながらやれば困ることは無かった。
  6. ルーティングの部分で少し悩んだのは、
    SoftEther VPNがどうとかいう話じゃなく、自分の意識が甘かっただけのこと。
    NWが簡単かつ自在に弄れるAWS VPCばっかりつかっていると、
    OSのルーティング設定とかiptableとか弄ることないからなぁw

 

良い所

  1. 高機能だけど分かりやすい
  2. 遠隔から操作できる
  3. 公式サイトの充実したコンテンツ

集約するとこの3点だけど、細かく挙げればきりがない。

かなり魅力的なソフトウェアだと思う。

特に②はクラウド利用では超大事。

 

悪い所

今のところ特に無い。

あえて言うなら下記だけど、これは相性的な問題だから仕方がない。

 

 

AWSで使える?

基本的にはめっちゃ使えそう。

但し、一個だけ問題があることが分かった。

AWSはプロミスキャスモードを一切許していないので、ブリッジ接続が使えない。

各サーバにクライアントをインストールして、

起動スクリプトでコネクション張るとこまで自動でやるようにして、

仮想DHCPオンにして…って感じになりそう。

接続先を固定したかったらどうすれば良いだろうか・・・

サーバ側でMACアドレステーブルとか持ってるけど、

同じ接続元には同じIP振ってくれたりはするのかな?

それなら特に問題は無いんだけど・・・

そうでないとして、とりあえず今思いつく解決法は、

クライアントに自発的に仮想DHCPで充てられたIPをAPIでRoute53に登録させるとか?

 

まとめると

最初に感じた

なんかこれめっちゃ使えるんじゃね?

はその通りだった。

でも、ガチで使うにはもうちょっと検証と評価したい所。

 

 

 

とりあえず、こんな感じで一旦?終了です。

 

 


SoftEther VPNでEC2(Amazon Linux)に繋いでみた②(設定編)

こちらの続きです。

 

まずはVPN Serverの設定から

VPN ServerはLinuxにインストールしているのですが、

リモートからGUIで設定できます。

初めに繋いだら管理パスワードを設定して、控えておくのを忘れずに。

ここは基本的には公式サイトのチュートリアルと一緒ですね。

なので、要点以外のキャプチャは除きます。

 

ホスト名には割り当てておいた固定IPを指定しましょう。

8f26088173baf6822a3f01e70f7b6e8d

 

大事な仮想ハブの作成がある画面のキャプチャが無いorz

別ので…

仮想ハブ名あとで使います。大事です。

69a03fbd8b6cc36a4ad6a55790eab185

 

VPN Azureなるものは今回は無し。

ただ、固定IPが無い個人や小規模事業主等には魅了的なサービスですね。

04aad386b927ac8e39738e288bd00232

 

 

クラウドで利用するにはループバック接続用のクライアントが必要で、

それは勿論リモート接続用とは分けるべきとのことです。

認証はとりあえずパスワード認証で。

22cfd26f17ac402d35f5e0de473ae03c

 

 

・・・と、ここまでは親切なチュートリアルのおかげで簡単ですね。

 

さて、ここからは問題のLinuxクライアントの設定です。

コマンドラインリファレンスと睨めっこの始まりでした。

 

まずはEC2側のループバック用の設定から。

 

とりあえずコマンドラインオープン!

# cd クライアントをインストールしたディレクトリ
# ./vpncmd

 

クライアントを選択します。

vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.03 Build 9408   (English)
Compiled 2014/01/04 19:31:56 by yagi at pc25
Copyright (c) SoftEther VPN Project. All Rights Reserved.

By using vpncmd program, the following can be achieved.

1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 2

 

SSHで繋いでいるので接続先はlocalhostで。

選べるってことはコマンドラインもRPCでリモートから投げれるってことですね。素晴らしい。

Specify the host name or IP address of the computer that the destination VPN Client is operating on.
If nothing is input and Enter is pressed, connection will be made to localhost (this computer).
Hostname of IP Address of Destination: localhost
Connected to VPN Client "localhost".

 

繋がりました!

各種コマンドはオプション指定して非対話で投げられるようになっているようですが、

一つ一つ確認しながらじゃなきゃ上手くいく気がしなかったので対話式でやりました。

そのうちガチで使うことになって、Chefのレシピに落とし込んだり…ってなった時にはオプション指定必須ですね。

 

まずは仮想IF(アダプタ)を作成します。

アダプタ名はとりあえず適当w

でも、後で使うので忘れないように…w

VPN Client>NicCreate
NicCreate command - Create New Virtual Network Adapter
Virtual Network Adapter Name: ADAPTER01
The command completed successfully.

 

ここは結構長いです。

VPN接続のアカウント作成!

前述で作成したハブ名ループバック接続用ユーザ名アダプタ名を指定します。

VPN Client>AccountCreate
AccountCreate command - Create New VPN Connection Setting
Name of VPN Connection Setting: local

Destination VPN Server Host Name and Port Number: 443

The host name and port number specification is invalid.
Please specify using the format of host name:port number, or IP address:port number.
Destination VPN Server Host Name and Port Number: localhost:443

Destination Virtual Hub Name: VPN

Connecting User Name: local

Used Virtual Network Adapter Name: ADAPTER01

The command completed successfully.

アカウントを作ったら、それに使うパスワードも設定します。

パスワード認証を選んだので。

認証方式はとりあえず通常で。

VPN Client>AccountPasswordSet
AccountPasswordSet command - Set User Authentication Type of VPN Connection Setting to Password Authentication
Name of VPN Connection Setting: local

Please enter the password. To cancel press the Ctrl+D key.

Password: *********
Confirm input: *********

Specify standard or radius: standard

The command completed successfully.

最後に接続します!

VPN Client>AccountConnect local

 

次はローカル(クライアント)側!

ユーザが違うだけで他は一緒なので、一応コピペだけ。

 # ./vpncmd
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.03 Build 9408   (English)
Compiled 2014/01/04 19:31:56 by yagi at pc25
Copyright (c) SoftEther VPN Project. All Rights Reserved.

By using vpncmd program, the following can be achieved.

1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 2

Specify the host name or IP address of the computer that the destination VPN Client is operating on.
If nothing is input and Enter is pressed, connection will be made to localhost (this computer).
Hostname of IP Address of Destination: localhost

Connected to VPN Client "localhost".

VPN Client>NicCreate
NicCreate command - Create New Virtual Network Adapter
Virtual Network Adapter Name: ADAPTER01

The command completed successfully.

VPN Client>AccountCreate
AccountCreate command - Create New VPN Connection Setting
Name of VPN Connection Setting: remote

Destination VPN Server Host Name and Port Number: 54.238.175.160:443

Destination Virtual Hub Name: VPN

Connecting User Name: remote

Used Virtual Network Adapter Name: ADAPTER01

The command completed successfully.

VPN Client>AccountConnect remote

 

さて、完了!とはいかず・・・

 

とりあえず、CIDRが違うから繋がる訳ないよねーっていうのはすぐ気が付いた。

何故なら、チュートリアルにWindowsのエクスプローラでだけど書いてあるからwww

「ここは違うから後で~」ってそのまま忘れてたorz

ローカル側をEC2に合わせる形で割り当ててみる。

実運用時には設定ファイルを起こさないと、

よくある(?)「再起動したら繋がらない~!!」ってなるので注意です。

あ。でも、そもそもServerもClientも自動起動してコネクション張るようにしないと繋がらないか(汗

# ifconfig vpn_adapter01 192.168.100.11

 

それでも、繋がらない…orz

ここはちょっと悩みました。

Privete IPを充てると、その時そっち側(ローカル)は一緒にデフォルトのルーティングとしてルートがマスク255.255.255.0でセットされる。

でも、元々持ってるPrivet IPを使うEC2側はローカルへ向かうルートを設定する必要があります。

# route add -net 192.168.100.11 metric 0 netmask 255.255.255.255 vpn_adapter01

 

でも、なんか同一サブネットに組み込んじゃうのってなんか微妙…

マスクを細かく切って設定するにしたって分かりづらい。

ということで、VPN用の別のサブネットを設ける形に。

 

EC2側

# route add -net 192.168.200.0 metric 0 netmask 255.255.255.0 vpn_adapter01

 

ローカル側

# route add -net 192.168.100.0 metric 0 netmask 255.255.255.0 vpn_adapter01
# ifconfig vpn_adapter01 192.168.200.11

 

こっちの方が断然分かりやすくて、今後はクライアントが増える度にPrivate IP付けるだけでOKなので管理も比較的楽ですね。

(本気で楽をしようと思ったらまだ全然アレですがw)

 

そして、本当は昨夜書くつもりだったのに…

AWSじゃない環境の障害対応に深夜まで…ゴニョゴニョ

と言い訳しながら、

感想とまとめを改めて書きたいと思いますw

え?2部構成?なんのことですか?w

 

 


SoftEther VPNでEC2(Amazon Linux)に繋いでみた①(導入編)

あけましておめでとうございます。

 

なんか最近TwitterやfacebookでSoftEther VPNなるものがオープンソースになったとかで情報が頻繁に流れてくるのでサイトを見てみたら…

なんかこれめっちゃ使えるんじゃね?

ってなったので検証してみました。

 

公式サイトのチュートリアルにクラウドへの繋ぎ方が書いてあるんだけど、

Windowsだけしか書いてない。たしかにこの通りにやればとりあえずはできるのかもしれない。

でも、実際に使うとしたらLinux間での接続だと思うのでちょっと頑張ってみました。

まあ、身になりそうですし…

 

環境はこんな感じです。今後それぞれを「呼称」欄で呼びます。

ちょうど別件で使ってもういらないVPCがあったので使っちゃいましたが、

よく考えたらサブネットが複数あるVPCで、

VPN接続できるサブネットとできないサブネットで分けるイメージの方が良かったかなと後悔したりw

呼称 環境 CIDR OS
ローカル Virtualbox(vagrant) 10.0.2.0/24 CentOS6.4
EC2 AWS VPC 192.168.100.0/24 Amazon Linux 2013.09

EC2にはElastic IP(固定IP)を振っておきます。

ローカルから443(以外も使えます)ポートで接続できるようSecurity Groupを設定しておきます。

プラス接続元を固定IPで絞れれば接続認証(後述)をあまり意識しなくても場合によっては十分セキュアですね。

 

 

 

クラウド上にVPN接続を管理するVPN Serverを置く形が一番柔軟で運用しやすそうなので、その形で構成してみました。

 

基本的な流れは以下を参考に

http://ja.softether.org/4-docs/2-howto/2.VPN_for_Cloud/1.Join_a_Local_PC_into_Cloud

 

まず、EC2にVPN Serverをインストールします。

※ビルドにgccが必要です。

# yum -y install gcc

 # wget http://jp.softether-download.com/files/softether/v4.03-9408-rtm-2014.01.04-tree/Linux/SoftEther%20VPN%20Server/64bit%20-%20Intel%20x64%20or%20AMD64/softether-vpnserver-v4.03-9408-rtm-2014.01.04-linux-x64-64bit.tar.gz

 # tar -zxvf softether-vpnserver-v4.03-9408-rtm-2014.01.04-linux-x64-64bit.tar.gz

 # cd vpnserver

 # sh .install.sh

 

VPN Serverのインストール後の設定はローカルWindowsのGUIで行うことができます。

やっぱり設定、管理は視覚的に色々な情報が見えるのが望ましいので、GUIがあるのは嬉しいですね。

しかも、HTTPSを通したRPCで設定できるからリモートにGUIだけインストールできるっていうのが素晴らしいです。

ダウンロードはコチラから

SoftEther VPN Server Manager for Windowsを選択し、ダウンロードします。

そして、以下の通り管理ツールのみをインストール(その他はデフォルトのままでOK)します。

 

163bcbef4e8ba57983c3c12c6d0216dc

 

 

次に、VPN Clientをローカル、EC2それぞれにインストールしておきます。

# wget http://jp.softether-download.com/files/softether/v4.03-9408-rtm-2014.01.04-tree/Linux/SoftEther%20VPN%20Client/64bit%20-%20Intel%20x64%20or%20AMD64/softether-vpnclient-v4.03-9408-rtm-2014.01.04-linux-x64-64bit.tar.gz

# tar -zxvf softether-vpnclient-v4.03-9408-rtm-2014.01.04-linux-x64-64bit.tar.gz

 # cd vpnclient/

 # sh .install.sh

 

遅くなってしまった&長くなりそうなので二部構成にします。

次は「設定編」予定です。

 

設定編書きました。