2016年3月10日木曜日

Buffalo BHR-4RV を OpenVPN クライアントへ

バッファローの有線 LAN ルータ BHR-4RV を OpenVPN のクライアントとしました。

OpenVPN クライアント化した BHR-4RV です。

背景

事情に遠隔地から自宅 LAN へアクセスする必要があり、以前より自宅サーバへ OpenVPN サーバを用意して、パソコンから OpenVPN クライアントを使用して接続していました。

今回、各パソコンへインストールしていた OpenVPN クライアントを廃止して、OpenWrt をインストールした BHR-4RV へ OpenVPN クライアントを設定して我が家の OpenVPNサーバへ接続するようにしました。こにより BHR-4RV の LAN ポートへ接続したパソコンが自動的に我が家の LAN へアクセスできるようになりました。

なお我が家の OpenVPN の設定は、以前記事にした時と基本的に変更はありません。
FreeBSD の自宅サーバへ OpenVPN をインストール(ルーティング方式)
http://near-unix.blogspot.jp/2014/08/freebsd-openvpn.html

参考ウェブサイト

今回の OpenVPN クライアントの設定において、次のウェブサイトを参考にしました。
OpenVPN Setup Guide for Beginners [OpenWrt Wiki]
https://wiki.openwrt.org/doc/howto/vpn.openvpn

OpenWrt with OpenVPN client on TP-Link TL-MR3020
https://www.loganmarchione.com/2014/10/openwrt-with-openvpn-client-on-tp-link-tl-mr3020/

BHR-4RV のネットワーク設定

BHR-4RV のネットワークの接続方法は、WAN ポートを遠隔地にあるフレッツ光のルータへ DHCP 接続した後、OpenVPN 接続で我が家の OpenVPN サーバへアクセスするようにしました。いわゆる二重ルータ方式です。

遠隔地のフレッツ光のルータのサブネットが 192.168.1.1 となっており、我が家のサブネットが 192.168.24.1 となっています。この二つのサブネットに干渉しないように今回は BHR-4RV のサブネットを 192.168.42.1 に設定しました。

OpenVPN のインストール

opkg コマンドで次の二つのパッケージをインストールしました。一緒に関連するパッケージもインストールされました。なお OpenVPN のパッケージは、サーバもクライアントも一緒で、設定ファイルでどちらにするか決定します。
# opkg update
# opkg install openvpn-openssl
# opkg install luci-app-openvpn

OpenVPN の設定

いつもであればコマンドラインからの設定を行うところですが、今回はブラウザの設定画面(LuCi)を使って設定しました。この設定画面で設定した内容は、OpenVPN の設定ファイル(/etc/config/openvpn)へ自動的に反映されます。なおここでは、具体的な OpenVPN の設定については、記述を割愛しています。

[Services] - [OpenVPN] のページで設定を行いました。すでに三つのサンプル(custom_config, sample_server, sample_client)が存在しています。 この中から sample_client を使って設定を行いました。

 [Edit] ボタンをクリックして設定ページへ移行します。ここで必要事項の設定を行いましたが、不足分の項目はページ下部にある [Additional Field] の部分で、必要項目を選択しては [Add] ボタンをクリックして追加しました。私の場合には以下の項目を追加しました。項目を追加した後、空欄の状態すると項目は削除されます。ca, cert, key の項目は、追加すると直ぐに鍵や証明書ファイルを指定しなければ、項目は消去されてしまいますので注意が必要です。
・ca
・cert
・key
・keepalive
・proto
・port

OpenVPN の接続確認

[Services] - [OpenVPN] のページへ戻って、[sample_client] の項目の "enable" の部分へチェックマークを入れます。[save & Apply] ボタンをクリックした後、[Start] ボタンをクリックして OpenVPN の接続を開始します。OpenVPN の接続が成功したら "Started" の項目が "no" から "yes" へ変化します。

以上の設定で BHR-4RV と自宅の間が OpenVPN による接続が可能となりました。通信が確率されているか確認方法としては、 BHR-4RV 上から ping コマンドで接続できていることを確認しました。
なお BHR-4RV の LAN ポートへ接続しているパソコンは、この時点ではまだ自宅 LAN へ接続出来ていません。
# ping 192.168.24.1

OpenVPN 接続を LAN ポートへ

BHR-4RV と自宅 LAN の間が OpenVPN により接続できたことが確認されたところで、この OpenVPN の接続口(tun0)を LAN ポート(br-lan)へ接続します。設定は [Network] - [Interfaces] で行いました。

[Add new interface] のボタンをクリックして新しいインターフェースの設定のページ [Create Interface] ヘ移行します。

以下のように OpenVPN のインターフェースの設定を行いました。設定完了は、[Submit] のボタンをクリックします。
Name of the new interface : vpn
Protocol of the new interface : Unmanaged
Create a bridge over mulitiple interface : (none)
Cover the following interface
 -*- Custom Interface : tun0

ネットワーク設定の [Network] - [Interfaces] に戻って、先ほど作った [vpn] の項目をファイヤーウォール設定のために再度編集します。
[Interface - VPN] のページの中の [Firewall Settings] の中で一番下の unspecified -or- create を選択して "vpn" の文字を入力して vpn の名前のファイヤーウォール設定を作ります。
Create / Assign firewall-zone
 -*-  unspecified -or- create : vpn

ファイヤーウォールの設定ページ [Firewall - Zone Settings - Zone "vpn"] へ移行したところで以下のように設定しました。設定が終了したところで [Save & Apply] ボタンをクリックします。
Name : vpn
Input : reject
Output : accept
Forward : reject
Masquerading : (check)
MSS clamping : (check)
Covered networks : vpn

Inter-Zone Forwarding
Allow forward to destination zones
 - - lan : (none)
 - - wan : (none)
Allow forward from source zones
 -*- lan : (check)
 - - wan : (none)

パソコンから動作確認

以上の設定を終了させたところで、念の為、BHR-4RV を再起動させて、LAN ポートへ接続したパソコンから自宅 LAN へ OpenVPN 経由でアクセスできることを確認しました。

全てのパケットを自宅 LAN 経由にする場合

我が家の OpenVPN サーバの設定では、クライアント側へ通信パケットの全てを自宅 LAN を経由して外部のインターネットへ接続するように "push" 設定(要求設定)を行っています。そのため通信パケットは、自動的に自宅 LAN を経由するようになっています。
push "redirect-gateway def1"

しかし OpenVPN サーバ側にこの "push" 設定が行われていない状態で、自宅 LAN 経由で通信パケットを通過させたい場合には、以下の設定を行います。

[Services] - [OpenVPN] のページから再度 [sample_client] の設定のページを開いて、左上にある "Switch to advanced configuretion" をクリックして、拡張設定のページへ移行します。

そして [VPN] のタブを開いて、[Additional Field] の部分で "redirect_gateway"  を選択して [Add]  ボタンをクリックします。そして追加された [redirect_gateway] の項目の中から "def1" を選択して [Save & Appply] ボタンをクリックして設定を完了します。これで再度 OpenVPN を接続し直すと通信パケットは OpenVPN サーバ経由で全て流れて行きます。

0 件のコメント:

コメントを投稿