はじめに
Ubuntu
でOpenVPN
を使いたくなったので,設定手順をメモしておこうと思います.
私が素人だからという理由でしかないのですが,自分でOpenVPN
に関して調べてみても,大群が押し寄せてくるばかりで,もう頭がパンクしてしまいました(×o×)
構成が複雑だったり,説明が難しかったりで,ド素人の私は設定に相当ハマりまして...^^;
情報が分散していたり,ある手順が抜けていたりするので,複数の文献やサイトを見ながら自分で必要な項目だけを抽出していく作業に相当な時間を要してしまいました^^;
私のオツムが足りないだけなのですが…
そんな経験をした私自身が,世の中の同じような悩みをもつ方にとって少しでも参考になればと,ステップバイステップの記事を書くことにしました.
各作業の位置づけを把握できるように,随時関連イラストを挿入するようにしました.
私同じような初心者の境遇の方にとって,少しでも参考になればと思います^^
図解!UbuntuでOpenVPNを使う:目次
- 準備 ← イマココ
- VPNの接続方式
-
OpenVPN
のインストール - ファイアウォール設定
- VPNサーバ側のルータのグローバルIP確認
- ルータからVPNサーバへのポートフォワード設定
- 証明書と認証鍵の作成
- 簡易認証局(
easy-rsa
)関連 - VPNサーバ関連
- VPNクライアント関連
- 設定
-
OpenVPN
サーバ設定 -
OpenVPN
クライアント設定 - 接続確認
-
OpenVPN
の起動 - 仮想
tun
デバイスの確認 -
ping
確認 -
netcat
確認
環境
- OS: VPNサーバ/クライアント共に Ubuntu 14.04
- VPNアプリケーション:OpenVPN 2.3.2
システム構成
以下のようなシステム構成でVPN接続することを目指します.
それぞれ必要となったときに説明するので,まずはこんなもんかという感じで先に進みます.
1. VPN接続方法
VPN を構成する方式は大きく分けて2つあります.ルーティング方式と,ブリッジ方式です.今回は1対1を目指すので,ルーティング方式で行きます.
ルーティング方式
- 構成図
- 特長
- 1(クライアント)対1(サーバ)でよければ設定は簡単.
- 1対多(サーバ+同一ネットワーク内端末)だと,ちょっと大変.上図だと,ホストAとホストBは直接接続できない.サーバでルーティング設定が必要.
- クライアントには,サーバ側ネットワークのローカルIP(例:192.168.11.x)と別ドメインのIP(10.0.8.x)が振られる.
- ネットワーク層トンネリングをするので,TCP/IPしか使えない.
ブリッジ方式
- 構成図
- 特長
- 1対多に対応している.ホストAとホストBが直接接続できる.
- サーバ側でブリッジ接続の設定が必須.こいつがょっと面倒.
- クライアントには,サーバ側ネットワークのローカルIP(例:192.168.11.x)と同一ドメインのIPが振られる.
- データリンク層でトンネリングするので,NetBEUIも使えるらしい.
参考リンク
- Gentoo Linuxな生活/OpenVPNで悩む
-
Setup OpenVPN server TAP behind an ASA :
tap
とbr0
関係が簡潔に書かれている. - OpenVPN 2.0 Ethernet Bridging 日本語訳:冒頭の説明が分かりやすい.
-
OpenVPNで拠点間L2接続:
tap
,br0
,eth
と、LAN、WANの関係が明確で非常に分かりやすい.
2. OpenVPN
のインストール
関連するソフトをapt
で取得して終了です.
$ sudo apt-get update
$ sudo apt-get install openvpn libssl-dev openssl easy-rsa
3. ファイアウォール設定
※デフォルトだとファイアウォールは無いので,やらなくても大丈夫と思います.明示的に解放したい場合にやればOKです.
- 今回の例では、以下の設定でポート開放します。
- プロトコル: UDP
- ポート番号: 1194
- サーバとクライアント両方でこの設定を行います。
-
gufw
というツールが便利です。
$ sudo apt-get install gufw
下図のような画面になるよう設定すればOKです.
4. VPNサーバ側のルータのグローバルIP確認
VPNサーバ側に接続されたルータのグローバルIPを確認しておきます.後でVPNクライアントから接続する際に必要となります.控えを取って置いてください.
これはVPNサーバが接続しているルータの設定画面から確認するものです.
当方ではAterm MR03LN
を使っておりまして,ブラウザからルータ(ゲートウェイ)のアドレスを入力すると下図のような管理画面からグローバルIPを確認しました.今回の例では、192.168.179.1
です.
このアドレス(仮に適当なアドレス101.102.103.xxx
とでもしておきましょう)に向かってping
を打ち込んでやり,このグローバルIPが有効であることを確認します.
$ ping 101.102.103.xxx
ただし,ルータによっては,攻撃回避のためにデフォルトでpingが無効の場合があります^^;
※最初の最初はこれが分からなくハマりましたw
Aterm MR03LN
のグローバルIPからping応答がないとき,管理ページから有効にできました.
5. ルータからVPNサーバへのポートフォワード設定
VPNサーバから接続されているルータの設定画面でポートフォワードを行います.
ルータを使用してインターネットに接続する場合,デフォルトだと全ポートが接続不可となっているので,ルータ側の設定で明示的に開放する必要があります.更に,ポートフォワードの設定がないと,ドメイン内のどれがVPNサーバかルータは判断ができません.
- ポートフォワード,ルーティング設定,などがキーワードです.ご自身のルータに合わせて設定方法を検索してみて下さい.
- 今回の例では,以下の設定でポート開放します.
- フォワード先IP: 192.168.179.7
- プロトコル: UDP
- WAN側ポート番号: 1194
- LAN側ポート番号: 1194
フォワード先のIPはサーバのローカルIPにします.当方のPCでは,下記のような表示がされたので,192.168.179.7
としました.
$ ifconfig
wlan0 Link encap:イーサネット ハードウェアアドレス hogehoge
inetアドレス:192.168.179.7 ブロードキャスト:192.168.179.255 マスク:255.255.255.0
当方はAterm MR03LN
を使用していたので,下記のサイトを参考に設定を行いました.
おわりに
本題に入る前に結構準備が必要となりました.ですが,どこかが抜けていると,いざ接続!というときにうんともすんとも言ってくれず,ハマることになります^^;
その割にはあまり情報が無かったりして,結構辛かったので,ここで残しておくことにしました^^
次回の図解!UbuntuでOpenVPNを使う:2. 証明書と認証鍵の作成では,VPNの要である認証局と認証鍵の作成です.