グローバルIPがなくても外部からLANにアクセスしたい

前回、VPSサーバを借りることで、グローバルIPアドレスがない環境でNASを外部からアクセスできるようにする方法を紹介しました。VPSサーバをVPNサーバにして、NASVPNクライアントとして常時接続しておく方法です。

今回は、NAS以外のLANにある端末もVPN経由でアクセスできるようにすることを目指します。状況としては下図のような状況で、出先でノートPCから家にあるPCへアクセスすることを目指します。

 

f:id:shimobepapa:20161205125648p:plain

このためには、以下の4つの設定をする必要があります。

1. VPN接続したクライアントが192.168.1.*あてのアクセスを VPNへアクセスするように設定する

2. VPN内で192.168.1.*のアドレスはNASに送られるように設定する

3. NASVPNから届いた192.168.1.*宛の通信を、LANに流すようにする。またLANから届いた10.8.0.*宛の通信をVPNに流すようにする

4. LAN内のPCから10.8.0.*にアクセスしようとした場合、NASへパケットを渡すようにしなければいけない

 

1. VPN接続したクライアントが192.168.1.*あてのアクセスを VPNへアクセスするように設定する

VPNに接続したクライアントは、前回した設定ではすべての通信をVPNを通してするわけではなく、10.8.0.*宛の通信のみをVPN経由で行うようになります。そのため、192.168.1.*にアクセスしようとすると、VPN経由ではなく普通にインターネットに192.168.1.*を探しにいってしまいます。

192.168.1.*のアクセスもVPNを通すようにするために、サーバの設定ファイルに

push "route 192.168.1.0 255.255.255.0"

という記述を追加します。これで、192.168.1.*宛の通信がVPNを通るようになります。

2. VPN内で192.168.1.*のアドレスはNASに送られるように設定する

前回、VPNサーバの設定ファイルに

username-as-common-name
client-config-dir ccd

という二行を足しましたが、そこにさらに次を追加します。
route 192.168.1.0 255.255.255.0

その上で(nasというユーザ名で、NASが接続している時)、前回さくせいした

/etc/openvpn/ccd/nas

ファイルに、

iroute 192.168.1.0 255.255.255.0

という一行を追加します。こうすることで、192.168.1.*宛のパケットが、NASに向かうようになります。

 3.NASVPNから届いた192.168.1.*宛の通信を、LANに流すようにする。またLANから届いた10.8.0.*宛の通信をVPNに流すようにする

IPフォワードという機能を有効にする必要があります。

こちらは、参考にしたページを紹介させていただきます。

Linuxでiptablesとかフォワーディングとか - mokky14's IT diary

ASUSTOR NASでも上記のページと同じ方法で、IPフォワードを有効にすることができました。

4. LAN内のPCから10.8.0.*にアクセスしようとした場合、NASへパケットを渡すようにしなければいけない

基本、192.168.1.* というアドレスから、10.8.0.*といったアドレスへ通信を行おうとしたら、デフォルトゲートウェイであるルータにまずはパケットを送ります。そのため、ルータが10.8.0.*宛のパケットを受け取ったら、NASヘ転送するように設定する必要があります。

ルータの設定の仕方は、ルータのメーカによって名称が違うようですが、例えばAterm(NEC)ならば、「静的ルーティング」という機能を使います。宛先アドレス「10.8.0.0/24」のゲートウェイNASのアドレスを指定してあげることで、10.8.0.0/24宛のパケットをNASへまわすことができるようになります。

1〜4の設定をすることで、VPN接続したクライアントからLAN内のマシンにアクセスできるようになります。macの画面共有などVPN経由で試して見ましたが、ばっちり動作しました。

 

 

自宅サーバとして使用する基本

AS3102TはApacheなどの基本的なサーバとしての機能は、Webインターフェース(AMD)で設定することができます。

公式のサポートページなど色々説明がありましたので、参考にしながら設定すれば基本的な機能は使うことができます。

それ以上に色々しようと思った場合は、端末にSSHでアクセスできるようにして(ADMのサービスから端末を選択、SSHサービスを有効にする)コマンドラインから各種設定を行うことで実現できます。

ASUSTOR NASのOSはAMDと書かれておりますが、カスタマイズされたLinuxのようです。ただ、通常のディストリビューションとは色々違うので、苦労します。

entware-ng

apt-getのようなパッケージ管理ツールですが、ASUSTOR NASではentware-ngというものが利用できます。entware-ngはApp Centralからインストールできます。まずはこれをインストールします。その後、SSHでログインし、色々必要なパッケージをインストールします。

(とりあえず必要なコマンド)

opkg update   リストをアップデート

opkg list   インストール可能なパッケージの一覧

opkg insall    インストール

gccや、makeなどもこちらからインストールしないと使用できません。

インストールしたものは、基本/opt/binに格納されるようです。

場合によっては(元々入っているApacheで動かしているcgiからコマンドをよびだした時とか)、/opt/binにパスが通っていなくてエラーになることもあったので注意が必要です。

あともう一点注意点ですが、entware-ngではopkg installでインストールしても、ヘッダーファイルがインストールされません。

Using gcc (native compilation) · Entware-ng/Entware-ng Wiki · GitHub

にありますように、ヘッダーは別途インストールする必要があります。

初めまして

数年前、RAIDの復旧をミスしてデータを全ロストしてから、しばらくNASを使用していませんでした。しかし、クラウドストレージも使いにくく子供の写真なども増えてきて、やっぱNASが必要と今年初めに NASを新調しました。

4Kテレビや4Kビデオカメラを活かしたくて、4KのHDMI出力がついたASUSTOR 3102TというNASを買い、ANアンプに接続して使用しています。

書き込み速度などのNASとしての基本性能は上々と思いますが、なかなかHDMI出力を活かしたマルチメディアサーバとしては使えていません。なんとなく勿体無く思い、折角だし自宅サーバとして、活用してみようと思い立ち、色々したことを中心にこのブログにまとめていきたいと思います。