NMOSのRDSサーバを立ててみる

仕事柄、SMPTE2110をちょっと触っているので、
NMOSもやらざるをえず。。。。

RDSサーバが必要なので自前で立ててみようかと。
検証でよく使われているそうなのでこれを使ってみます。
https://github.com/sony/nmos-cpp

Hyper-Vのクイック作成を使ってUbuntu20.04作ったので、
最小構成だとほかにもインストールしないといけないものがあるかもしれません。。。
(あたりまでだけど仮想スイッチでも問題ないです)

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal

さて必要なものをざっくりインストールしていきます。

$ sudo  apt-get update
$ sudo apt-get install build-essential g++ libcpprest-dev libc6 libavahi-compat-libdnssd-dev libnss-mdns avahi-utils git

続きを読む

NginxでWebsocketリバースプロキシ

グローバルIPの「www.xxx.yyy.zzz」に不特定多数のユーザにアクセスさせて、
内部のWEBサーバにアクセスさせたいという要望があったので備忘録。

「www.xxx.yyy.zzz」のルータに穴あけというなのDST NATをかけるだけの簡単なお仕事。ではなくいろいろと考えなきゃいけないことが。。。

問題なのは、3点
「アクセス元は不特定多数」「内部のWEBサーバには認証がない」「Websocketを使っている」

仕様として、
リバースプロキシによって認証したものだけを通す、
ようは「aaa.bbb.ccc.ddd:8080」にアクセスしたら、
Basic認証して「www.xxx.yyy.zzz:80」へ接続する形にします。

加えて「www.xxx.yyy.zzz:80」に
アクセスできるグローバルIPアドレスを「aaa.bbb.ccc.ddd」だけに限定しておけば、
「www.xxx.yyy.zzz」のセキュリティはある程度保てるかなと。
SSLじゃないのは勘弁してください・・・

続きを読む

GNS3のWEBUIを使ってみる

久々にネットワークを触ってみようかと思い。

ここからHyper-V用のVMをダウンロードしてきます
https://www.gns3.com/software/download-vm

ダウンロードされた「GNS3.VM.Hyper-V.2.2.15.zip」を解凍すると、
Hyper-V用のPowershellスクリプトが入っているのでそれを実行します
(中をみると、メモリ1GB、ディスクを2つ使う、みたいなことが書かれています))

管理者権限でPowershellを起動。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
一時的にPowershellの実行を許可(このプロセスを閉じるまで有効)

PS C:\WINDOWS\system32> Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y
PS C:\WINDOWS\system32>

同じディレクトリにあるPowerShellスクリプト「create-vm.ps1」を実行します

PS C:GNS3.VM.Hyper-V.2.2.15> .\create-vm.ps1

Name    State CPUUsage(%) MemoryAssigned(M) Uptime   Status     Version
----    ----- ----------- ----------------- ------   ------     -------
GNS3 VM Off   0           0                 00:00:00 正常稼働中 9.0

これでVMが作成されていると思います、
あとは「Default Switch」やCPUの数など環境に合わせて設定してください

続きを読む

aes67-web-monitorの構築

お久しぶりです

aes67-web-monitor
ブラウザでAES67ストリームを検聴することができるサービスです。
https://github.com/nicolassturmel/aes67-web-monitor

今回はHyper-V上にUbuntu環境を作ってみました。

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

やっぱりLTSやろ

必要なのパッケージをインストール

$ sudo apt install nodejs npm git
$ node --version
v8.10.0

もし、aes67-web-monitorが起動できない場合は、
Nodeのバージョンをあげるといいかもしれません。

$ sudo npm install n -g
$ sudo n stable
$ node --version
v12.18.4

Git cloneして、Nodeの依存関係を解決します。
この作業をrootでやるとエラーするのでユーザーで行います。

$ git clone https://github.com/nicolassturmel/aes67-web-monitor
Cloning into 'aes67-web-monitor'...
remote: Enumerating objects: 59, done.
remote: Counting objects: 100% (59/59), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 59 (delta 28), reused 44 (delta 15), pack-reused 0
Unpacking objects: 100% (59/59), done.
$
$ cd aes67-web-monitor
$ ll
total 72
drwxrwxr-x  5 neko6 neko6  4096  9月 17 12:57 ./
drwxr-xr-x 17 neko6 neko6  4096  9月 17 12:56 ../
drwxrwxr-x  8 neko6 neko6  4096  9月 17 12:56 .git/
-rw-rw-r--  1 neko6 neko6    13  9月 17 12:56 .gitignore
-rw-rw-r--  1 neko6 neko6  1536  9月 17 12:56 README.md
drwxrwxr-x  2 neko6 neko6  4096  9月 17 12:56 html/
drwxrwxr-x 61 neko6 neko6  4096  9月 17 12:58 node_modules/
-rw-rw-r--  1 neko6 neko6 15596  9月 17 12:56 package-lock.json
-rw-rw-r--  1 neko6 neko6   804  9月 17 12:56 package.json
-rw-rw-r--  1 neko6 neko6  5024  9月 17 12:56 rtp-worker.js
-rw-rw-r--  1 neko6 neko6  9570  9月 17 12:56 server.js
-rw-rw-r--  1 neko6 neko6  1222  9月 17 12:56 statistics.js
$
$ npm i
aes67-web-monitor@1.0.0 /home/neko6/aes67-web-monitor
├── UNMET PEER DEPENDENCY bufferutil@^4.0.1
├─┬ express@4.17.1
│ ├─┬ accepts@1.3.7
│ │ ├─┬ mime-types@2.1.27
│ │ │ └── mime-db@1.44.0
│ │ └── negotiator@0.6.2
│ ├── array-flatten@1.1.1
│ ├─┬ body-parser@1.19.0
│ │ ├── bytes@3.1.0
│ │ ├─┬ http-errors@1.7.2
│ │ │ ├── inherits@2.0.3
│ │ │ └── toidentifier@1.0.0
│ │ ├─┬ iconv-lite@0.4.24
│ │ │ └── safer-buffer@2.1.2
│ │ └── raw-body@2.4.0
│ ├── content-disposition@0.5.3
│ ├── content-type@1.0.4
│ ├── cookie@0.4.0
│ ├── cookie-signature@1.0.6
│ ├─┬ debug@2.6.9
│ │ └── ms@2.0.0
│ ├── depd@1.1.2
│ ├── encodeurl@1.0.2
│ ├── escape-html@1.0.3
│ ├── etag@1.8.1
│ ├─┬ finalhandler@1.1.2
│ │ └── unpipe@1.0.0
│ ├── fresh@0.5.2
│ ├── merge-descriptors@1.0.1
│ ├── methods@1.1.2
│ ├─┬ on-finished@2.3.0
│ │ └── ee-first@1.1.1
│ ├── parseurl@1.3.3
│ ├── path-to-regexp@0.1.7
│ ├─┬ proxy-addr@2.0.6
│ │ ├── forwarded@0.1.2
│ │ └── ipaddr.js@1.9.1
│ ├── qs@6.7.0
│ ├── range-parser@1.2.1
│ ├── safe-buffer@5.1.2
│ ├─┬ send@0.17.1
│ │ ├── destroy@1.0.4
│ │ ├── mime@1.6.0
│ │ └── ms@2.1.1
│ ├── serve-static@1.14.1
│ ├── setprototypeof@1.1.1
│ ├── statuses@1.5.0
│ ├─┬ type-is@1.6.18
│ │ └── media-typer@0.3.0
│ ├── utils-merge@1.0.1
│ └── vary@1.1.2
├── sdp-transform@2.14.0
├─┬ url@0.11.0
│ ├── punycode@1.3.2
│ └── querystring@0.2.0
├── UNMET PEER DEPENDENCY utf-8-validate@^5.0.2
├── vhost@3.0.2
└── ws@7.3.1

npm WARN ws@7.3.1 requires a peer of bufferutil@^4.0.1 but none was installed.
npm WARN ws@7.3.1 requires a peer of utf-8-validate@^5.0.2 but none was installed.

どうやら足りないものがあるようなので追加インストールします。

$ npm install bufferutil utf-8-validate
> bufferutil@4.0.1 install /home/neko6/aes67-web-monitor/node_modules/bufferutil
> node-gyp-build

> utf-8-validate@5.0.2 install /home/neko6/aes67-web-monitor/node_modules/utf-8-validate
> node-gyp-build

aes67-web-monitor@1.0.0 /home/neko6/aes67-web-monitor
├── bufferutil@4.0.1  extraneous
└── utf-8-validate@5.0.2  extraneous

これで準備はできました。

続きを読む