タグ別アーカイブ: SoftEther VPN

SoftEther VPN ClientのEC2(AmazonLinux)向け起動スクリプト

先日検証したSoftEther VPNですが、

早速ちょっと使う機会が出てきたので、自動起動用の起動スクリプトを作りました。

ちなみにServerの方は公式サイトに乗ってるそのまま。(結構下の方)

 

設定までは前に書いたのと同じです。

 

やりたかったこと

  1. まずは当然VPN Clientの自動起動
  2. VPN Serverへの自動接続
  3. Private IPの設定

 

基本は上述のServer起動スクリプトのパスやらをClientに変えただけ。

それにServerへの接続コマンド実行+IPアドレス設定って感じです。

 

こんな感じです(変数の内容は環境によって異なります)↓

 #!/bin/sh
 # chkconfig: 2345 99 01
 # description: SoftEther VPN Client
 DAEMON=/usr/local/vpnclient/vpnclient
 CMDPATH=/usr/local/vpnclient/vpncmd
 CMDHOST=localhost
 CMDCONN=local
 IP4ADDRESS=192.168.100.1
 VIRTUALIF=vpn_adapter01
 LOCK=/var/lock/subsys/vpnclient
 test -x $DAEMON || exit 0
 case "$1" in
 start)
 $DAEMON start
 touch $LOCK
 $CMDPATH /client $CMDHOST /cmd AccountConnect $CMDCONN
 ifconfig $VIRTUALIF $IP4ADDRESS
 ;;
 stop)
 $DAEMON stop
 rm $LOCK
 ;;
 restart)
 $DAEMON stop
 sleep 3
 $DAEMON start
 $CMDPATH $CMDTYPE $CMDHOST $CMDSUFFIX $CMDEXEC $CMDCONN
 ifconfig $VIRTUALIF $IP4ADDRESS
 ;;
 *)
 echo "Usage: $0 {start|stop|restart}"
 exit 1
 esac
 exit 0

変数名とかイケてないけど、とりあえず気にしないwことにして、

/etc/init.d/vpnclient

に配置して、

# /sbin/chkconfig --add vpnclient

で自動起動設定完了です。

 

これ、インストールから設定と併せてChefのレシピにしたらIPアドレスの管理が捗りますね。

もし複数台で使うことがあればやろうっと。

 

そして、これでアレで遊ぶために必要な設定①が完了しました!

 

 


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