rsyncで同期したファイルの内容が間違っていて困る

最近外のサーバのffmpegで生成したファイルをrsyncコマンドで家にコピーしています.しかし,先日rsyncでコピーが正常終了したファイルなのに再生が出来ないファイルが現れました.
恐らくffmpegの処理が最後まで終わっていない状態でrsyncを開始して,ffmpegの -movflags faststart が最後のあたりでrsyncで転送が終わった領域を書き換えたのではないかと思います.
rsyncはチェックサムを確認していたのでは?と確認するとどうも明示的にチェックサムのオプションを付与しないと簡易的なチェックしかしていないようです.
少し確認してみました.

内容が違うけれどファイルサイズとタイムスタンプの同じファイルを用意する.

$ mkdir from to
$ echo '0123456789' > from/01
$ echo '0123456780' > to/01
$ touch -d0 from/01
$ touch -d0 to/01
$ ls -l from/01 to/01
-rw-r--r-- 1 matoken matoken 11 11月  2 00:00 from/01
-rw-r--r-- 1 matoken matoken 11 11月  2 00:00 to/01

rsync の --archive option でコピーすると同じファイルと認識されて同期されない.内容も異なったまま.

$ rsync -av from/ to/
sending incremental file list

sent 73 bytes  received 12 bytes  170.00 bytes/sec
total size is 11  speedup is 0.13
$ diff from/01 to/01
1c1
< 0123456789
---
> 0123456780

rsync の --checksum optionを付与すると別のファイルと認識されて同期されて内容も同一になる.

$ rsync -av --checksum from/ to/
sending incremental file list
01

sent 147 bytes  received 35 bytes  364.00 bytes/sec
total size is 11  speedup is 0.06
$ diff from/01 to/01

ということでこんな感じに変更した.

$ rsync -avAHXce ssh --partial --append user@server:from/ to/

#実際はよく回線切れるのでwhile loop に入れてある.

EDIT: 転送済み部分のチェックはこれではNGで --append(既存のファイルに追記)を削る必要があった.--append-verify で行けそうな気がしたがこれもNGだった.

環境
$ dpkg-query -W rsync
rsync   3.1.2-2.2
$ lsb_release -d
Description:    Ubuntu 18.10
$ uname -m
x86_64

flickrの無料アカウントが1000枚までに制限される

メインアカウントは有料版だけどこのblogの画像なんかはサブ無料アカウントなので困りそう.ということでちょっとメモです.

  • 無料アカウントは1000枚の写真やビデオに制限される.

  • 期限までにダウンロード若しくはProアカウントへアップグレードしないとそれ以外のファイルは失われる.

  • 今なら初年度は30% offでProアカントが利用できる

  • これまで通り1000枚を超える写真やビデオをアップロードできるのは2019年01月08日火曜日まで.

  • 2019年01月08日火曜日以降1000枚を超える写真やビデオのアップロードはできなくなる.

  • 2019年02月05日以降1000枚を超える写真やビデオは古いものから順に削除される.

現在のアップロード数はユーザページで確認できる.非ログイン状態だと公開分の数しか表示されないようなので注意.
例えばこのアカウントは,

非ログイン状態だと
> 1,657 Photos

ログイン状態だと
> 2,131 Photos

31803107388 ef3a5ba36f

データのバックアップはアカウントページからデータのリクエストが出来る.

31803107528 f1af57cc96

とりあえずデータダウンロードして有料アカウントか別の場所に退避.まではいいけれどblogの画像url差し替えが面倒ですね…….

錦江町宿利原地区における「高速光通信サービス」開始に伴う住民説明会の開催及び説明会に参加

45599751622 900fc0e8eb
このポスターを見てがっかりしたのが4年前

2018年10月29日に鹿児島県肝属郡錦江町の宿利原地区に光回線が通るってことで住民説明会が.

自分の住んでいる地区じゃないけど覗いてきた.
参加者は4,5人.
ホスト側は11,2人くらい.
参加者は20人位を見込んでいたようで寂しい感じに.

(多分)役場の人の司会で始まる.
今回の回線は町で2/3負担しているらしい(4年前の大根占地区での提供開始時は町は関与しておらず負担もなし).

#以前問い合わせたときにはNTTでは採算が取れないので提供予定なし.町は負担予定なしとか言われたけど情勢が変わったよう.

NTT西日本の人の説明からはじまる.
11月01日から検索に出てくるようになるとのことでそこで検索して圏内かどうか確認できるとのこと.
多分このページ.

シナプスの人は会場の宿利原地区の大根櫓(今年もそろそろライトアップの時期?)の写真を使ったスライドで発表.
電話サポートは鹿児島弁でも通じるとか,電話が通じない場合は留守番電話にメッセージを残せて折り返しかけてくれるとかは良さそう.
Syapseパートナーの神川の鹿児島ITコンサルティングの紹介も.
電話番号は紹介するけどWEBは?てなった.
検索したら出てきた.

最後にドコモの人だったけどドコモショップ鹿屋寿の人も連れてきていたようで一番人多かった.
携帯電話とセットだと割引あるよとか,PC操作もスマホ操作もインターネットも同じ窓口で一律問い合わせ可能とか(Windows/mac以外のPC OS問い合わせたらどうなるんだろう?).
後はインターネット便利で楽しいよを伝えたいんだろうなな感じだった.
(発表中みんな立っててうn?てなった)

終わってから役場の人に聞いてみたら自分の住んでいる地区も来年同じような形で光回線引かれるかもだそう(町内で最後).
引かれるといいな…….
(逆に来年までは引かれることはないんだろうなという……)

しかし一般的なISP料金高いんですね.現在はdixでADSL 780円/月でそこだと980円/月だけど紹介されたのは4000円以上/月だった.

鹿児島県でもタンデム自転車の一般公道走行解禁

9031227954 6384054e80 z
画像は2012年の宮崎スカイライドで撮影したもの.宮崎県は2012年より解禁されている

以下のニュースで知ったのですが,2018年10月の道路交通法施行細則改正により2018年11月01日よりタンデム自転車の一般走行解禁となりました.
これまで鹿児島県ではサイクリングロードや特別なイベントでしかタンデム自転車には乗れませんでしたが,これからは鹿児島県内ならいつでも一般公道を走行できるようになりました.

> パラリンピックの自転車競技でも使われる2人乗りの「タンデム自転車」が、11月から鹿児島県内の公道を走行できるようになる。県公安委員会が19日、道路交通法施行細則を変更した。

2人乗りのタンデム自転車11月解禁 鹿児島県内、公道走行可能に | 鹿児島のニュース | 南日本新聞 | 373news.com

> 一般道での走行は先月末現在、全国22の府県で可能

MBCニュース | 2人乗りタンデム自転車 来月から一般道 解禁

鹿児島県警察でもアナウンスやチラシが公開されています.

> 鹿児島県では,道路交通法施行細則の一部を改正し,タンデム自転車で一般道路の走行が可能となりました

鹿児島県警察/一般道路におけるタンデム自転車での走行について
43830114450 56b40f36e444734033015 25a67161e1

以下のページは未だ改正前

> 平成29年6月16日 公安委員会規則第22号

鹿児島県道路交通法施行細則

ちなみにタンデム自転車の一般道路走行の禁止はこれまで条例で禁止されていたもので,都道府県により扱いが変わるので都道府県をまたぐ場合は注意が必要です.(自転車関連の条例は結構まちまちなのでタンデムに限らず注意が必要です)

Wikipediaによると2018年03月01日時点では15府県で二輪タンデム走行が可能なようです.

> 2018年3月1日現在、二人乗りの状態の二輪タンデム自転車が一般公道を走行することを認めているのは15府県である

前述のMBCニュースでは2018年09月末時点で22府県で走行可能となっているので4月から9月の間に7都道府県が増えているようです.
更に11月から鹿児島が加わって23府県以上に.
長らく長野のみだったことを思うと大分普及してきた感じがしますね.でも未だ半分なので他の都道府県も解禁されてほしいです.

ここまでは二輪タンデムの話.
実は後ろ二輪の三輪タンデムだとまた話が違うようで二輪タンデム禁止の東京都などでも乗れるようです.

> 後ろ2輪のトライデム3輪タンデムです。東京、大阪、愛知、静岡、新潟、山形、山口、長野、神奈川、福島、千葉 京都、兵庫 、福井、島根, 鳥取、富山,鹿児島,宮崎,佐賀、群馬、京都,大分,滋賀,山梨県 高知,福岡、鹿児島で公道を走行することが出来ます

東京タンデムは二人乗り自転車レンタル専門店

ややこしいですね><

Debian, Ubuntu で 上流のパッケージを借りてくる

以前以下のような記事を書きました.

今でもこのblogの中ではアクセスが多く,最近もトラックバックをもらいました.

この当時は arm64 の mozcパッケージがなくて自分でbuild したという話なのですが,現在はDebian では buster(testing), Ubuntu ではartful(17.10) 以降でパッケージが存在します.
なのでこの野良パッケージを使うよりも公式の上流パッケージを借りるほうが大抵の場合いいと思います.
ということで手順を書いておきます.

パッケージファイルだけが必要な場合はパッケージのページからダウンロード可能です.

野良パッケージは近日中に削除します.

Debian stretch arm64 に Debian buster arm64 の mozc を借りてくる

Debian stretch arm64 では mozc-data しかない
$ apt-cache search mozc
mozc-data - Mozc input method - data files

buster(testing) のmozc を借りてくることにする.

/etc/apt/preferences で buster の優先度を下げる

/etc/apt/preferences
Package: *
Pin: release n=buster
Pin-Priority: 100
/etc/apt/sources.list に buster(testing)追加 設定
deb http://deb.debian.org/debian buster main

sources.list の編集には apt edit-sources を使うと文法チェックをしてくれるのでおすすめ

パッケージ情報の更新
$ sudo apt update
mozcパッケージの確認
$ apt-cache search mozc
mozc-data - Mozc input method - data files
fcitx-dbus-status - Addon for Fcitx to set/get/monitor IM statuses via D-Bus
emacs-mozc - Mozc for Emacs
emacs-mozc-bin - Helper module for emacs-mozc
fcitx-mozc - Mozc engine for fcitx - Client of the Mozc input method
ibus-mozc - Mozc engine for IBus - Client of the Mozc input method
mozc-server - Server of the Mozc input method
mozc-utils-gui - GUI utilities of the Mozc input method
uim-mozc - Mozc engine for uim - Client of the Mozc input method
パッケージの導入
$ apt install fcitx-mozc -t buster

後は通常の apt update && apt upgrade で stretch で導入したパッケージは stretch で,buster で導入したパッケージはbuster で更新されるはず.

Ubuntu 16.04 LTS xenial arm64 に Ubuntu 18.04 LTS bionic arm64 の mozc を借りてくる

Debianの手順と同じでもokだと思うけど念の為以下の手順を真似してみる.

mozc は Ubuntu 17.10 artful から対応しているが,もうサポートされないのでUbuntu 18.04 bionic を使う.

標準のリリースを xenial に設定

/etc/apt/apt.conf.d/01ubuntu
APT::Default-Release "xenial";

mozc をpinningする

/etc/apt/preferences
Package: *mozc*
Pin: release n=xenial
Pin-Priority: -10

Package: *mozc*
Pin: release n=bionic
Pin-Priority: 900

/etc/apt/sources.list に buster(testing) を 追加 設定

/etc/apt/sources.list
deb http://ports.ubuntu.com/ bionic main universe

※sources.list の編集には apt edit-sources を使うと文法チェックをしてくれるのでおすすめ
※mirrorにより arm64 が置かれていないので注意

パッケージ情報の更新
$ sudo apt update
検索結果にmozcが出てくる
$ apt-cache search mozc
mozc-data - Mozc input method - data files
ibus-mozc - Mozc engine for IBus - Client of the Mozc input method
mozc-server - Server of the Mozc input method
mozc-utils-gui - GUI utilities of the Mozc input method
emacs-mozc - Mozc for Emacs
emacs-mozc-bin - Helper module for emacs-mozc
fcitx-mozc - Mozc engine for fcitx - Client of the Mozc input method
uim-mozc - Mozc engine for uim - Client of the Mozc input method
パッケージの導入
$ sudo apt install fcitx-mozc -t bionic

Redshift-gtk が位置情報を取得出来なくて困る

太陽の動きに合わせてモニタの色や明るさの調整をしてくれる f.LuxインスパイアなRedshiftというプログラムがあるのですが,新しい環境に導入しても動作しません.位置情報が取得できないようです.

44624259834 09ae5f8845

$ redshift
位置プロバイダ `geoclue2' を試行しています...
プロバイダ `geoclue2' を使用します。
方式 `randr' を使用します。
初期位置が取得可能になるのを待機しています...
Unable to start GeoClue client: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: 'redshift' disallowed, no agent for UID 1000.
Access to the current location was denied by GeoClue!
Make sure that location services are enabled and that Redshift is permitted
to use location services. See https://github.com/jonls/redshift#faq for more
information.
プロバイダから位置を取得できません。

geoclue2のdemoを試してみますがやはり動きません.agentを実行した状態だと動きます.

demoも動かない
$ sudo apt install geoclue-2-demo
$ /usr/lib/geoclue-2.0/demos/where-am-i

** (where-am-i:16681): CRITICAL **: 07:00:13.576: Failed to connect to GeoClue2 service: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: 'geoclue-where-am-i' disallowed, no agent for UID 1000
agentを実行してから試すと取得できるが確認メッセージが表示される
$ /usr/lib/geoclue-2.0/demos/agent &
$ /usr/lib/geoclue-2.0/demos/where-am-i
Geolocation service not in use
Geolocation service in use
Client object: /org/freedesktop/GeoClue2/Client/1

New location:
Latitude:    34.700000°
Longitude:   137.733300°
Accuracy:    25000.000000 meters
Timestamp:   2018年10月16日 07時01分35秒 (1539640895 seconds since the Epoch)
$ redshift
位置プロバイダ `geoclue2' を試行しています...
プロバイダ `geoclue2' を使用します。
方式 `randr' を使用します。
初期位置が取得可能になるのを待機しています...
Geolocation service not in use
Geolocation service in use
位置: 北緯 34.70°, 東経 137.73°

44434687985 2bbe2c44ec
44434688165 c1b5632101

GeoClueの設定で確認メッセージを表示しないように設定しておきます.

/etc/geoclue/geoclue.conf にredshiftの設定を追記
$ echo '[redshift]
allowed=true
system=false
users=' | sudo tee -a
/etc/geoclue/geoclue.conf
[redshift]
allowed=true
system=false
users=
agentを再起動して試す
$ kill %1
[1]+  Terminated              /usr/lib/geoclue-2.0/demos/agent
$ /usr/lib/geoclue-2.0/demos/agent &
[1] 32138
$ redshift
位置プロバイダ `geoclue2' を試行しています...
プロバイダ `geoclue2' を使用します。
方式 `randr' を使用します。
初期位置が取得可能になるのを待機しています...
Geolocation service not in use
Geolocation service in use
位置: 北緯 34.70°, 東経 137.73°
^CGeolocation service not in use

てことで,agentを実行しておけば動くようになりました.しかし,位置がかなりずれています.浜松あたりの座標が帰って来ていますが,実際は鹿児島です.
半時間はずれてそうです.

Redshift のhelpを確認すると手動で座標を指定できるようです.

redshift help
$ gtk-redshift --help
ヘルプを出力するには `redshift -h` を実行してください。
$ redshift -h
使い方: redshift -l 緯度:経度 -t 昼の色温度:夜の色温度 [オプション...]

時刻に従ってディスプレイの色温度を設定します。

  -h            このヘルプ メッセージを表示
  -v            詳細な出力
  -V            プログラムのバージョンを表示

  -b DAY:NIGHT  画面に適用する明るさ (0.1 から 1.0 の間)
  -c FILE       指定した設定ファイルから設定を読み込む
  -g R:G:B      追加で適用するガンマ補正
  -l LAT:LON    あなたの現在位置
  -l PROVIDER   自動で位置情報を更新するプロバイダを選択
                (`list' を指定すると利用可能なプロバイダの一覧が見られます)
  -m METHOD     色温度の設定方式
                (`list' を指定すると利用可能な方式の一覧が見られます)
  -o            ワン ショット モード (色温度の変更は継続して行いません)
  -O TEMP       ワン ショット 手動モード (色温度を設定します)
  -p            表示モード (パラメータの出力のみを行って終了します)
  -P            新しい色効果の適用前に既存のガンマ ランプをリセット
  -x            リセット モード (画面の調整を解除します)
  -r            色温度の緩やかな変更を無効にする
  -t DAY:NIGHT  昼間/夜間に設定する色温度

ニュートラルな温度は 6500K です。この値を用いると
ディスプレイの色温度は変更されません。これよりも高い値を設定すると
青い光が増え、低い値を設定すると赤い光が増えます。

既定値:

  昼間の温度: 6500K
  夜間の温度: 4500K

バグは <https://github.com/jonls/redshift/issues> に報告してください
$ redshift -l list
利用可能な位置プロバイダ:
  geoclue2
  manual

`-l プロバイダ名:オプション' でコロン区切りのオプションを指定します。
`-l プロバイダ名:help' でヘルプが参照できます。

OpenStreetMapなどで設定したい場所のURLで時計度の座標が確認出来ます.

座標を指定して実行してみます.小数点以下2桁しか見ないようです.

redshiftに手動で座標指定
$ redshift -l 35.69935:139.76957
方式 `randr' を使用します。
初期位置が取得可能になるのを待機しています...
位置: 北緯 35.70°, 東経 139.77°
^C
$ gtk-redshift -l 35.70:139.77 &

設定ファイルに位置情報設定しておきます.これでオプション無しでokになります.(秋葉原周辺の設定)

$ mkdir -p ~/.config/redshift
$ vi ~/.config/redshift/redshift.conf
~/.config/redshift/redshift.conf
[redshift]

location-provider=manual

[manual]
;秋葉原付近の差表
lat=35.70
lon=139.77

手動でとりあえず設定できましたが,移動するたびに設定するのは面倒なので別の位置情報取得データベースを試してみます.

GeoIPの導入とアップデート
$ sudo apt install geoip-bin geoip-database geoip-database-extra geoipupdate
$ sudo geoipupdate
$ geoiplookup $(curl -s ifconfig.me/ip)
GeoIP Country Edition: JP, Japan
GeoIP City Edition, Rev 1: JP, 13, Hyogo, Nishinomiya, 662-0934, 34.716702, 135.333298, 0, 0
GeoIP ASNum Edition: AS10013 FreeBit Co.,Ltd.

GeoIPは兵庫になりました.少し近づいたけどやはりかなりずれています.
これでうまく行ったらこんな感じで設定できるのですが.

GeoIPを使ったredshift利用例
$ gtk-redshift -l $( geoiplookup $(curl -s ifconfig.me/ip)|grep City | cut -f7-8 -d, | sed -e 's/,/:/' -e 's/\ //g' )

てことでagentを起動するのは面倒だし旅行の予定もないのでとりあえずマニュアル設定にしておきます.

環境
$ dpkg-query -W redshift redshift-gtk geoclue-2.0 geoclue-2-demo geoip-bin geoip-database geoip-database-extra geoipupdate
geoclue-2-demo  2.4.12-2
geoclue-2.0     2.4.12-2
geoip-bin       1.6.12-1
geoip-database  20180315-1
geoip-database-extra    20180315-1
geoipupdate     2.5.0-1
redshift        1.12-2
redshift-gtk    1.12-2
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

Raspbian stretch 2018-10-09

Raspberry Pi の Debian ベースのディストリビューションの最新版の Raspbian 2018-10-09 がリリースされたようです.

curl -sS -o – http://downloads.raspberrypi.org/raspbian/release_notes.txt | perl -e ‘$c=0;while(<STDIN>){if$c!=0 ) && ( $=~/^\ /{print $}elsif($c==0){print $_}else{exit} $c++}’
2018-10-09:
  * In startup wizard, assign keyboard to country as per Debian installer recommendations
  * In startup wizard, add option to use US keyboard in preference to country-specific option
  * In startup wizard, show IP address on first page
  * In startup wizard, check for existing wifi network connection and show it if there is one
  * In startup wizard, install language support packages for LibreOffice and other applications
  * In startup wizard, improve operation with keyboard only and no mouse
  * Password change in Raspberry Pi Configuration and startup wizard now works properly if passwords contain shell characters
  * Battery indicator plugin modified to cope with Pi-top hardware monitor crashing
  * Networking plugin hides wifi password characters by default
  * In Scratch 2 GPIO plugin, set pin from dropdown list rather than free text
  * In Scratch 2 SenseHAT plugin, swap x and y axis values for LED array
  * Include latest Adobe Flash player (31.0.0.108)
  * Include latest RealVNC Server (6.3.1)
  * Include libav-tools
  * Include ssh-import-id
  * Removed Mathematica
  * Merge in latest third-party code for Bluetooth ALSA interface
  * Add ability to prevent software update changing configuration files, by creating ~/.config/.lock file
  * Various other small bug fixes, tweaks and changes to text
  * Make dhcpcd work with 3G devices
  * Add hw acceleration to ffmpeg
  * Improved WiFi-BT coexistence parameters
  * Run fake-hwclock before systemd-fsck-root
  * Raspberry Pi PoE HAT support
  * Linux kernel 4.14.71
  * Raspberry Pi firmware 5b49caa17e91d0e64024380119ad739bb201c674

個人的には 「 Add hw acceleration to ffmpeg」 が嬉しいです.自分でbuildしなくてもよくなってそうです.

$ dpkg-query -W ffmpeg
ffmpeg  7:3.2.10-1~deb9u1+rpt2
$ ffmpeg 2>&1 | grep -o -E '\--enable-omx-rpi|\--enable-mmal'
--enable-omx-rpi
--enable-mmal

とりあえずダウンロードしておきます.

$ # ダウンロードURL確認
$ LANG=C wget --max-redirect=0 https://downloads.raspberrypi.org/raspbian_lite_latest 2>&1 | sed -En 's/Location: ([^ ]*).*$/\1/p'
https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-10-11/2018-10-09-raspbian-stretch-lite.zip
$ # ファイル確認
$ w3m -dump https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-10-11/
Index of /raspbian_lite/images/raspbian_lite-2018-10-11

   [ICO]                        Name                        Last    Size Description
                                                          modified
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[PARENTDIR] Parent Directory                                           -
[ ]         2018-10-09-raspbian-stretch-lite.info        2018-10-09  54K
                                                              13:34
[ ]         2018-10-09-raspbian-stretch-lite.zip         2018-10-09 351M
                                                              13:34
[ ]         2018-10-09-raspbian-stretch-lite.zip.sha1    2018-10-11   79
                                                              11:38
[ ]         2018-10-09-raspbian-stretch-lite.zip.sha256  2018-10-11  103
                                                              11:38
[ ]         2018-10-09-raspbian-stretch-lite.zip.sig     2018-10-10  473
                                                              13:37
[ ]         2018-10-09-raspbian-stretch-lite.zip.torrent 2018-10-11  28K
                                                              11:38
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Apache/2.4.10 (Debian) Server at downloads.raspberrypi.org Port 80
$ # bitttorrent と 署名ファイルダウンロード
$ wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-10-11/2018-10-09-raspbian-stretch-lite.zip.torrent https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-10-11/2018-10-09-raspbian-stretch-lite.zip.sig
$ # Transmission で ダウンロード
$ transmission-cli ./2018-10-09-raspbian-stretch-lite.zip.torrent
   :
$ # 署名確認
$ gpg --verify 2018-10-09-raspbian-stretch-lite.zip.sig

mysqldump を pv で制限

mysqldump 動いてる時間に同サーバで GNU social とか Nextcloud とかの mysql を利用しているアプリケーションが重くて使い物にならないです.nice + ionice は指定していますが効いてない感じ.
dump した sql を圧縮している xz コマンドが cpu を1 core 使い潰しているようです.このマシンは2 core あるのですが,もう1つの core もその他の処理でほぼ使い切って待ちが出ているような感じ.

$ vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0 328212 264788 212260 5628192    1    2    35   160    2   15 35  9 44 12  0
 1  1 328212 259136 212264 5628192    0    0     0   191 1497 3132 63  6 19 12  0
 1  1 328212 252492 212264 5628192    0    0     0    88  959 1716 81  6  7  6  0
 2  1 328212 248264 212264 5628196    0    0     0   114  973 1887 85  3  7  5  0
 2  0 328212 242572 212264 5628196    0    0     0    85  972 1967 74  5 15  5  0
 4  0 328212 241664 212100 5624380    0    0     0    97 1106 4226 91  7  2  2  0
 2  1 328212 234268 212100 5624384    0    0     0   140 1013 1815 70  5 19  7  0
 3  0 328212 235760 211944 5620076    0    0     0  2461 1289 4063 94  4  1  0  0
 1  0 328212 229656 211944 5620080    0    0     0   110  953 1685 61  6 18 15  0
 1  0 328212 224616 211952 5620072    0    0     0   151  983 1683 84  2  8  6  0

pv -L で帯域絞ってみました.
cpu の様子を見ながらだんだん絞っていって 128k 迄絞ってやっと xz の cpu 25〜40% 位になりました.この状態だと普通に使える感じです.
しばらくこれで試してみます.

pv で帯域制限
$ time sh -c "nice -n 19 ionice -c 3 mysqldump --defaults-file=/backup/micro/.my-backup.cnf --single-transaction --quick
--all-databases --events | pv -L 128k 2>/dev/null | nice -n 19 ionice -c 3 xz -9 > /dev/null"

real 127m16.113s
user 34m30.508s
sys 0m23.428s
cronでの実行
$ sudo -u backup crontab -l | grep mysqldump
14 3 * * *     umask 0266 && nice -n 19 ionice -c 3 /usr/bin/mysqldump --defaults-file=/mnt/backup/micro/.my-backup.cnf --single-transaction --quick --all-databases --events | pv -L 128k 2>/dev/null | nice -n 19 ionice -c 3 /usr/bin/xz -9 > /mnt/backup/micro/`date +\%F_\%T_$$`.sql.xz
環境
$ dpkg-query -W mysql-client-5.7 pv xz-utils
mysql-client-5.7        5.7.23-0ubuntu0.16.04.1
pv      1.6.0-1
xz-utils        5.1.1alpha+20120614-2ubuntu2
$ lsb_release -d
Description:    Ubuntu 16.04.5 LTS
$ uname -m
x86_64
$ grep -m1 model\ name /proc/cpuinfo
model name      : AMD Athlon(tm) II Neo N36L Dual-Core Processor

Firefox で DNS-over-HTTPS を試す

最近の Firefox はTrusted Recursive Resolver(TRR)を利用して DNS-over-HTTPS が利用できるようです.試してみました.

アドレスバーに about:config 入力して移動.

44211559615 6a29ddb6d5

network.trr.mode を設定.今回は`3`のTRRのみ利用を指定した.

44402653684 e26c646cb0
43309711340 4b5d902ae2

  • network.trr.mode

    • 0 : TRR無効(既定値).

    • 1 : 通常のDNSとTRRを並行実行して最初に帰ってきた結果を利用する.

    • 2 : TRRを優先利用.

    • 3 : TRRのみを利用.

    • 4 : 通常のDNSを利用する.TRRは情報収集のためだけに動く.

    • 5 : TRRを明示的に無効にする

次に network.trr.uri を指定.好みのDNS-over-HTTPS のリゾルバを指定.

43309712480 d417a108b5
44402653984 c8538ce5fe

about:networking#dns にアクセスしてTRRが true になっていれば TRR を利用しているはず.

44402654944 daac2b37e3

環境
$ dpkg-query -W firefox
firefox 62.0.3-1
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

44402653394 9392330ef0

Linux で DNS-over-HTTPS を利用する

Android で DNS-over-HTTPS が簡単に出来るようになりました.

Linuxだどうなんだろうと以下の`dns-over-https` を試してみました.ここでは Debian sid amd64 で試していますが,公式の手順には Ubuntu 18.04 LTS, macOS の手順が載っています.

導入例
$ sudo apt install git golang
$ git clone https://github.com/m13253/dns-over-https.git
$ cd dns-over-https
$ make
$ sudo checkinstall
規定値のサーバは Google Public DNS になっている.変更したい場合は設定ファイル( /etc/dns-over-https/doh-client.conf )を編集
$ sudo edit /etc/dns-over-https/doh-client.conf
CleanBrowsingのセキュリティフィルターを利用する場合の設定例
diff --git a/dns-over-https/doh-client.conf b/dns-over-https/doh-client.conf
index 3b5de14..1791397 100644
--- a/dns-over-https/doh-client.conf
+++ b/dns-over-https/doh-client.conf
@@ -11,7 +11,7 @@ listen = [
 upstream_google = [

     # Google's productive resolver, good ECS, bad DNSSEC
-    "https://dns.google.com/resolve",
+    #"https://dns.google.com/resolve",

     # CloudFlare's resolver, bad ECS, good DNSSEC
     #"https://cloudflare-dns.com/dns-query",
@@ -39,6 +39,9 @@ upstream_ietf = [
     # Blog: https://blog.cloudflare.com/welcome-hidden-resolver/
     #"https://dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion/dns-query",

+    # CleanBrowsing https://cleanbrowsing.org/dnsoverhttps
+    "https://doh.cleanbrowsing.org/doh/security-filter/"
+
 ]

 # Bootstrap DNS server to resolve the address of the upstream resolver
起動
$ sudo systemctl restart doh-client
名前が引けるのを確認
$ dig @127.0.0.1 | grep SERVER
;; SERVER: 127.0.0.1#53(127.0.0.1)
trace
$ dig +trace matoken.org @127.0.0.1

; <<>> DiG 9.11.4-P2-3-Debian <<>> +trace matoken.org @127.0.0.1
;; global options: +cmd
.                       24820   IN      NS      m.root-servers.net.
.                       24820   IN      NS      b.root-servers.net.
.                       24820   IN      NS      c.root-servers.net.
.                       24820   IN      NS      d.root-servers.net.
.                       24820   IN      NS      e.root-servers.net.
.                       24820   IN      NS      f.root-servers.net.
.                       24820   IN      NS      g.root-servers.net.
.                       24820   IN      NS      h.root-servers.net.
.                       24820   IN      NS      i.root-servers.net.
.                       24820   IN      NS      j.root-servers.net.
.                       24820   IN      NS      a.root-servers.net.
.                       24820   IN      NS      k.root-servers.net.
.                       24820   IN      NS      l.root-servers.net.
;; Received 239 bytes from 127.0.0.1#53(127.0.0.1) in 1334 ms

org.                    172800  IN      NS      a0.org.afilias-nst.info.
org.                    172800  IN      NS      a2.org.afilias-nst.info.
org.                    172800  IN      NS      b0.org.afilias-nst.org.
org.                    172800  IN      NS      b2.org.afilias-nst.org.
org.                    172800  IN      NS      c0.org.afilias-nst.info.
org.                    172800  IN      NS      d0.org.afilias-nst.org.
org.                    86400   IN      DS      9795 7 1 364DFAB3DAF254CAB477B5675B10766DDAA24982
org.                    86400   IN      DS      9795 7 2 3922B31B6F3A4EA92B19EB7B52120F031FD8E05FF0B03BAFCF9F891B FE7FF8E5
org.                    86400   IN      RRSIG   DS 8 1 86400 20181018050000 20181005040000 2134 . bYogBWKVV1SnjoHjS5LnLBE1mWC6UwkYT6muOjcHnuMNzJM1DY3YhSCT d9QOYlvvprUyD37xYIQ10BUZQ8hcNpnQ2TPUTNzd621lsqth6QK8zDN6 eP5AvZXlPy+9wni71rJIHy1wzepn9yrh3jp70zZhnEVxxgItWaYzsayY Jf+UfFQPmOKX0gn0GqcQ09CSZHdZhwbUT2AT1Rs0atkj6VaOy2TT1aQ1 gAtGF+5uA4uqLJegiEe/zneTeyuNE5QDQWKUNaeWEDE9kxylhv6m/3vE tQ8EHFpzOL9x+ed25LNcnRXH8K/xCW43R1FyaVNaA6xcsvGHCysqLneI v/RYMQ==
;; Received 813 bytes from 193.0.14.129#53(k.root-servers.net) in 210 ms

matoken.org.            86400   IN      NS      ns-cloud-d2.googledomains.com.
matoken.org.            86400   IN      NS      ns-cloud-d4.googledomains.com.
matoken.org.            86400   IN      NS      ns-cloud-d1.googledomains.com.
matoken.org.            86400   IN      NS      ns-cloud-d3.googledomains.com.
h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN NSEC3 1 1 1 D399EAAB H9PARR669T6U8O1GSG9E1LMITK4DEM0T NS SOA RRSIG DNSKEY NSEC3PARAM
h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86400 IN RRSIG NSEC3 7 2 86400 20181026101800 20181005091800 1862 org. edCrqcIYiHlMMzuacuX0DlobcQkymqClpK5C4QLzsNWtvp942bFRjbb2 WDX/6TsHO0noBNoKH2i+TU70WqpW7sVsXbjV9nkeLMZjxz/VLyAJOXWk 2ITvZwhjbe96lCSAIafm824pBx94ruieKZ2Yj8pYTBIrhDBoffjPhuem 44k=
a85qqkk8n39d1c6m55g8ucjhm6u3jjcs.org. 86400 IN NSEC3 1 1 1 D399EAAB A86TS1MQ34BR2A3D3CT8D5SCHKAPPBPJ NS DS RRSIG
a85qqkk8n39d1c6m55g8ucjhm6u3jjcs.org. 86400 IN RRSIG NSEC3 7 2 86400 20181022152743 20181001142743 1862 org. G15dhaW+53QBX9nTtsIUCnSRrMO0FCkQJE3jydb6hmRQEA328trp9OqK 6fuvl+RZBhBFeMeJV1Tz0Uezp9YvymfRWwdHiiFFLy3KBt5cTZJUXxTZ jXnMT9PoHZcIVJzN65vqQHDI2MzWYoQYr1WoKmJxOC5FQzFctZElyzEq fNQ=
;; Received 654 bytes from 199.19.56.1#53(a0.org.afilias-nst.info) in 217 ms

matoken.org.            120     IN      A       153.121.44.87
;; Received 56 bytes from 216.239.38.109#53(ns-cloud-d4.googledomains.com) in 388 ms

パケットキャプチャしてみる

  • 通常のDNS

dig 2quepghecPeuj.matoken.org
$ sudo tcpdump -n -nn -t -l -A -s0 2>/dev/null | grep 2quepghecPeuj.matoken.org
IP 192.168.2.203.49026 > 192.168.2.211.53: 49901+ [1au] A? 2quepghecPeuj.matoken.org. (66)
E..^.,..@.0t...........5.J..... .........2quepghecPeuj.matoken.org.......).........
E...z.@.@.8f.........5...w............. .2quepghecPeuj.matoken.org..............x...y,W........2....ns-cloud-d2.googledomains.com.........2....ns-cloud-d4.S........2....ns-cloud-d1.S........2....ns-cloud-d3.S.........d.... m.G.......+...."m.........D....$m.r......#P....&m............ .H`H..2.......m.G......+W.. .H`H..4.......m............ .H`H..6.......m.r......Ov.. .H`H..8.......m..)........
^C
  • DNS over HTTPS

名前は見当たらない

dig 2quepghecPeuj.matoken.org @127.0.0.1
$ sudo tcpdump -n -nn -t -l -A -s0 2>/dev/null | grep 2quepghecPeuj.matoken.org
^C

loopback 部分はHTTPSになる前の部分は見える

dig 2quepghecPeuj.matoken.org @127.0.0.1
$ sudo tcpdump -i lo -n -nn -t -l -A -s0 2>/dev/null | grep 2quepghecPeuj.matoken.org
IP 127.0.0.1.52265 > 127.0.0.1.53: 25766+ [1au] A? 2quepghecPeuj.matoken.org. (66)
E..^C...@.8..........).5.J.]d.. .........2quepghecPeuj.matoken.org.......).........
E..bD(@.@..`.........5.).N.ad............2quepghecPeuj.matoken.org..............w...y,W..)........
^C
永続化
$ sudo systemctl enable doh-client

後は /etc/network/interfaces や NetworkManager で DNS server に 127.0.0.1 を指定する.

環境
$ dpkg-query -W git golang dnsutils
dnsutils        1:9.11.4.P2+dfsg-3
git     1:2.19.0-1
golang  2:1.10~5
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64