余っているPCにLubuntuを入れて、VPNサーバーを作ってみた(構築編)

前回
[余っているPCにLubuntuを入れて、VPNサーバーを作ってみた(準備編) - Qiita](https://qiita.com/karkwind/items/59dff96b827427f54c1e)
の続きです。
# ネットワーク構成図
![1515913301885.png](https://qiita-image-store.s3.amazonaws.com/0/221663/90418f80-152c-f131-d63e-83c75f220a1d.png)
FIreタブレットで書いたから、超適当ｗ
わかればいいかな?

# とりあえず、新しいHUBを作成
管理マネージャで「仮想HUBの作成」をクリックして、仮想HUBを作る
![se01.png](https://qiita-image-store.s3.amazonaws.com/0/221663/a8b9c1cf-46f5-f744-593c-c6c3bc735fa4.png)

仮想HUB名は、後々使用するので、忘れないようにメモしておく。
仮想HUBの管理パスワードなので、とりあえず、忘れないようにする。
「匿名ユーザーに対してこの仮想HUBを列挙しない」というのに、チェックを入れる。
チェックを入れないと、サーバー接続するだけで、仮想HUB名が出てしまうという失態をしてしまう。
とりあえず、OKをクリックして、仮想HUB作成完了。

# ローカルブリッジ設定をする
ローカルブリッジの設定をすると、VPN接続されている端末も、家のネットワークと同じセグメントになります。
仮想HUB名に先ほど追加したHUB名を入れて(選択して)、ブリッジ先のEthernetデバイスを選択する。
2つ以上ある場合(うちの場合は、LANと無線LAN)は、つながっているインターフェースを選びます。
デバイス名がわからない場合は、Linux上で`ifconfig`と打って、自分が設定したデバイスを確認する。

```
$ ifconfig
enxxxx    Link encap:イーサネット  ハードウェアアドレス xx:xx:xx:xx:xx:xx
          inetアドレス:192.168.x.xxx  ブロードキャスト:192.168.x.255  マスク:255.255.255.0
          inet6アドレス: xxxx::xxxx:xxxx:xxxx:xxxx/64 範囲:リンク
          inet6アドレス: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/xx 範囲:グローバル
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:xxxx  メトリック:x
          RXパケット:xxxxx エラー:x 損失:x オーバラン:x フレーム:x
          TXパケット:xxxxx エラー:x 損失:x オーバラン:x キャリア:x
          衝突(Collisions):x TXキュー長:xxxx
          RXバイト:xxxxxx (x.x MB)  TXバイト:xxxxxx (x.x MB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1  マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:2902 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:2902 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:xxxxx (xxx.x KB)  TXバイト:xxxxxx (xxx.x KB)

$
```

＃一部、消しています。

ローカルブリッジの追加をクリックすると、いろいろな警告が出ますが、自宅サーバーなので、全部OKをクリックします。
完了すると、下のように表に表示されます。
![se02.png](https://qiita-image-store.s3.amazonaws.com/0/221663/e610539f-da40-937c-f60d-2f41b6ac4dfa.png)

# DDNSのホスト名を変更
vpnxxxxxxxxxxxxxxx(適当に数値が入る).softether.netもよかったんだけど、適当に、入力されて、侵入される恐れがあるので、変更しておく。
![se03.png](https://qiita-image-store.s3.amazonaws.com/0/221663/a372ee5e-e073-030d-43af-4c147344ad15.png)

変更するとダイアログが出るので、「はい」をクリックして、もう一度「はい」をクリックして、一応、保存しておく。

# 仮想HUBの設定
![se05-01.png](https://qiita-image-store.s3.amazonaws.com/0/221663/d5ce951a-ef70-8772-2229-dde0e0976ede.png)
## グループの設定
最初にグループの設定をしておくと、ポリシーの設定をユーザーごとに変更しなくてもよくなります。
![se07.png](https://qiita-image-store.s3.amazonaws.com/0/221663/236a4844-df35-90a5-ef40-87300fa01680.png)
適当なグループ名(今回は`def`)にして、セキュリティポリシーにチェック。
セキュリティポリシーをクリックして、「多重ログイン制限数」を選び、「このポリシー」の値を定義する」にチェックして、「1」にしましょう。
まぁ～一つIDをたらい回す運用であれば、そういうことしなくてもいいのですが、接続制限数はかけたほうがいいでしょう。

## ユーザー作成
実際ログインするユーザーを作成します。
![se08.png](https://qiita-image-store.s3.amazonaws.com/0/221663/5a05fb6d-8594-77b0-6d05-aef989c64dee.png)
「新規作成」を選んで、「ユーザー名」を書いて、グループ名を「def(グループ参照をクリックすると出てくる)」にして「パスワード認証」にして、「パスワード」を設定して、「OK」をクリックすれば、完了です。

閉じて仮想HUBの設定は完了です。

# IPsec/L2TPの設定
スマホからもつなげられるように、IPsec/L2TPの設定しておきましょう。
管理マネージャの「IPsec/L2TP設定」をクリックする。
![se11.png](https://qiita-image-store.s3.amazonaws.com/0/221663/7e28ba7e-cafb-a665-a35d-92e232de088f.png)
「L2TP サーバー機能を有効にする(L2TP over IPsec)」にチェックを入れる。
IPsec 事前共有キーに9文字くらい入れる。
これも、接続に必要なので、メモしておきましょう。

ちなみに10文字以上入れると、以下のような警告が出る。
![se12.png](https://qiita-image-store.s3.amazonaws.com/0/221663/8db1a33d-3ffa-db6e-19b5-adf7a7edcf4e.png)
一部というのは、どのくらいなのかわからないので、Androidユーザーの人は9文字くらいにしておきましょう。

# ルーターのNAT(NAPT)の設定をする
静的IPマスカレードともいう(うちのルーターの場合)。
ここからは、ルーターの個別設定になってしまいますが、開けたポートは、
TCP:443
UDP:500
UDP:4500
の3つです。
TCP:443は、SSL-VPNに必要なので、あとのUDPは、スマホからの接続に必要なため。
ほかのポート(TCP:992 1194 5555)も開けてもいいけど、不用意にあけてて、それがセキュリティホールになるのが嫌なので、最低限にしておきました。

# とりあえず、接続テスト…あれ?
さっそく、Androidスマホから、接続を試みる。
Androidのバージョンによるけど、設定→もっと見る→VPN→「+」をタップすると、設定画面が出るので、設定する。
名前: (任意)
タイプ: L2TP/IPsec PSK
サーバーアドレス: (DDNS設定したアドレス).softether.net
L2TPセキュリティ保護: (未使用)
IPsecID: (未使用)
IPsec事前共有キー: (9文字くらいといっていた文字列)
ユーザー名:(作成したユーザー名)@(仮想HUB名)
パスワード:(ユーザー名のパスワード)
保存して、表示したものをタップし、接続をタップする。
…つながらない…orz

## つながらない原因は、自宅の無線LAN接続だった
それもそのはず、自宅の無線LANに接続しているからである。
Wi-Fiを切って、再度接続。
接続成功しました。

# 接続されているのかを確認する
## まず、Androidの画面から。
![Screenshot_20180114-183556.png](https://qiita-image-store.s3.amazonaws.com/0/221663/f3b864b9-b73a-50d8-2d08-a71ad1059e27.png)
接続し真下になり、上に鍵マークがついた。
## 管理マネージャ側から確認
仮想HUBの設定にある、セッション管理に、つながっていることを確認する。
![se013.png](https://qiita-image-store.s3.amazonaws.com/0/221663/fb0f5b2a-c013-4924-d514-18f58386862c.png)

そこにある、IPアドレステーブルをクリックすると、IPアドレスが振られていることがわかる。
![se14.png](https://qiita-image-store.s3.amazonaws.com/0/221663/93a00047-5aa6-f668-8299-fa8550d15a3a.png)
MACアドレスは、調べられなかったので、Windowsから`ping`して、`arp -a`して、確認しました。

あとは、Android側から、いろいろ接続しても、大丈夫なことを確認しました。

# 懸念事項
1. 自宅の無線LANに接続すると、VPNに接続できない
2. dellの再起動ができない

「1」ですが、自宅の無線LANに接続しているときは、接続できない。
一応、TCPはちゃんと動くみたいだけど、L2TPだとダメみたい…
VPNAzureを使えば、一発で解決なんだけど…

「2」ですが、カバーを閉じているときに、リモートからの再起動をしたら、こけましたorz
ロック画面では、サスペンド無効の設定が反映されていないのが原因っぽいです。
…と探してみたら、設定方法がありました。
[モニターを閉じるとサスペンドされるのを防止 - Qiita](https://qiita.com/tukiyo3/items/9db97f9ffea8a26b364b)
これです。
探していたの。

# というわけで
構築編を終了たいと思います。
L2TPの件は、自宅にいるときは、VPNをOFFにします。
＃ちょっと、めんどくさい