ネットワーク」カテゴリーアーカイブ

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

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

続きを読む

DS-LiteとPPPoEを同時に使う

僕の環境はMikroTik CCR(RouterOS)を使っています。

で、
DS-LiteとPPPoE(IP非固定)を同時に使っていて、
かつDefault GatewayをDS-Liteに向けています。

[admin@MikroTik] /ip route print detail
 0 A S  dst-address=0.0.0.0/0 gateway=ds-lite gateway-status=ds-lite reachable check-gateway=ping distance=1 scope=30 target-scope=10 

 1  DS  dst-address=0.0.0.0/0 gateway=pppoe gateway-status=pppoe reachable distance=2 scope=30 target-scope=10 

しかし困ったことに、
この環境下だとCCRをVPNルーターとして使いたい時、
VPNのトラフィックがポート開放ができないDS-Lite経路となってしまい、
うまく接続することができません。
また、このままだとRouterOSの機能「Cloud」もDS-Lite側のアドレスを登録してしまいます。

なので、
「Cloud」への登録IPアドレスはPPPoE側のアドレスを登録し、
Mangleを書いて、PPPoEからのトラフィックはPPPoEへ返すようにしてみます。

続きを読む

マルチキャストテストツール

マルチキャストパケットをテストするためのツール。
ただ、igmp v2なのでPIM-SSMのテストはできなさそうです。

1)Linux

msend – send UDP messages to a multicast group
mreceive – receive UDP multicast messages and display them

https://github.com/troglobit/mtools/blob/master/README.md

# apt-get install libcurl4-openssl-dev libexpat1-dev
# apt-get install git
# apt-get install make gcc
# git clone https://github.com/troglobit/mtools
# cd mtools
# make
# ls
LICENSE.md  README.md  mreceive.8  mreceive.d    mreceive.o  msend.8  msend.d    msend.o
Makefile    mreceive   mreceive.c  mreceive.map  msend       msend.c  msend.map  ttcp.c
# ./msend -h
msend version 2.3
Usage:  msend [-g GROUP] [-p PORT] [-join] [-i ADDRESS] [-t TTL] [-P PERIOD]
              [-text "text"|-n]
        msend [-v | -h]

  -g GROUP     IP multicast group address to send to.  Default: 224.1.1.1
  -p PORT      UDP port number used in the multicast packets.  Default: 4444
  -i ADDRESS   IP address of the interface to use to send the packets.
               The default is to use the system default interface.
  -join        Multicast sender will join the multicast group.
               By default a sender never joins the group.
  -P PERIOD    Interval in milliseconds between packets.  Default 1000 msec
  -t TTL       The TTL value (1-255) used in the packets.  You must set
               this higher if you want to route the traffic, otherwise
               the first router will drop the packets!  Default: 1
  -text "text" Specify a string to use as payload in the packets, also
               displayed by the mreceive command.  Default: empty
  -n           Encode -text argument as a number instead of a string.
  -v           Print version information.
  -h           Print the command usage.
# ./mreceive -h
mreceive version 2.3
Usage: mreceive [-g GROUP] [-p PORT] [-i ADDRESS ] ... [-i ADDRESS] [-n]
       mreceive [-v | -h]

  -g GROUP     IP multicast group address to listen to.  Default: 224.1.1.1
  -p PORT      UDP port number used in the multicast packets.  Default: 4444
  -i ADDRESS   IP addresses of one or more interfaces to listen for the given
               multicast group.  Default: the system default interface.
  -n           Interpret the contents of the message as a number instead of
               a string of characters.  Use this with `msend -n`
  -v           Print version information.
  -h           Print the command usage.

2)Windows
http://www.dqnetworks.ie/toolsinfo/mcasttest/

MCastTest is a utility for testing IP multicast routing on your network.
You can add multiple tranmitters and listeners on different IP multicast groups.
By running this utility on multiple machines at different points in your network you can check that your multicast traffic is getting to where it is supposed to get to.

PIM-SSMをテストしたいけど、CLIツールがない。。。
たぶん、VLCはできると思います。。。