2016年12月25日日曜日

ニフティクラウド上に VyOS を構築して L2TP/IPsec を使って Mac から VPN 接続してみた

概要

ニフティクラウド上に VyOS を構築して自宅の Mac から L2TP/IPSec を使って VPN 接続してみました
VPN 接続することでニフティクラウド上のマシンが自宅の Mac からローカル IP 接続できるようになります

環境

  • ニフティクラウド (2016/12/25 時点)
    • Region: east-1 (Zone: east-12)
  • ゲスト OS: VyOS 1.1.7 (Public イメージを使用)
  • Mac Book Pro (OS X 10.10.5)
  • Wifi Walker NAD11

完成図

今回の完成図は以下の通りです
自宅側の Mac は WiMAX を使ってインターネットに接続します
WiMAX のグローバル側の IP は固定 IP が理想ですが、動的 IP でも問題ありません
その場合は確認くんなどで事前にグローバル側の IP を調査しておいてください
l2tp_ipsec_vyos_with_mac1.png

プライベート LAN の作成

まずはニフティクラウド側でリソースを作成します
左メニューから「ネットワーク」を選択し「プライベート LAN 作成」から作成します
CIDR は今回完成図にあるように「192.168.0.0/24」にしておきます
ここで設定した CIDR の範囲の IP が自宅の Mac 側にも振られることでクラウド側のサーバと通信できるようになります
l2tp_ipsec_vyos_with_mac2.png

VyOS の作成

次に VyOS をニフティクラウド上に構築します
「サーバー作成」から作成します
ニフティクラウドでは Public イメージとして VyOS の 1.1.7 が公開されているのでこれを使いましょう
l2tp_ipsec_vyos_with_mac3.png

サーバのスペックは small2 くらいあれば OK です
料金プラン、SSH キー、ファイアウォールは適当に割り当ててください
ネットワークの設定でプライベート側は先程作成したプライベート LAN を設定してください
l2tp_ipsec_vyos_with_mac4.png

作成が完了するとプライベート側の IP がまだ設定されていないため警告マークになりますが、手動で設定するので問題ないです

VyOS 上で L2TP/IPSec の設定

では VyOS に SSH ログインして VPN の設定を行います
ログイン用のユーザは vyos になるので注意してください

プライベート IP の設定

まずはプライベート側の IP を設定します

  • configure

で編集モードになり

  • del interfaces ethernet eth1 address dhcp
  • set interfaces ethernet eth1 address ‘192.168.0.1/24’
  • set interfaces ethernet eth1 description ‘vlan’
  • commit
  • save

で静的 IP を付与します
commit ip a show で IP が振られていることを確認してください
コンパネでも警告マークが消え正常になっていると思います

L2TP/IPSec の設定

次に VPN の設定を行います

  • configure

で編集モードになります

IPSec の設定は以下の通りです

  • set vpn ipsec ipsec-interfaces interface eth0
  • set vpn ipsec nat-traversal enable
  • set vpn ipsec nat-networks allowed-network 0.0.0.0/0
  • commit
  • save

L2TP の設定は以下の通りです
xxx.xxx.xxx.xxx の部分はニフティクラウド上に作成した VyOS のグローバル側の IP を記載してください
pre-shared-secret で設定した「TESTSECRET」はどんな文字列でも OK です
あとで Mac から使用するのでメモしておいてください
あと local-users usernamepassword で設定したユーザ名とパスワードも Mac から VPN 接続するときに使うのでメモしておいてください
もちろん好きなユーザ名とパスワードに変更してもらって OK です

  • set vpn l2tp remote-access client-ip-pool start 192.168.0.100
  • set vpn l2tp remote-access client-ip-pool stop 192.168.0.200
  • set vpn l2tp remote-access outside-address xxx.xxx.xxx.xxx
  • set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
  • set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret TESTSECRET
  • set vpn l2tp remote-access authentication mode local
  • set vpn l2tp remote-access authentication local-users username TESTUSER password TESTPASS
  • commit
  • save

start 192.168.0.100stop 192.168.0.200 で指定した範囲から IP を 1 つ VyOS が払い出し VPN 接続に成功したマシンにプライベート IP を付与してくれます

VyOS 用のファイアウォールの設定

ここで WiMAX のグローバル IP からの接続許可をします
固定 IP であればそれを、動的 IP であれば事前に調べておいて IP をファイアウォールに設定します
アクセスプロトコルは今回は Any で実施します
要するに自宅の WiMAX からのアクセスは全許可になれば OK です

また、VPN 接続後にプライベート IP でクラウド上のサーバにアクセスします
ニフティクラウドの場合同一ファイアウォール内にいる場合はプライベート間はアクセスし放題なのですが、今回の場合自宅のマシンからのアクセスなのでファイアウォールにプライベート間の通信の許可ルールを追加する必要があります
なので、プライベート IP からのアクセスも許可しておきます

  • ANY CIDR 192.168.0.0/24
  • ANY IP WiMAX のグローバルIP

上記を IN ルールに許可してください
OUT ルールは特に設定する必要はありません

試しに自宅環境から VyOS のグローバル IP に SSH ログインできるかどうか確認すると良いかと思います

動作確認用のサーバを準備する

これは何でも OK です
適当にサーバを作成してください
一つ条件としては事前に作成したプライベート LAN (vlan) に接続するようにしてください
そしてプライベート IP を手動で設定してください
今回の完成図では「192.168.0.10/24」を設定しました
動作確認用に Apache をインストールして起動しておきます

ここまでできればニフティクラウド上での作業は完了です

Mac を使って VPN 接続して動作確認する

では自宅の Mac から接続してみます
「システム環境設定」から「ネットワーク」を選択します
l2tp_ipsec_vyos_with_mac5.png

ネットワークの一覧の下にある「+」ボタンから新規でネットワークを追加します
作成時にプルダウンでインタフェースの種類を選択できますが「VPN」を選択します
VPN タイプには「L2TP over IPSec」を選択します
l2tp_ipsec_vyos_with_mac6.png

l2tp_ipsec_vyos_with_mac8.png

サーバアドレスにはニフティクラウド上に作成した VyOS のグローバル IP を入力します
アカウント名には VyOS に設定した認証用のユーザ名を入力します

そしてその下にある認証設定を選択します
「ユーザ認証」のパスワードと「コンピュータ認証」の共有シークレットを入力します
どちらも VyOS の設定時に決めたものにすれば OK です
l2tp_ipsec_vyos_with_mac7.png

サーバ情報と認証情報が入力できたら「接続」を選択します
接続に成功すると VyOS に設定した払い出すプライベート IP の範囲から 1 つ Mac に IP が振られます
今回であれば「192.168.0.100」が振られると思います

Mac 上でインタフェースを確認すると VPN 用に 1 つ追加されていることも確認できます

  • ifconfig ppp0
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
        inet 192.168.0.100 --> 10.255.255.0 netmask 0xffffff00

この状態になればニフティクラウド上の vlan 内にあるサーバにプライベート IP でアクセスできるようになります
ブラウザに 192.168.0.10 を入力して Apache のスタート画面が表示されることを確認すると良いと思います
ping や SSH もプライベート IP を指定してできると思います

最後に

VyOS をクラウド上に構築して L2TP/IPSec で VPN 接続してみました
VyOS を使えば簡単に実現できるので簡易な VPN を構築したい場合には便利かなと思います
ただ、現状の構成だと VyOS が完全に SOPF になっているので実際のサービス運用をする場合には DR などを考えなければいけないかなと思います
実際自分が試したいたときにもちょくちょく切断する現象が発生しましました (WiMAX が関係している可能性もありますが)

また、今回はクライアント側の WiMAX 側は特に何も設定しませんでしたが、ルータによってはもしかすると何か設定が必要になるかもしれません

参考サイト

0 件のコメント:

コメントを投稿