Raspberry Pi B+をOpenVPNクライアントにしてLAN to LANにしてみた(1)
参照:OpenVPN日本語情報サイト
色々と試行錯誤したので間違いがあるかもしれないけど、一応備忘録として
折角買ったRaspberry Pi B+ですが、色々いじって遊んでいるだけで実用的な事は殆どやってなかったりします。まぁいじっているだけでも結構楽しいマシンなのですが・・・
極めて低消費電力(3W程度)のマシンなので、電気代を気にすることなく24時間運転させています。折角24時間運転しているのだから何らかのサーバとして使えばとも思うのですが、ネックなのがストレージ(SDカード)の容量、ネットワーク性能(10/100base-T Ethernet)とCPUの処理性能です。何か実用的な用途はないかな?と考えた結果、OpenVPNクライアントとして実家のOpenVPNサーバに24時間接続させて互いのLANがシームレスに繋がるようにしてみようと思います。
目標はこんな感じに実家と現拠点のLANがシームレスに繋がり、互いのLANに接続されているマシンを自由に使えるようになることです。
前程として、実家のOpenVPNサーバは既に構築済みであり、OpenVPNクライアントからはサーバ側LANに繋がっている全てのマシンにアクセス可能な状態になっています。(このBLogに構築した際の記事があります。)したがって、今回はOpenVPNクライアント側を拡張し、クライアント側LANに繋がっている全てのマシンからOpenVPNを経由してサーバ側のマシンにアクセスできるように設定することが目標になります。
OpenVPN日本語情報サイトの「ドキュメント」ー「How To」を読むと、行うべき事は以下になるようです。
- Raspberry Pi B+にOpenSSL, OpenVPNをインストールする
これは当然。OpenVPNが入っていなければ話が始まりませんからね。
- 証明書、鍵ファイルの用意(生成)
証明書と鍵ファイルは既にMac ProのOpenVPNクライアント(Tunnelblick)で使用している物をそのまま使うことにします。
- クライアント用設定ファイルの作成
- サーバ設定ファイルの修正と、クライアント用ルートファイルの作成
- クライアントマシンでIPフォワードとTUN/TAPフォワードを有効化する
- サーバ側、クライアント側の両ルーターのスタティックルート設定
- クライアント側マシンでのOpenVPN自動起動設定
う〜む、面倒臭そうだし、いくつか方法が分からない事もありました。書き上げる前に忘れてしまうかもしれませんが、ボチボチ書いていきますか。
1. Raspberry Pi B+にOpenSSL, OpenVPNをインストールする
Raspberry Pi B+にOpenSSL, OpenVPNをインストールします。ワタシの場合、既にOpenSSLはインストール済みでしたので、OpenVPNだけをインストールしました。
# dpkg --list
〜略〜
ii openssl 1.0.1e-2+rvt+deb7u armhf Secure Socket Layer (SSL) binary and related cryptographi
〜↑既に入っていたので、OpenVPNだけ入れる〜
# apt-get update
# apt-get upgrade
# apt-get install openvpn
|
インストールが完了すると、起動時に自動的にOpenVPNが起動するようになっており、もしかしたら既にOpenVPNが動いているかもしれません。その場合、一旦OpenVPNを止め、起動時の自動起動もオフにしておきます。
# ps -efa | grep openvpn
root 4160 1 0 09:38 ? 00:01:31 /usr/sbin/openvpn --writepid 〜略〜
〜OpenVPNが動いているようなら止める〜
# /etc/init.d/openvpn stop
〜自動起動も一旦オフにしておく〜
# chkconfig openvpn off
|
2. 鍵ファイルの用意
今回、証明書と鍵ファイルは既にMac Proで使用していた物をそのまま使うことにします。以下のファイルをRaspberry Pi B+にコピーし、"/etc/openvpn" に配置しました。
- ca.crt
- client1.crt
- client1.key
# ls -l /etc/openvpn
-r-------- 1 root root 1212 6月 18 2011 ca.crt
-r-------- 1 root root 3756 6月 18 2011 client1.crt
-r-------- 1 root root 887 6月 18 2011 client1.key
|
う〜む、証明書や鍵ファイルを作ったのって、こんな昔だったか(^^;。
3. クライアント用設定ファイルの作成
クライアント用設定ファイルのサンプルが "/usr/share/doc/openvpn/examples/sample-config-files" 配下にあるので、これを "/etc/openvpn" 配下にコピーして編集します。
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn
# cd /etc/openvpn
〜client.confを任意のエディタ(ここではviを使用しています)で編集します〜
# vi client.conf
|
編集箇所、確認箇所は以下の赤字の部分です。
##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server. #
# #
# This configuration can be used by multiple #
# clients, however each client should have #
# its own cert and key files. #
# #
# On Windows, you might want to rename this #
# file so it has a .ovpn extension #
##############################################
# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client
# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun
〜略〜
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote my-server.ne.jp 1194
〜略〜
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key
〜略〜
# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo
# Set log file verbosity.
verb 3
# 以下を追加する
pull
float
|
[続く]
|