Linux
VPN
Lubuntu
SoftEther
自宅サーバー

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

前回
余っているPCにLubuntuを入れて、VPNサーバーを作ってみた(準備編) - Qiita
の続きです。

ネットワーク構成図

1515913301885.png
FIreタブレットで書いたから、超適当w
わかればいいかな?

とりあえず、新しいHUBを作成

管理マネージャで「仮想HUBの作成」をクリックして、仮想HUBを作る
se01.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

DDNSのホスト名を変更

vpnxxxxxxxxxxxxxxx(適当に数値が入る).softether.netもよかったんだけど、適当に、入力されて、侵入される恐れがあるので、変更しておく。
se03.png

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

仮想HUBの設定

se05-01.png

グループの設定

最初にグループの設定をしておくと、ポリシーの設定をユーザーごとに変更しなくてもよくなります。
se07.png
適当なグループ名(今回はdef)にして、セキュリティポリシーにチェック。
セキュリティポリシーをクリックして、「多重ログイン制限数」を選び、「このポリシー」の値を定義する」にチェックして、「1」にしましょう。
まぁ~一つIDをたらい回す運用であれば、そういうことしなくてもいいのですが、接続制限数はかけたほうがいいでしょう。

ユーザー作成

実際ログインするユーザーを作成します。
se08.png
「新規作成」を選んで、「ユーザー名」を書いて、グループ名を「def(グループ参照をクリックすると出てくる)」にして「パスワード認証」にして、「パスワード」を設定して、「OK」をクリックすれば、完了です。

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

IPsec/L2TPの設定

スマホからもつなげられるように、IPsec/L2TPの設定しておきましょう。
管理マネージャの「IPsec/L2TP設定」をクリックする。
se11.png
「L2TP サーバー機能を有効にする(L2TP over IPsec)」にチェックを入れる。
IPsec 事前共有キーに9文字くらい入れる。
これも、接続に必要なので、メモしておきましょう。

ちなみに10文字以上入れると、以下のような警告が出る。
se12.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
接続し真下になり、上に鍵マークがついた。

管理マネージャ側から確認

仮想HUBの設定にある、セッション管理に、つながっていることを確認する。
se013.png

そこにある、IPアドレステーブルをクリックすると、IPアドレスが振られていることがわかる。
se14.png
MACアドレスは、調べられなかったので、Windowsからpingして、arp -aして、確認しました。

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

懸念事項

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

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

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

というわけで

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