pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


OpenWrt 19.07.7 リリース (2021/02/18)

OpenWrt 19.07.7 が 2021/02/18 にリリースされていました。2 件の Security fix が含まれています。昨年末以降、パッチリリースの頻度がずいぶん頻繁になったなあ、という感じがあります。

リリースノートはこちら。 openwrt.org

以下は個人的なまとめ。

CVE-2020-36177

wolfSSL でキーサイズと大ジェクトサイズの処理に問題があり、本来書き込める範囲を超えたエリアに対する書き込みを行ってしまう脆弱性がある模様。

Description: RsaPad_PSS in wolfcrypt/src/rsa.c in wolfSSL before 4.6.0 has an out-of-bounds write for certain relationships between key size and digest size.

CVE-2021-3336

wolfSSL での TLS 1.3 に関する処理で DoTls13CertificateVerify で証明書の検証に関連する処理に問題があるようです。

Description: DoTls13CertificateVerify in tls13.c in wolfSSL through 4.6.0 does not cease processing for certain anomalous peer behavior (sending an ED22519, ED448, ECC, or RSA signature without the corresponding certificate).

NHK の事業収入と他の省庁や他の放送局の売上高を比較してみる

たまには IT とは違うネタで気になったことを調べてみます。

Twitter で以下のような比較を見かけたけれど、こういう比較のしかたには違和感を覚えるので、ざっくり調べてみました。

NHKの異常さが一目で分かる総予算比較
消防  168億円
海保 2,253億円
警察 3,615億円
NHK 7,548億円

警察予算について

警察予算については、令和元年度の予算についてここに記載がある。 https://www.npa.go.jp/hakusyo/r02/honbun/html/w7712000.html

警察庁予算 = 3075億円
都道府県警察予算 = 3兆4227億円

なるほど、全国規模だとそれなりの金額ですね。ちなみに、警察に関わる方の人数は、全国でおよそ29万人だそうです。 https://www.npa.go.jp/hakusyo/r02/honbun/html/w7711000.html

消防予算について

消防予算については、令和元年度の数値がここに記載されている。 https://www.fdma.go.jp/publication/hakusho/r1/chapter2/section1/47700.html

市町村の普通会計(地方公営事業会計以外の会計をいう。)における平成29年度の消防費決算額東京消防庁を含む。以下同じ。)は2兆62億円。 消防庁の令和元年度の当初予算額は、一般会計分と復興庁一括計上を合わせて194億33百万円の予算を確保している。

なるほど、全国規模だとそれなりの金額ですね。ちなみに消防に関わる方の人数は「全国726本部、職員約16万人、団員約83万人」だそうです。 https://www.soumu.go.jp/shoubou/

海上保安庁について

次のURLに令和元年度予算額と令和2年度概算要求額があります。 https://www.kaiho.mlit.go.jp/soubi-yosan/nyusatsu/koukoku/201502/shiyousyo/R2kannkeiyosanngaiyou.pdf

令和元年度予算 = 2,153億円
令和2年度概算要求額 = 2,480億円

海上保安庁は警察や消防と異なり地方自治体側の組織がないから、上記の金額が全て。これが多いのか少ないのか、という判断は難しいけれど、海上保安庁の人数はおよそ1万2千人 https://www.kaiho.mlit.go.jp/info/books/report2008/tokushu/p032_02.html

警察、消防に比べて人数が一桁少ないので、予算額が一桁小さいのは特に違和感を覚えない。

民放の売上高と比較してみる

比較の都合上、民放の決算期は2020年3月期の売上高を引用し、NHKの令和元年度予算額の事業収入を比べてみます。

テレビ局 売上高 or 事業収入
フジテレビ 6,314億円
日本テレビ 4,265億円
TBS 3,567億円
テレビ朝日 2,936億円
テレビ東京 1,451億円
NHK 7,247億円

NHKの事業収入の金額は大きいといえば大きいが、他の民放もそれなりの売上高です。また NHK は上記の予算に全国の NHK 地方局の予算も含まれているけれど、民放の場合は各地の民放局は上記とは全く別の会社ですから、NHK の予算規模について批判するとしたら、民放1社で NHK と同様に地上波2チャンネル, BS2チャンネル、ラジオ3波(R1, R2, FM)をカバーするとしたら、どの程度の規模の組織や予算規模になるか、ということを考えてみるとよいのではと感じます。今回はここまでの比較を行ってはいないけれど、ざっくり考えると NHK の予算が突出して大きすぎることはないと感じます。

ちなみに NHK の予算には国家予算からは国際放送に関する交付金35,9億円 (令和2年度政府予算案) が支出されているだけなので、基本、税金での運営は行われておらず、事業収入は基本的に受信料です。しかし放送法の規定により NHK の予算は国会承認事項なので、予算規模の約 5% の交付金しか税金は投入されていないけれど、予算は国会で審議承認されるわけですね。

https://www.nikkei.com/nkd/company/kessan/?scode=4676 https://www.nikkei.com/nkd/company/kessan/?scode=9404 https://www.nikkei.com/nkd/company/kessan/?scode=9401 https://www.nikkei.com/nkd/company/kessan/?scode=9409 https://www.nikkei.com/nkd/company/kessan/?scode=9413 https://www.nhk.or.jp/info/pr/yosan/assets/pdf/2020/youyaku.pdf https://www.nhk.or.jp/faq-corner/1nhk/01/01-01-14.html https://www.nhk.or.jp/faq-corner/1nhk/01/01-01-11.html

まとめ

Twitter で中途半端にバズっている NHK 予算と警察、消防、海上保安庁の予算の比較については、冷静に比較すると NHK の数字が極端に大きすぎるものではないように感じます。

単に数字の大小だけを比較するようなやり方は、一見わかりやすいように見えて、実は非常に恣意的な比較の可能性があるので、脊髄反射的に数字の大小だけに反応してはいけないですし、元ネタの方はこの数字の大小だけを安易にツイートするのではなく、何がどのように問題であるかをロジカルに説明すべきではないかと感じます。

また、人は往々にして自分の信じるものを検索してしまいがちです。しかし、それによって変な方向にバイアスがかかってしまうので、何事も疑ってかかる姿勢が必要だな、とも感じます。

ESET Cyber Security macOS Big Sur 対応版がリリース(ただし現時点では日本語版を除く)

以前の記事で ESET Cyber Security の macOS 対応版は3月以降のリリース予定という旨をまとめていましたが、macOS Big Sur 対応版が 6.10.600.0 として正式リリースされました。

pslabo.hatenablog.com

詳細はESET 社のこちらのページに掲載されていますが、個人向けについて 2021/02/25 付けでリリースされています。Apple M1 を搭載した Mac についても Rosetta2 でサポートされるとのこと。なお法人向けのバージョンは未リリースであり、2021年3月のリリースが予定されています。

support.eset.com

ただしこのリリースはあくまで日本語版以外の話。日本語版についてはキヤノンITソリューションズが日本総代理店のため、キヤノンITソリューションズからのリリースを待つ必要があります。ESET のダウンロードページでは日本語版が選択できませんし、そもそもブラウザの言語設定が日本語の場合はダウンロードページに飛べず、日本語のランディングページに遷移してしまいます。ブラウザの言語を英語にすればダウンロードページには遷移できますが、ダウンロードする言語種別の項目には Japanese がないため、日本語版は ESET のサイトからダウンロードできません。(以前は Japanese が選べたのですが)

現時点でキヤノンITソリューションズのサイトから入手可能なバージョンは 6.10.460.1 ですが、一部の機能を除いて macOS Big Sur でも利用可能であるけれど minor issue があります。個人的にはセキュリティ製品はできるだけ最新版を利用したいと考えていますし、minor issue に遭遇するたびに残念な気分になるため、現在利用している日本語版 6.10.460.1 をアンインストールして英語版 6.10.600.0 を一旦インストールし、日本語版 6.10.600.0 がリリースされた時点で再度入れ替えてみようと考えていますが、こういう方法はサポートを受けられない行為になる可能性が高いので、自己責任の範囲で試す内容ですね。

一般のユーザーは正当にサポートが受けられる組み合わせを用いる(CITS 経由で年間費用を支払い、CITS 経由で提供される日本語版のインストーラを用いる)べきでしょうから macOS Big Sur で ESET 製品を利用中の方はキヤノンITソリューションズからの日本語版 6.10.600.0 を待つのがよいと思います。

シェルスクリプトで OS によらず時刻をミリ秒単位で取得したい

シェルスクリプトで何かの処理を実行する際に、その実行にかかった時間を秒単位で計測したい場合は次のように実行することができます。

dt_start=$( date +"%s" )
何かの処理
dt_end=$( date +"%s" )

elapsed=$((dt_end - dt_start))
echo ${elapsed}

それでは、今度はミリ秒単位で計測しようと思って次のように実行してみると、Linux では問題なく計測できますが、macOS では意図通りに動作しません。

dt_start=$( date +"%s%3N" )
何かの処理
dt_end=$( date +"%s%3N" )

elapsed=$(( dt_end - dt_start ))
echo ${elapsed}

この理由は、macOS の date コマンドでは "%N" をサポートしていないためです。Linux では次のように結果を返しますが、

$ date +"%s%3N"
1613896343808

同じことを macOS で実行すると、こうなってしまいます。

$ date +"%s%3N"
1613896453N

このため、別の方法での解決策を考えてみたのですが、perl の Times::Hires を用いればミリ秒単位の時刻を取得できることに気づきました。具体的には次のように実行します。

$ perl -MTime::HiRes -e 'printf("%.0f\n",Time::HiRes::time()*1000)'
1613896697373

したがって、macOS のときだけ上記のように実行したいと考えた場合は、uname の値が Darwin の場合だけ perl を用いるように実装すれば良いでしょう。ただし RHEL, CentOS, Ubuntu でも perl はインストール済みのことが多いと思いますので、環境によらず、この方法でミリ秒単位の時刻を取得できると考えて良いでしょう。

今回の例を上記の方法で書き直すと、次のようになります。

dt_start=$( perl -MTime::HiRes -e 'printf("%.0f\n",Time::HiRes::time()*1000)' )
何かの処理
dt_end=$( perl -MTime::HiRes -e 'printf("%.0f\n",Time::HiRes::time()*1000)' )

elapsed=$((dt_end - dt_start))
echo ${elapsed}

古い MacBook に Ubuntu 20.04 LTS をインストールした際に WiFi が利用できない問題を解決する

MacBook 2009 Early に最新の macOS がインストールできなくなってしばらく経ちますが、Ubuntu 20.04 LTS をインストールして予備マシンとして使うことにしました。しかし実際にインストールしてみると、WiFi が認識されませんでした。

ここでは、その認識のために実施した操作をログとして残します。

実際に実施した操作

Ubuntu 20.04.02 LTS をインストールした MacBook で以下の操作を実施します。

有線LAN、または USB-WiFi アダプタを用いるなどしてインターネット側と通信できるようにしておく必要があります。

私の環境では、Buffalo WLI-UC-GNM2 があったので、一旦、これを使って無線LAN接続しました。

sudo apt update
sudo update-pciids
sudo apt install firmware-b43-installer
sudo reboot

これだけの操作により、OS の再起動後は内蔵の WiFi が利用できるようになりました。

参考にしたページ

以下のページにて、2016 年以降の MacBook Pro での WiFi 接続に関する問題の対処方法が記載されていましたので、これを参考にしました。

macbook pro 2016 以降のモデルでも Ubuntu にて Wi-Fi 接続可能に | ioridev blog

この記事では、reboot を実施後に追加の設定を行っていますが、手元の環境ではそれらの設定は不要でした。

参考: Ubuntu 20.04 LTS を MacBook にインストールする際の手順

手元で実施した手順の項目だけをログとして残します。

  1. ディスクユーティリティでパーティション分割を行い、インストール先パーティションを確保
  2. Ubuntu 20.04.2 LTS の iso をダウンロードし、USBメモリに焼く。(dd で rdiskX に焼きました)
  3. リカバリーモードで起動して csrutil disabled を実行
  4. ブートローダー reFind のインストール
  5. Ubuntu 20.04.2 LTS を焼いた USB メモリを装着して reFind より起動
  6. Ubuntu のインストールを実施後はブートローダーが上書きされていたため、reFind を再度インストール

OpenWrt 19.07 + asterisk でひかり電話ホームゲートウェイ経由の発着信を設定する

フレッツ光ひかり電話を契約している場合は、ひかり電話ホームゲートウェイと同一の内部ネットワークに接続しているスマートフォンに AGEPhone などの SIP アプリをインストールすることで固定電話の発着信が行えます。

しかしフレッツ光回線で DS-Lite による IPv4 接続を行う場合は、これができません。DS-Lite の場合はひかり電話ホームゲートウェイDS-Lite 対応のルータを接続し、そのルーターの内部ネットワーク側に PC やスマートフォンを収容します。しかしこの構成だと、ルーターの内部ネットワークからひかり電話ホームゲートウェイに接続する際に NAT が発生します。SIP は NAT を超えることが難しいため、このような構成の場合は SIP クライアントでひかり電話を利用できません。

そこで OpenWrt で構成した DS-Lite のルータに Asterisk を導入し、SIP の接続を中継する PBX を構成した際の設定をログとして残します。

前提の構成

以下の構成を前提に設定しました。

  • OpenWrt 19.07.x
  • OpenWrt の外部セグメントには WAN(IPv4 DHCP) と WAN6(IPv6 DHCP) を設定しておく

パッケージのインストール

OpenWrt 19.07.x では Asterisk 16 が利用できるので、今回の構成にあたり次のパッケージを追加しました。

libxml2
libcap
libedit
libsqlite3
jansson
asterisk16
asterisk16-cdr
asterisk16-chan-sip
asterisk16-pjsip
asterisk16-codec-ulaw
asterisk16-res-rtp-asterisk
asterisk16-codec-gsm
asterisk16-format-pcm
asterisk16-res-agi

基本的な挙動を内線通話で確認する

ベースとなる設定ファイルは、次のページで配布されている Asterisk 13 向けの設定を用います。

voip-info.jp

この設定ファイルには、内線番号 201 - 208 で相互に内線通話できる設定例が含まれています。また sip.conf では permit=192.168.0.0/255.255.0.0 が設定されているので、Asterisk は Class C Private IP address からの接続のみを受け入れるように設定されています。

そこで、この設定ファイルを適用し、2台のスマートフォンタブレットに AGEphone をインストールして相互に内線通話できることを確認しておきます。

AGEphone への設定は次のように行います。

ドメイン = OpenWrt の LAN 側 IPアドレス
ユーザID = 201 - 208 のいずれかの番号
認証ID = ユーザIDと同じ
パスワード = pass

ひかり電話ホームゲートウェイを使用する設定を追加する

Asterisk 経由で内線通話の発着信が行えることが確認できたら、ひかり電話ホームゲートウェイ経由で外線の発着信を行う設定を追加します。

これも基本的には「Asterisk 13 サンプル設定ファイル」で示されている例を参考に修正するだけの簡単な作業です。

voip-info.jp

ただし、この設定例を用いると、外線発信の際に 0 発信が必要となるため、たとえば 03-nnnn-nnnn の番号にかける際には 003-nnnn-nnnn とダイヤルしなければなりません。これはスマートフォンの電話帳に登録した番号にひかり電話でかけるときに面倒なので、0 で始まる市外局番はすべて 0 発信なしに掛けられるように設定変更します。

以下には作業記録をざっくりまとめました。

extensions.conf

  • MYNUMBER1 に はひかり電話の番号に変更する。

  • [defaults]exten => _0.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk)exten => _0.,n,Dial(PJSIP/${EXTEN}@hikari-trunk) に変更する。(0 で始まる番号はそのまま、ひかり電話でかけるようにする)

[from-hikari][from-hikari-hgw] に変更する(他の設定ファイルでも from-hikari-hgw と表記しているため)

pjsip.conf

sip.conf

  • [general] セクションに register => 7:password@hikari-hgw を記入する。

  • 次のセクションを追加する。(secret, username, fromuser, domain, host は適切に修正する)

[hikari-hgw]
context=from-hikari-hgw
type=peer
secret=XXXXXXXX
username=XXXN
fromuser=N
domain=192.168.X.1
fromdomain=192.168.X.1
host=192.168.x.1
insecure=port,invite
disallow=all
allow=ulaw
dtmfmode=inband
  • 201 から 208 の内線番号のパスワードは適切に変更する。

OpenWrt の試験系を VMware 上に作る

OpenWrt の設定を変更する際に、パッケージの追加を伴う変更を実施した場合は構成を切り戻すのが面倒に感じることがあります。

そこで仮想マシン上で動かす方法を調べてみたのですが、次のページに "OpenWrt on VMware HowTo" という情報がありました。

openwrt.org

qemu-img コマンドにより、openwrt-x86-generic-combined-ext4.img から VMDK を生成できるので、この VMDK を新規仮想マシンイメージのディスクとして追加すれば良いようです。

また、これらの方法で作成された OpenWrt 15.05 や 19.07 の ova もダウンロードできます。お手軽にテストしたい場合には ova を使うほうが便利ですね。

自分の環境でも試したい設定や構成がいくつかあったけど、切り戻しが面倒なので躊躇していましたが、VMware 上で動かすことができるならスナップショットが使えるので、気軽に試せそうです。