最終更新日: 2019-02-11 月 18:06
ホーム | 文書トップ | 目次

NURO光の自宅ネットワークにiPhoneをVPN接続してWOLでPCをスリープ復帰させてファイルを参照する

Table of Contents

やりたいこと

タイトルの通り、やりたいことは「NURO光の自宅ネットワークにiPhoneをVPN接続してWOLでPCをスリープ復帰させてファイルを参照する」である。(←長い)

VPNに関しては VPN(Virtual Private Network) を参照のこと。

具体的には、下記のことを実現する。

  • 自宅ネットワーク内の Linux PC はSMB(Samba)のファイルサーバであり、普段はスリープに入っている
  • 自宅ネットワーク内に DD-WRT化したルータを使用し、VPN(OpenVPN)サーバ を立てる
  • iPhoneを自宅ネットワークにVPN接続する
  • WOL(Wake-On-LAN)で Linux PC をスリープ復帰させる
  • iPhoneから Linux PC 内のファイルを参照する

※自宅ネットワーク内外でiPhoneからファイルを参照する用途であれば、DropBoxとかiCloudとかGoogleDriveとかのクラウドを利用してファイル共有すれば?という意見はあると思われる。 ここでは、個人情報等、クラウドには置きたくないファイルを自宅ネットワーク内に置くことを想定している。

最も参考になったページ

間違いなく上記のページが最も参考になった。

この情報が無かったらOpenVPN環境構築はまず無理だったろうと思う。

なお、上記ページでは、WindowsにOpenVPNをインストールし、easy-rsa を使用して認証局(CA)の設置を行っているが、私は、他のページを参考に、vpnux PKI Manager を使用して行った。

また、上記ページでは、tls-auth鍵 を使用しているが、私は使用していない。

構成

回線

HGW (ホームゲートウェイ)

  • ZXHN F660A

ルータ(VPNサーバ)

  • BUFFALO WZR-1750DHP

自宅ネットワーク内の機器(ファイルサーバ)

  • Linux PC (有線LAN)

自宅ネットワーク外の機器

  • iPhone (iOS 11)

概要

home_network_vpn01.png

  • LANのサブネットは 192.168.1.0
  • WANへのゲートウェイとなるHGW
    • WAN側のIPアドレスは XXX.XXX.XXX.XXX、これを DynamicDNS で登録したホスト名に紐づける
    • LAN側のIPアドレスは 192.168.1.1
  • OpenVPNサーバとなる ルータはブリッジ相当で使用し、DHCPサーバ、無線LAN等はOFFし、スイッチングハブとOpenVPNサーバの役割のみで使用する
    • VPNには関係しないので無線LANはONでもよい
    • 仮にこのルータが機能しなくなってもLANの運用に影響しないのがよいと考えた
  • OpenVPNは、「ルータモード」(tun)と「ブリッジモード」(tap)があるが、「ルータモード」(tun) を使用する
    • iPhoneはtapに対応していないとのこと
  • OpenVPNでは UDP でなく TCP を使用する
    • UDPだと失敗するとのこと
  • OpenVPNサーバとなる ルータの IPアドレスは 192.168.1.100 (固定)
  • ファイルサーバとなる Linux PC の IPアドレスは 192.168.1.101 (固定)
  • VPNのサブネットは 10.8.0.0
  • VPN(10.8.0.0)からLAN(192.168.1.0)へは IPマスカレードを使用して接続する
    • iPhone(例えば 10.8.0.2) から Linux PC(192.168.1.101)へはサブネットが異なるので通常、直接アクセスできないが、IPマスカレードにてこれを可能にする

環境構築:DD-WRT

環境構築:DynamicDNS

  • ダイナミックDNS 参照
  • DynamicDNSのサービスを利用してWAN側のIPアドレスに対応するホスト名を設定しておく

環境構築:NURO光 HGW設定

HGWの固定IPアドレス設定

  • 下記はIPアドレスが固定でないと困るので設定する
    • OpenVPNサーバとなる ルータの IPアドレスは 192.168.1.100 (固定)
    • ファイルサーバとなる Linux PC の IPアドレスは 192.168.1.101 (固定)
  • NURO光 LAN DHCP固定アドレス割当 設定

HGWのポートフォワーディング設定

HGWのDNS設定

  • なお、固定IPアドレス設定を行うとLAN内からホスト名で参照できなくなるのでHGWでDNS設定をする
  • NURO光 DNS設定

環境構築:OpenVPN環境(共通)

OpenVPN

VPN用の証明書、鍵の作成

  • OpenVPN 認証局の設置 参照
  • vpnux PKI Manager で、OpenVPN用の認証局の設置をする
    • CA証明書/鍵、サーバ証明書/鍵、クライアント証明書/鍵、を作成する
      • ca.crt
      • ca.key
      • server_サーバ名.crt
      • server_サーバ名.key
      • client_クライアント名.crt
      • client_クライアント名.key
      • dh2048.pem

環境構築:OpenVPN構築(サーバ側)

次に、下記の通りサーバ側のVPN環境を構築する。

なお、上記の設定の中で IPマスカレードの設定をしている

環境構築:OpenVPN環境構築(クライアント側)

次に、下記の通りクライアント側のVPN接続環境を構築する。

なお、iPhoneからLinux PCへのsmbアクセスはFileExplorer というアプリが使える。

環境構築:WOL環境構築

WOL使用環境構築

最後に、下記の通りWOLが使用できる環境を構築する。

LinuxのWOL設定は Linux Wake-On-LAN を参照。

  • DD-WRTのWake-On-LANの設定で、Wake-OnさせたいクライアントのMACアドレスとブロードキャストのIPアドレスを登録しておく
  • iPhoneに dd-wrt (Lite) アプリをインストール
  • (VPNに接続)
  • dd-wrtアプリ のメニューの Wake-On-LAN設定から、「Import WOL addresses from router」で上記で登録したアドレスをインポート
  • インポートしたアドレスを指定して「起動」

VPNに接続してしまえば、VPN内からWOLパケットを送信すればよい話で、難しい話ではないはずだが苦戦。

DD-WRTのWeb管理画面を、iPhoneのWebブラウザ(Safari,Chrome)から開いても、「Administration」タブ(Wake-On-LAN設定がある)を開けなかった為である。

(理由は未だ判っていないのだが、DD-WRTはクライアントの種類でアクセス制限をしている?)

これを回避する方法をいろいろと探っていたところ、dd-wrt アプリを使う方法に行きついた。

(2019.02.10)dd-wrtアプリが課金制になった模様。RemoteBoot WOL を使うようにした。

参考

DD-WRT以外の選択肢

最近のHGWはVPNに対応しているものもあるようなので、VPNをやりたいだけであれば、対応したHGWを提供しているインターネットプロバイダを選ぶのも手だろう。

また、市販のルータの正規のファームウェアでも、上位機種ではVPNに対応しているものもある。 ただし、ほとんどの場合、正規のファームウェアはルータモード/ブリッジモードといったモードによって、使える機能に制限がある。

例えば、WZR-1750DHP も PPTP には対応しているが、使えるのはルータモードの時だけである。

また、iPhone(iOS)では既にPPTPは非サポートであり、iPhone以外のクライアントで使用するにしてもセキュリティ上懸念がある。

DD-WRTであれば、機能毎に設定出来るため、様々な用途に使用できる。(ただし、設定にあたってそれなりの知識が必要となる)

(2017.10.9追記) レビュー等を見る限りで、NURO光で使っている、とコメントがあるルータもあった。

OpenVPNサーバ機能がある模様。

ホーム | 文書トップ | 目次
Created by Emacs 26.2 (Org mode 9.1.9)