読者です 読者をやめる 読者になる 読者になる

グローバル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経由で試して見ましたが、ばっちり動作しました。