出先(出張先)から撮り貯めた動画ファイルを視聴する
検証環境
・VMware WorkStationPro
・VM - 自宅サーバーを想定 debian Debian 5.10.162-1 (2023-01-21) x86_64 ・VM - 出先からのクライアント端末を想定 Windows10Pro
目的に即した動作が確認出来たら、本番環境を構築予定
利用想定
【クライアント】
- クライアントはOpenVPNにて自宅サーバーへ接続、
- VLCソフトで視聴を想定
【VPNサーバー】
- 単体動作とする (事前に動画ファイルを置いておく)
- OpenVPNサーバー
- tap接続 (DLNAでUPnP[マルチキャストパケット]を利用。tunでは基本的にルータ越え出来ないので)
- DLNAサーバー
- クライアントはVLCのUPnP接続機能を利用想定
- 自宅内LAN(他の端末)へ接続は不要
- dummy NIC (仮想NIC)で実現させる
UPnPは、パケット遅延に厳しいらしい。VM環境で出来ても、インターネット経由では、パケット遅延によりDLNAでの実現は出来ないかもしれない
構築
ネットワーク
【クライアント視点】
- OS起動直後は、物理NIC (192.168.10.100/24)のみ
- OpenVPNクライアントにて、192.168.20.200:1194 へ接続
- tapネットワークアダプタが作成される。 192.168.100.91/24
- OpenVPNクライアントが接続完了する
- クライアントは、192.168.100.0/24へアクセス可能となる。(と言っても、192.168.100.200しか存在しないが)
必要パッケージのインストール
# apt install bridge-utils openvpn minidlna
設定ファイル (Server側)
ネットワーク設定
・ /etc/network/interfaces.d/ens33
auto ens33 iface ens33 inet static network 192.168.20.0 address 192.168.20.200 netmask 255.255.255.0 broadcast 192.168.20.255 gateway 192.168.20.1 dns-nameservers 8.8.8.8
・ /etc/network/interfaces.d/br0
auto br0 iface br0 inet static pre-up modprobe -a dummy pre-up ip link add dummy1 type dummy post-down ip link del dummy1 type dummy post-down modprobe -r dummy network 192.168.100.0 address 192.168.100.200 netmask 255.255.255.0 broadcast 192.168.100.255 bridge_ports dummy1
OpenVPN
- 証明書作成等の手順は割愛
・ /etc/openvpn/server/openvpn.conf
client-to-client の必要可否確認要
port 1194 proto udp dev tap ca /etc/openvpn/cert/ca.crt cert /etc/openvpn/cert/openvpn.example.com.crt key /etc/openvpn/cert/openvpn.example.com.key dh /etc/openvpn/cert/dh.pem server-bridge 192.168.100.0 255.255.255.0 192.168.100.91 192.168.100.95 push "dhcp-option DNS 192.168.100.200" push "dhcp-option DOMAIN example.com" client-to-client keepalive 10 120 tls-auth /etc/openvpn/cert/ta.key 0 cipher AES-256-CBC user nobody group nogroup persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 crl-verify /etc/openvpn/crl/crl.pem
・ /lib/systemd/system/openvpn-bridge.service
OpenVPN起動後に、tap0ネットワークデバイスが生成されるので、tap0とbr0をブリッジ接続を行う。
[Unit] Description=OpenVPN Bridge service Requires=openvpn-server@openvpn.service After=openvpn-server@openvpn.service [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/sleep 5 ExecStart=/usr/bin/bash -c "/sbin/brctl addif br0 tap0 && /sbin/ip link set tap0 up" ExecStop=/bin/true ExecStopPost=/sbin/brctl delif br0 tap0 [Install] WantedBy=multi-user.target
Requires=openvpn-server@openvpn.service
openvpn-server@openvpnが起動していない場合は、openvpn-bridge.serviceは起動しない。
After=openvpn-server@openvpn.service
openvpn-server@openvpnが起動した後に、openvpn-bridge.serviceは起動する。
OpenVPNが起動完了前(tap0デバイスが生成される前)に、openvpn-bridge.serviceが起動してしまうので、起動遅延を入れている
MiniDLNA
- /etc/default/minidlna はデフォルトのまま
・ /etc/minidlna.conf
# This is the configuration file for the MiniDLNA daemon, a DLNA/UPnP-AV media # server. #user=minidlna #merge_media_dirs=no #db_dir=/var/cache/minidlna #log_dir=/var/log/minidlna #log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn #presentation_url=/ #serial= #model_name=Windows Media Connect compatible (MiniDLNA) #model_number= #inotify=yes #strict_dlna=no #enable_tivo=no #tivo_discovery=bonjour #notify_interval=895 #minissdpdsocket=/run/minissdpd.sock #force_sort_criteria= #max_connections=50 #wide_links=no media_dir=/media/video network_interface=br0 port=8200 friendly_name=Home DLNA Server: MiniDLNA root_container=B album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg album_art_names=AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg album_art_names=Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
設定ファイル (Client側)
OpenVPN
- https://www.openvpn.jp/download/ (OpenVPN-2.6.0-I003-amd64.msi) デフォインストール
・ C:\Users\ユーザー名\OpenVPN\config\client.ovpn
client dev tap proto udp remote 192.168.20.200 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server key-direction 1 cipher AES-256-CBC verb 3 <ca> 省略 (CA証明書をコピペ) </ca> <cert> 省略 (クライアント証明書をコピペ) </cert> <key> 省略 (クライアント証明書の鍵ファイルをコピペ) </key> <tls-auth> 省略 (ta.keyをコピペ) </tls-auth>
ネットワーク (OpenVPN)
OpenVPNのネットワークデバイス名を変更する。(VLC設定で利用。入力ミスを防ぐため、名称を簡潔にした)
コントロール パネル > ネットワークとインターネット > ネットワーク接続
「OpenVPN TAP-Windows6」 → 「TAP0」 に名称変更
VideoLAN (VLC)
- https://www.videolan.org/vlc/ (vlc-3.0.18-win64.exe) デフォインストール
- VLCを起動させ、「プレイリスト」を表示させる
- 「プレイリスト」の左メニューにまん中あたり「ユニバーサルプラグ&プレイ」をクリックする
- VLC初回起動時の場合は、Windowsファイアーウオールで警告メッセージが表示されるので、「OpenVPN TAP-Windows6(TAP0)」のパブリック/プライベートに合わせてレ点を入れ、「アクセスを許可する」をクリックする
Windowsファイアーウオールで警告メッセージが表示されない場合は、Windowsファイアーウオールの詳細設定
[受信の規則]の「VLC media player」2か所において、プロファイル(パブリック/プライベート)を確認の事。
適切に設定していないと、後述のVLC設定を行っても、MiniDLNAサーバーにアクセス出来ない。
= 設定 =
- VLCを起動させ、ツール > 設定 を選択
- 詳細設定表示となるので、[ストリーム出力] → [出力手段] を選択
- VLCを終了させる
= 確認 =
- OpenVPNクライアントにて、OpenVPNサーバーに接続する
- VPN接続完了後に、VLCを起動させ、「プレイリスト」を表示させる
- 「プレイリスト」の左メニューにまん中あたり「ユニバーサルプラグ&プレイ」をクリックする
正しく設定出来ていれば、「HOME DLNA Server: MiniDLNA」と表示される。
この後は、「「HOME DLNA Server: MiniDLNA」をクリックすれば、動画ファイルが表示され、視聴したい動画ファイルをダブルクリックして視聴できる