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とかのクラウドを利用してファイル共有すれば?という意見はあると思われる。 ここでは、個人情報等、クラウドには置きたくないファイルを自宅ネットワーク内に置くことを想定している。
最も参考になったページ
- DD-WRTとiPhone5sでVPNの構築(OpenVPN) (チョコボール室井の報告書)
間違いなく上記のページが最も参考になった。
この情報が無かったらOpenVPN環境構築はまず無理だったろうと思う。
なお、上記ページでは、WindowsにOpenVPNをインストールし、easy-rsa を使用して認証局(CA)の設置を行っているが、私は、他のページを参考に、vpnux PKI Manager を使用して行った。
また、上記ページでは、tls-auth鍵 を使用しているが、私は使用していない。
構成
回線
HGW (ホームゲートウェイ)
- ZXHN F660A
ルータ(VPNサーバ)
- BUFFALO WZR-1750DHP
- DD-WRT を適用
自宅ネットワーク内の機器(ファイルサーバ)
- Linux PC (有線LAN)
自宅ネットワーク外の機器
- iPhone (iOS 11)
概要
- 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
- DD-WRT を参照
- ルータにDD-WRTのファームウェアを適用する
- → DD-WRTへのファームウェア書き換え 参照
- DD-WRTをブリッジ相当の設定にする
- → 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のポートフォワーディングの設定でVPN用のポート(1194)をVPNサーバ 192.168.1.100 に転送する設定とする
- NURO光 ポートフォワーディング設定 参照
HGWのDNS設定
- なお、固定IPアドレス設定を行うとLAN内からホスト名で参照できなくなるのでHGWでDNS設定をする
- NURO光 DNS設定
環境構築:OpenVPN環境(共通)
OpenVPN
- OpenVPN 参照
VPN用の証明書、鍵の作成
- OpenVPN 認証局の設置 参照
- vpnux PKI Manager で、OpenVPN用の認証局の設置をする
- CA証明書/鍵、サーバ証明書/鍵、クライアント証明書/鍵、を作成する
- ca.crt
- ca.key
- server_サーバ名.crt
- server_サーバ名.key
- client_クライアント名.crt
- client_クライアント名.key
- dh2048.pem
- CA証明書/鍵、サーバ証明書/鍵、クライアント証明書/鍵、を作成する
環境構築:OpenVPN構築(サーバ側)
環境構築:OpenVPN環境構築(クライアント側)
次に、下記の通りクライアント側のVPN接続環境を構築する。
- iPhone に OpenVPN Connect (OpenVPN クライアントアプリ)をインストールする
- OpenVPNクライアント用設定ファイル(.ovpn)を作成する
- 改行コードに気を付ける (Unixの改行コードにする)
- OpenVPNクライアント用設定ファイル(.ovpn)を iTunes 経由でiPhoneに転送する
- iPhone の OpenVPN Connect から設定ファイルをインポートする
- 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光で使っている、とコメントがあるルータもあった。
- ASUS RT-AC68U (Amazon)
OpenVPNサーバ機能がある模様。