Ubuntu
VPN
OpenVPN

図解!UbuntuでOpenVPNを使う:1. 準備

More than 1 year has passed since last update.


はじめに

UbuntuOpenVPNを使いたくなったので,設定手順をメモしておこうと思います.

私が素人だからという理由でしかないのですが,自分でOpenVPNに関して調べてみても,大群が押し寄せてくるばかりで,もう頭がパンクしてしまいました(×o×)

構成が複雑だったり,説明が難しかったりで,ド素人の私は設定に相当ハマりまして...^^;

情報が分散していたり,ある手順が抜けていたりするので,複数の文献やサイトを見ながら自分で必要な項目だけを抽出していく作業に相当な時間を要してしまいました^^;

私のオツムが足りないだけなのですが…

そんな経験をした私自身が,世の中の同じような悩みをもつ方にとって少しでも参考になればと,ステップバイステップの記事を書くことにしました.

各作業の位置づけを把握できるように,随時関連イラストを挿入するようにしました.

私同じような初心者の境遇の方にとって,少しでも参考になればと思います^^

openvpntech_logo.png


図解!UbuntuでOpenVPNを使う:目次



  1. 準備 ← イマココ


    1. VPNの接続方式


    2. OpenVPN のインストール

    3. ファイアウォール設定

    4. VPNサーバ側のルータのグローバルIP確認

    5. ルータからVPNサーバへのポートフォワード設定




  2. 証明書と認証鍵の作成


    1. 簡易認証局(easy-rsa)関連

    2. VPNサーバ関連

    3. VPNクライアント関連




  3. 設定



    1. OpenVPN サーバ設定



    2. OpenVPN クライアント設定




  4. 接続確認



    1. OpenVPNの起動

    2. 仮想tunデバイスの確認


    3. ping 確認


    4. netcat 確認




環境


  • OS: VPNサーバ/クライアント共に Ubuntu 14.04

  • VPNアプリケーション:OpenVPN 2.3.2


システム構成

以下のようなシステム構成でVPN接続することを目指します.

01_システム構成.png

それぞれ必要となったときに説明するので,まずはこんなもんかという感じで先に進みます.


1. VPN接続方法

VPN を構成する方式は大きく分けて2つあります.ルーティング方式と,ブリッジ方式です.今回は1対1を目指すので,ルーティング方式で行きます.


ルーティング方式


  • 構成図


routing_explanation.jpg



  • 特長


    • 1(クライアント)対1(サーバ)でよければ設定は簡単.

    • 1対多(サーバ+同一ネットワーク内端末)だと,ちょっと大変.上図だと,ホストAとホストBは直接接続できない.サーバでルーティング設定が必要.

    • クライアントには,サーバ側ネットワークのローカルIP(例:192.168.11.x)と別ドメインのIP(10.0.8.x)が振られる.

    • ネットワーク層トンネリングをするので,TCP/IPしか使えない.




ブリッジ方式


  • 構成図


bridge_explanation.jpg



  • 特長


    • 1対多に対応している.ホストAとホストBが直接接続できる.

    • サーバ側でブリッジ接続の設定が必須.こいつがょっと面倒.

    • クライアントには,サーバ側ネットワークのローカルIP(例:192.168.11.x)と同一ドメインのIPが振られる.

    • データリンク層でトンネリングするので,NetBEUIも使えるらしい.




参考リンク


2. OpenVPN のインストール

関連するソフトをaptで取得して終了です.


command

$ sudo apt-get update

$ sudo apt-get install openvpn libssl-dev openssl easy-rsa


3. ファイアウォール設定

※デフォルトだとファイアウォールは無いので,やらなくても大丈夫と思います.明示的に解放したい場合にやればOKです.

02_ファイアウォール.png


  • 今回の例では、以下の設定でポート開放します。


    • プロトコル: UDP

    • ポート番号: 1194



  • サーバとクライアント両方でこの設定を行います。


  • gufw というツールが便利です。

$  sudo apt-get install gufw

下図のような画面になるよう設定すればOKです.

gufw_check.png


4. VPNサーバ側のルータのグローバルIP確認

VPNサーバ側に接続されたルータのグローバルIPを確認しておきます.後でVPNクライアントから接続する際に必要となります.控えを取って置いてください.

03_globalip_check.png

これはVPNサーバが接続しているルータの設定画面から確認するものです.

当方ではAterm MR03LNを使っておりまして,ブラウザからルータ(ゲートウェイ)のアドレスを入力すると下図のような管理画面からグローバルIPを確認しました.今回の例では、192.168.179.1です.

04_aterm_global_ip.png

このアドレス(仮に適当なアドレス101.102.103.xxxとでもしておきましょう)に向かってpingを打ち込んでやり,このグローバルIPが有効であることを確認します.


(command)

$ ping 101.102.103.xxx


ただし,ルータによっては,攻撃回避のためにデフォルトでpingが無効の場合があります^^;

※最初の最初はこれが分からなくハマりましたw

Aterm MR03LNのグローバルIPからping応答がないとき,管理ページから有効にできました.

05_aterm_ping_available.png


5. ルータからVPNサーバへのポートフォワード設定

VPNサーバから接続されているルータの設定画面でポートフォワードを行います.

06_port_forward.png

ルータを使用してインターネットに接続する場合,デフォルトだと全ポートが接続不可となっているので,ルータ側の設定で明示的に開放する必要があります.更に,ポートフォワードの設定がないと,ドメイン内のどれがVPNサーバかルータは判断ができません.


port_forward_explanation.jpg



  • ポートフォワード,ルーティング設定,などがキーワードです.ご自身のルータに合わせて設定方法を検索してみて下さい.

  • 今回の例では,以下の設定でポート開放します.


    • フォワード先IP: 192.168.179.7

    • プロトコル: UDP

    • WAN側ポート番号: 1194

    • LAN側ポート番号: 1194



フォワード先のIPはサーバのローカルIPにします.当方のPCでは,下記のような表示がされたので,192.168.179.7としました.


(command)

$ ifconfig



(output)

wlan0     Link encap:イーサネット  ハードウェアアドレス hogehoge  

inetアドレス:192.168.179.7 ブロードキャスト:192.168.179.255 マスク:255.255.255.0


当方はAterm MR03LNを使用していたので,下記のサイトを参考に設定を行いました.



07_aterm_ip_forward.png


おわりに

本題に入る前に結構準備が必要となりました.ですが,どこかが抜けていると,いざ接続!というときにうんともすんとも言ってくれず,ハマることになります^^;

その割にはあまり情報が無かったりして,結構辛かったので,ここで残しておくことにしました^^

次回の図解!UbuntuでOpenVPNを使う:2. 証明書と認証鍵の作成では,VPNの要である認証局と認証鍵の作成です.


参考文献