目次

出先(出張先)から撮り貯めた動画ファイルを視聴する

検証環境

・VMware WorkStationPro

・VM - 自宅サーバーを想定 debian Debian 5.10.162-1 (2023-01-21) x86_64
・VM - 出先からのクライアント端末を想定 Windows10Pro

目的に即した動作が確認出来たら、本番環境を構築予定

利用想定

【クライアント】

【VPNサーバー】

UPnPは、パケット遅延に厳しいらしい。VM環境で出来ても、インターネット経由では、パケット遅延によりDLNAでの実現は出来ないかもしれない

構築

ネットワーク

【クライアント視点】

  1. OS起動直後は、物理NIC (192.168.10.100/24)のみ
  2. OpenVPNクライアントにて、192.168.20.200:1194 へ接続
    • tapネットワークアダプタが作成される。 192.168.100.91/24
  3. OpenVPNクライアントが接続完了する
  4. クライアントは、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/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

・ 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」 に名称変更

この段階でVPNサーバーに接続して、「OpenVPN TAP-Windows6(TAP0)」がパブリックネットワークかプライベートネットワークか確認する

コントロール パネル > ネットワークとインターネット > ネットワークと共有センター

VideoLAN (VLC)
  1. VLCを起動させ、「プレイリスト」を表示させる
  2. 「プレイリスト」の左メニューにまん中あたり「ユニバーサルプラグ&プレイ」をクリックする
  3. VLC初回起動時の場合は、Windowsファイアーウオールで警告メッセージが表示されるので、「OpenVPN TAP-Windows6(TAP0)」のパブリック/プライベートに合わせてレ点を入れ、「アクセスを許可する」をクリックする

Windowsファイアーウオールで警告メッセージが表示されない場合は、Windowsファイアーウオールの詳細設定

[受信の規則]の「VLC media player」2か所において、プロファイル(パブリック/プライベート)を確認の事。

適切に設定していないと、後述のVLC設定を行っても、MiniDLNAサーバーにアクセス出来ない。

= 設定 =

  1. VLCを起動させ、ツール > 設定 を選択
  2. 画面左下[設定の表示]で「すべて」をクリックする。
  3. 詳細設定表示となるので、[ストリーム出力] → [出力手段] を選択
  4. 右側の[マルチキャスト出力インターフェース]に「TAP0」を入力。保存する
  5. VLCを終了させる

= 確認 =

  1. OpenVPNクライアントにて、OpenVPNサーバーに接続する
  2. VPN接続完了後に、VLCを起動させ、「プレイリスト」を表示させる
  3. 「プレイリスト」の左メニューにまん中あたり「ユニバーサルプラグ&プレイ」をクリックする

正しく設定出来ていれば、「HOME DLNA Server: MiniDLNA」と表示される。

この後は、「「HOME DLNA Server: MiniDLNA」をクリックすれば、動画ファイルが表示され、視聴したい動画ファイルをダブルクリックして視聴できる