LoginSignup
29
28

More than 5 years have passed since last update.

VPN Gate(VPN over https)とかいう闇の力でVPNを使おう on Linux

Last updated at Posted at 2017-05-28

LinuxでSSL-VPNを使ってみましょ。

VPN Gateって?

筑波大での研究の一環で、「政府による検問を回避」「オープンWifiでセキュリティ性を保つ」ために開発されているVPNプロジェクトです。
それで、このプロジェクトのために開発されているすごいVPNがSSL-VPNとか呼ばれています。

通常のhttp proxyのhttps版との違いは、https プロキシの場合通信できるプロトコルはHTTPだけですが、SSL-VPN(VPN over https)はHTTP以外のTCP通信をそのままカプセル化することができます。

SSl-VPNって?

従来のVPNはTCPコネクションを貼るときに専用のポート(PPTPなら1723と47)を使います。しかしそれでは「80と443以外にアクセスする外向きのパケットは通さない」なんていう企業や国があった場合利用できません。
そのためSSL-VPNではL3をSSL/TLS(L4)に乗せています。
なのではたから見たらHTTPSサイトに接続しているようにしかみえないってわけです。これなら政府や企業も「インターネットを完全に遮断する」以外の方法では検問を掛けることができなくなります。

VPN Gateプロジェクト用のVPN-SSLサーバー一覧

これがサーバー一覧&公式サイトのURLです。サーバーによってはSSL-VPN以外にもOpenVPNやIPSecに対応しているものもありますね。
とりあえずここの一番上のサーバーのIPアドレスとVPN-SSLのポートを控えておきましょう。

環境

Ubuntu Server 16.04 LTS

ソースコードのダウンロード

こちらから、「SoftEther VPN (Freeware)」→「Source code of SoftEther VPN」と辿って、自分のアーキテクチャを選択すればリンク一覧がでてきます。とりあえず一番上のものをダウンロードしておけば問題ないと思います。

ビルド

ダウンロードしたファイルを回答すると、バージョン番号の名前のディレクトリが出てくるのでその中に入り、ビルドします。

shell
$ ./configure
$ make
$ sudo make install

使い方

ルーティングの設定

まず、VPNサーバーに接続するときにVPNのネットワークを通られたら困るので、以下のコマンドでVPNサーバーへの通信だけはデフォルトのNICを通じて通信できるように設定します。

shell
$ sudo ip route add <VPNサーバーのip> via default dev <ネットに繋がってるNIC名>

vpnclientサービスの起動

次に、起動します。Makefileがあるフォルダのbinの中に入り、以下のコマンドを入力してください。

shell
$ sudo vpnclient start

vpnコマンドラインの起動

shell
$ sudo vpncmd

そうすると、プロンプトが出てきます。今回はクライアントの設定をしたいので2を押して決定します。その次は空欄で決定します。ちなみにこれうまくいかないことが結構あるので、できなかったら何回か試してみてください。

vpnccmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.22 Build 9634   (Japanese)
Compiled 2016/11/27 14:33:59 by yagi at pc30
Copyright (c) SoftEther VPN Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 2

接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
接続先のホスト名または IP アドレス:

VPN Client "localhost" に接続しました。

VPN Client>

VPN用のNIC作成

次はVPN用の仮想NICを作成します。Niccreateと入力したあとに任意のNIC名(ここではvpn0)を入力しましょう。
そして次に有効するためにenableをしましょう。

vpncmd
VPN Client>Niccreate vpn0
NicCreate コマンド - 新規仮想 LAN カードの作成
コマンドは正常に終了しました。

VPN Client>Nicenable vpn0
NicEnable コマンド - 仮想 LAN カードの有効化
コマンドは正常に終了しました。

アカウント登録

ユーザー情報を登録しましょう。ここでは名前を適当にvpngateとしています。

vpncmd
VPN Client>AccountCreate vpngate /SERVER:<VPNサーバーのIP>:<ポート> /HUB:<ハブ名> /USERNAME:<ユーザー名> /NICNAME:vpn0

筑波大学の公開サーバを利用する時には、ハブ名をVPNGATE、ユーザー名をvpnにしてください。

パスワード追加

次にパスワードを設定しましょう。

筑波大の公開サーバーの場合

vpncmd
VPN Client>AccountAnonymousSet vpngate
AccountAnonymousSet コマンド - 接続設定のユーザー認証の種類を匿名認証に設定
コマンドは正常に終了しました。

その他のサーバーの場合

vpncmd
VPN Client>AccountPasswordSet vpngate
AccountPasswordSet コマンド - 接続設定のユーザー認証の種類をパスワード認証に設定
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード:****
確認入力  : ********

standard または radius の指定: standard

コマンドは正常に終了しました。

接続

そしてサーバーに接続しましょう。さっき登録したユーザー名を指定します。

vpncmd
VPN Client> AccountConnect vpngate
AccountConnect コマンド - 接続設定を使用して VPN Server へ接続を開始
コマンドは正常に終了しました。

これでvpnの接続は完了しました。exitと入力してvpncmdを終了しましょう。

DHCP取得

次にipアドレスをもらってこなければいけないのでdhcpで取得します。
またこのときにnic名を指定するのですが、最初に指定したnic名の先頭にvpnを付加した名前になっています。

shell
$ sudo dhclient vpn_vpn0

参考

29
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
28