はじめに
ありそうでなかったので書いた。
事前に構築しておいてたSoftetherのVPNサーバにUbuntu18.04からつなぎましょう!という話
SoftetherのVPNサーバが立てたい人は、この辺の記事を参考にしましょう。
www.komee.org
環境
- サーバ: Ubuntu16.04 Server/Softether4.25
- クライアント: Ubuntu18.04 Desktop
セットアップ
必要なファイルのインストール
以下はすべてクライアントPC上で行う。
$ sudo apt install network-manager-l2tp-gnome
これを実行すると、依存するいろんなファイルをまとめてインストールしてくれて勝手に環境が構築されて楽。ちなみに今回インストールしたこのソフトウェアは、GUIでいい感じにL2TPのVPNをセットアップする環境を用意してくれるものである。というのもUbuntu18.04ではデフォルトでVPNの設定項目があるのだが、デフォルトで対応しているプロトコルはなぜか、PPTPのみなのである。L2TPを使いたかったら、自分でなんとかしてねという神対応なのである。
これでL2TPをセットアップする準備が整った。
L2TPのセットアップ
先程の画面には,Settings
->Network
->VPNのタブの右上の+
を押すことで辿り着ける。辿り着いたら、以下のように設定する。
- Name: 任意の名前をつける。自分が認識できれば何でもいい
- GeneralのGateway: VPNサーバのホスト名orIPアドレスを記述
- Optional/UserName&Password: 事前に設定したユーザ名とパスワードを記述
※パスワードに関しては、パスワードを毎回入力するか、OSの中に記憶させるかをテキストボックス右の?マークをクリックすることで選択できる。
IPsec Settings
これらの設定が終わったら、次に下部のIPsec Settings
を開く。
上部のEnable IPsec tunnel to L2TP hostにチェックを入れるとグレーアウトしていた部分に記入できるようになる。
- Gateway ID: 何も書かない
- Pre-shared key: 事前にサーバで設定してある事前共有鍵(PSK)を記述
- AdvancedのPhase1/2 Algorithm: 後述。けっこう詰まった。
最後のアルゴリズムに関しては、サーバ側が複数のアルゴリズムを提供していたら、そのとおりに書くことができる。1つ指定すれば,とりあえず動く。
で、このアルゴリズムの調べ方は以下のとおりである。
自分でログインできないVPNサーバの場合
管理者に問い合わせる。自分でログインできるVPNサーバの場合
サーバ上でvpncmdを実行し、ServerCipherGet
を実行する。そうするとサーバは以下のような出力をする。
VPN Server>ServerCipherGet ServerCipherGet command - Get the Encrypted Algorithm Used for VPN Communication. Encrypted Algorithm Currently Used by VPN Server: AES128-SHA List of Usable Encrypted Algorithm Names: RC4-MD5 RC4-SHA AES128-SHA AES256-SHA DES-CBC-SHA DES-CBC3-SHA DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA AES128-GCM-SHA256 AES128-SHA256 AES256-GCM-SHA384 AES256-SHA256 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES128-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 The command completed successfully.
読めばわかるが。これでこのサーバはAES-128-SHA
というアルゴリズムを使っていることがわかった。
次にIKEに用いるDiffie-Hellmanも併せて知っておく必要がある。これに関しては、SoftEtherのサーバ側でグループ1,2,3に対応していて,それぞれmodp768, modp1024, modp1536という呼称となっている。これもクライアント側で指定しないと接続できないのだが、正直どれを選択しても接続できる。
さてこれら2つを結合することで、Phase1 Algorithmが記述できるようになる。
今回の場合は、なんとなくmodp1536を選ぶ。先に判明した暗号化アルゴリズムのAES-128-SHAと合わせることで,次のような文字列をPhase1 Algorithmに入力する。
aes128-sha1-modp1536
※無印のSHAと出てきたものはSHA1のことである。SHA256に対応させてこのように記述する。
これでIPsec Settingsの入力は終わる。
PPP Settings
次に1つ前の画面に戻って、隣のPPP Settingsを開く。
こっちはめっちゃ簡単で、中段Security and Compression
のUse Point-to-Point encryption(MPPE)
と,その下のEcho
のSend PPP echo Packets
にチェックを入れるだけである。終わり。
すべて入力したら、1つ前の画面に戻ってApplyし、入力内容を保存する。そしてインターネットに繋がった状態で、作成したVPNサーバをONにするとつながるはずである。
コマンドラインで$ ip a
などと叩くと、新たな仮想インタフェースが作成され、指定したIPアドレスが割り振られていることで接続を確認できるであろう。
まとめ
GUIの設定を導入してポチポチするとつながる。ちなみに余談だが、Softetherの公式ページにはLinuxをクライアントとしたVPN接続に関しては次のような記載があった。
...Linux 版 VPN Client は、Linux オペレーティングシステムやネットワークについて、非常に詳しい知識をお持ちの方のみが使用してください。... 4.1 動作環境 - SoftEther VPN プロジェクト
こわ!
なので、今回の方法で接続する人はあくまで自己責任で接続するようにしましょう。