【メモ】 Ubuntu 16.04 に nheqminer をインストールして zcash を掘る #仮想通貨 #GPU

前回の CUDA インストールに続き nheqminer のインストールして zcash を掘ります。
基本的に公式ドキュメントの手順でうまく行きますが細かいところがコピペでは完結しなかった気がします。

$ git clone https://github.com/nicehash/nheqminer.git

$ export CUDA_CUDART_LIBRARY="/usr/local/cuda/lib64/libcudart.so"

$ cd nheqminer/cpu_xenoncat/asm_linux 

$ chmod 774 ./fasm

$ sh assemble.sh

$ cd ../../../

$ mkdir build && cd build

$ cmake -DCUDA_CUDART_LIBRARY=CUDA_CUDART_LIBRARY ../nheqminer/

$ make -j $(nproc)

ここまでエラー無く完走すればビルドは完了。
後は自分の環境にあわせてオプションを与えて実行してあげればよい。

$ ./nheqminer -h

        ==================== www.nicehash.com ====================
                Equihash CPU&GPU Miner for NiceHash v0.5c
        Thanks to Zcash developers for providing base of the code.
            Special thanks to tromp, xenoncat and djeZo for providing 
              optimized CPU and CUDA equihash solvers.
        ==================== www.nicehash.com ====================

Parameters: 
        -h              Print this help and quit
        -l [location]   Stratum server:port
        -u [username]   Username (bitcoinaddress)
        -a [port]       Local API port (default: 0 = do not bind)
        -d [level]      Debug print level (0 = print all, 5 = fatal only, default: 2)
        -b [hashes]     Run in benchmark mode (default: 200 iterations)

CPU settings
        -t [num_thrds]  Number of CPU threads
        -e [ext]        Force CPU ext (0 = SSE2, 1 = AVX, 2 = AVX2)

NVIDIA CUDA settings
        -ci             CUDA info
        -cv [ver]       Set CUDA solver (0 = djeZo, 1 = tromp)
        -cd [devices]   Enable CUDA mining on spec. devices
        -cb [blocks]    Number of blocks
        -ct [tpb]       Number of threads per block
Example: -cd 0 2 -cb 12 16 -ct 64 128

自分の場合は bitcoin でも有名な slushpool でプールマイニングをしているので

    -l でプールを指定
    -u でプールの ID と worker 名
    -t で CPU のスレッド数
    -cd でビデオカード(NVIDIA)の 0 番 ※ -od

を指定して実行した。

$ ./nheqminer -l zec.slushpool.com:4444 -u [USERID].worker1 -t 4 -cd 0

        ==================== www.nicehash.com ====================
                Equihash CPU&GPU Miner for NiceHash v0.5c
        Thanks to Zcash developers for providing base of the code.
            Special thanks to tromp, xenoncat and djeZo for providing 
              optimized CPU and CUDA equihash solvers.
        ==================== www.nicehash.com ====================

Setting log level to 2
[16:13:02][0x00007f11dc23f740] Using SSE2: YES
[16:13:02][0x00007f11dc23f740] Using AVX: YES
[16:13:02][0x00007f11dc23f740] Using AVX2: NO
[16:13:03][0x00007f11d3970700] stratum | Starting miner
[16:13:03][0x00007f11d3970700] stratum | Connecting to stratum server zec.slushpool.com:4444
[16:13:03][0x00007f11d116b700] miner#4 | Starting thread #4 (CUDA-DJEZO) GeForce GTX 1060 3GB (#0) M=1
[16:13:03][0x00007f11d296e700] miner#1 | Starting thread #1 (CPU-XENONCAT-AVX) 
[16:13:03][0x00007f11d316f700] miner#0 | Starting thread #0 (CPU-XENONCAT-AVX) 
[16:13:03][0x00007f11d196c700] miner#3 | Starting thread #3 (CPU-XENONCAT-AVX) 
[16:13:03][0x00007f11d216d700] miner#2 | Starting thread #2 (CPU-XENONCAT-AVX) 
[16:13:03][0x00007f11d3970700] stratum | Connected!
[16:13:03][0x00007f11d3970700] stratum | Subscribed to stratum server
[16:13:03][0x00007f11d3970700] miner | Extranonce is ******
[16:13:03][0x00007f11d3970700] stratum | Target set to ******
[16:13:03][0x00007f11d3970700] stratum | Received new job #******
[16:13:03][0x00007f11d3970700] stratum | Authorized worker *******.worker1
[16:13:13][0x00007f11dc23f740] Speed [15 sec]: 115.362 I/s, 215.719 Sols/s

【メモ】 Ubuntu 16.04 に CUDA をインストール #仮想通貨 #GPU

ここ数年、仮想通貨のことしか考えていないのでそのあたりのことをメモして行こうかと思います。

とりあえず、手始めに GPU ぶん回すための環境構築に CUDA をインストールしたのでメモしておきます。

$ wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb

$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb

$ sudo apt-get update

$ sudo apt-get install cuda

土曜でもやっている麹町界隈のランチまとめ #シェル芸 #usptomo

某社の勉強会用に土曜でもやっている麹町界隈のおすすめランチの店をまとめてみました。

[カレー] 日乃屋カレー半蔵門

距離 徒歩5分ぐらい

予算 700〜1000円ぐらい

神田の人気店と自称するお店が半蔵門駅前に殴り込んできました。
甘辛くて比較的安くて良いかなとおもいますが店が激狭です。

http://www.hinoya.info/hanzoumon.html

東京都千代田区麹町2-2-30 久保轟ビル1階

東京都千代田区麹町2-2-30 久保轟ビル1階

 

[ネパール系カレー] スパイスHUB

距離 徒歩1分ぐらい

予算 1000円ぐらい

インドカレーっぽいけどネパール人の方が経営しているカレー屋さんで、
990円のセットを頼むとドリンク、サラダがついてさらにナン食べ放題。

美味しくてコスパも良いです。

http://tabelog.com/tokyo/A1308/A130803/13170558/dtlmap/

東京都千代田区麹町3-4-7 ビルディング啓 B2F

東京都千代田区麹町3-4-7 ビルディング啓 B2F

 

[ラーメン] ジョニーヌードル

距離 徒歩10分ぐらい

予算 700〜1000円ぐらい

醤油・塩・味噌・坦々麺など一通り揃えているお店ですが、
全てに力が入っていてどれも美味しいです。
おすすめは坦々麺54号

http://tabelog.com/tokyo/A1308/A130803/13048265/

東京都千代田区平河町1丁目7−2 平河町ドリームマンション 1F

東京都千代田区平河町1丁目7−2 平河町ドリームマンション 1F

 

[欧風カレー] プティフ・ア・ラ・カンパーニュ

距離 徒歩5分ぐらい

予算 1300円〜1500円

欧風カレーのお店で予算高めですが、給料日後なら行く価値あります。
おすすめはビーフカレー

http://tabelog.com/tokyo/A1308/A130803/13000254/

東京都千代田区一番町8−13 日興ロイヤルパレス一番町 1F

東京都千代田区一番町8−13 日興ロイヤルパレス一番町 1F

[イタリア料理] フィオーレ

距離 徒歩5分ぐらい

予算1000円〜

一見シャレオツなイタリア料理屋と思いきやドカ盛りパスタが出てきます。
特に満腹ランチプレートはパスタとソーセージだけという潔い組み合わせで漢の心を鷲掴み。
味も美味しいのでなかなかお勧めです。

東京都千代田区二番町3-11 メディックスビル B1F

http://tabelog.com/tokyo/A1308/A130803/13006434/

東京都千代田区二番町3-11 メディックスビル B1F

[立食いそば] そばうさ

距離 徒歩5分ぐらい

予算650円〜900円ぐらい

立食い蕎麦屋なのにおしゃれな感じです。
味もただの立食いそばではなくてどちらかというとつけ麺に近い。
麺はコシがあってとても美味しいのでおすすめです。
特におすすめはスタミナ牛すじ冷そばかバジル冷そば

http://tabelog.com/tokyo/A1308/A130803/13178573/

東京都千代田区麹町2丁目5−2金森共同ビル

東京都千代田区麹町2丁目5−2金森共同ビル

 

[中華] 味仙酒場

距離 徒歩1分ぐらい

予算 800円〜1000円ぐらい

某会場最寄りの中華屋です。
ランチはボリューム満点で、漢の胃袋は満たせるかと思います。
シェル芸勉強会二次会に利用される可能性大です。

http://tabelog.com/tokyo/A1308/A130803/13163256/

東京都千代田区麹町3-4-3 シェルブルー麹町 B1F

東京都千代田区麹町3-4-3 シェルブルー麹町 B1F

 

[ラーメン] ソラノイロ・本店

距離 徒歩5分ぐらい

予算 700円〜1000円ぐらい

ミシュランガイドに載っているらしく行列ができています。
麺がパスタみたいな歯ごたえだった記憶があります。

http://tabelog.com/tokyo/A1308/A130803/13126816/

東京都千代田区平河町1−3−10ブルービル本館1F

東京都千代田区平河町1−3−10ブルービル本館1B

 

[そば] 北前そば高田屋 麹町得水ビル店

距離 徒歩5分ぐらい

予算 700円〜1000円ぐらい

チェーン店のちょっと高めのお蕎麦屋さんです。
お冷やがそば茶で美味しいです。
味も立食い系チェーンよりそば粉の香りがします。

http://tabelog.com/tokyo/A1308/A130803/13017225/

東京都千代田区麹町3丁目5 B1F

東京都千代田区麹町3丁目5

 

[牛丼] 松屋 紀尾井町店

距離 徒歩5分ぐらい

予算 300円〜600円ぐらい?

すき家がリニューアルオープンで閉店して麹町界隈で唯一の牛丼チェーン店

http://tabelog.com/tokyo/A1308/A130803/13098783/

東京都千代田区麹町3丁目5−17

東京都千代田区麹町3丁目5−17

 

[コンビニ]ファミリーマート麹町3丁目店

距離 徒歩1分ぐらい

予算 不明

最寄りのコンビニです。
店長っぽい人がサーファー風です。

東京都千代田区麹町3丁目2−6 垣見麹町ビル 1F

東京都千代田区麹町3丁目2−6 垣見麹町ビル 1F

 

[スーパー] YOSHIYA

距離 徒歩5分ぐらい

予算 不明

お惣菜や乾物が売ってて電子レンジも置いてあるので安く済ませたい場合は良いかと。

東京都千代田区二番町11-10 麹町山王マンション 1階

東京都千代田区二番町11-10 麹町山王マンション 1階

mdraid(RAID1)のディスク交換をしてみたメモ

自宅サーバで使用しているHP MicroServerはオンボードのRAIDがFakeRAIDでLinux用のドライバもないし(多分)使う価値がないので、
mdraidを使っていたのですが今までディスク交換のオペレーションを行ったことがありませんでした。

そしてとある日 Seagate ST2000DX001(SSD Hybrid Drive)を購入したので酒を呑みながら自宅サーバのディスク交換をしていたら、
血中アルコールの影響で頭の中がこんがらがってしまって最終的にはレスキューディスクでシステムをぶっ壊してしまったので
戒め書としてこのPOSTを余生に残しておく。

以下の状態からブロックデバイスsdcを追加してsdbを切り離すオペレーションを実施しました。
効率の良い方法を知っている方ツッコミ歓迎です。教えてください。

ディスクの構成

/dev/sda (md0 raid1 active)
+- /dev/sda1 (Extended Volume)
+- /dev/sda2 (Linux RAID Volume)
+- /dev/sda5 (Linux SWAP Volume)

/dev/sdb (md0 raid1 active)
+- /dev/sdb1 (Extended Volume)
+- /dev/sdb2 (Linux RAID Volume)
+- /dev/sdb5 (Linux SWAP Volume)

/dev/sdc (md0 standby)
+- Blank

fdiskでsdcのパーテーションを切る

交換前のディスクと同じ感じにパーテーションを切る

# fdisk /dev/sdc

(snip)

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

コマンド (m でヘルプ): p

Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes
ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスク識別子: 0xcd6994eb

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdc1 3899213824 3907028991 3907584 5 拡張領域
/dev/sdc2 2048 3899213823 1949605888 fd Linux raid 自動検出
/dev/sdc5 3899215872 3907028991 3906560 82 Linux スワップ / Solaris

パーティションテーブル項目がディスクの順序と一致しません

 

md0(RAID1)のアレイにデバイスを追加する

# mdadm –manage /dev/md0 –add /dev/sdc2
mdadm: added /dev/sdc2

スタンバイ中のデバイスにデータをSync(rebuild)

# mdadm –manage /dev/md0 –raid-devices=3

Syncが終わったか確認

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc2[2] sdb2[1] sda2[0]
1949474624 blocks super 1.2 [3/3] [UUU]

unused devices: <none>

新しいDiskにgrubをインストール

# grub-install /dev/sdc
Installation finished. No error reported.

sdb2をfailにする

# mdadm –manage /dev/md0 –fail /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md0

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc2[2] sdb2[1](F) sda2[0]
1949474624 blocks super 1.2 [3/2] [U_U]

unused devices: <none>

sdb2をアレイから外す

# mdadm –manage /dev/md0 –remove /dev/sdb2
mdadm: hot removed /dev/sdb2 from /dev/md0

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc2[2] sda2[0]
1949474624 blocks super 1.2 [3/2] [U_U]

unused devices: <none>

SWAP領域を作る(fdiskでパーテション切られているのを前提)

# mkswap /dev/sdc5
スワップ空間バージョン1を設定します、サイズ = 3906556 KiB
ラベルはありません, UUID=46784dd2-6ca5-44f5-b18f-157ee2197182

fstabを確認

必要に応じて書き換えを行う

 # vi /etc/fstab

# /etc/fstab: static file system information.
#
# Use ‘blkid’ to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/md0 during installation
UUID=d54325b4-7b02-45d5-93f7-a8a049a50830 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=4a3e84f9-5f51-4856-8306-08391cdc23bf none swap sw 0 0
# swap was on /dev/sdb5 during installation
UUID=46784dd2-6ca5-44f5-b18f-157ee2197182 none swap sw 0 0 <===今回の場合はsdb5のUUIDをsdc5のものに書き換える

swapon する

# free -m ; swapon -a ; free -m
total used free shared buffers cached
Mem: 7860 5466 2393 0 572 3704
-/+ buffers/cache: 1189 6670
Swap: 7629 0 7629
total used free shared buffers cached
Mem: 7860 5473 2386 0 572 3704
-/+ buffers/cache: 1195 6664
Swap: 11444 0 11444

古いディスクを外す

Hotswapじゃないけど気合で外す。
(SATAのコネクタはホットスワップ前提で作られているから電気的には大丈夫なはず。)

 

以上でひと通りの作業が完了のはずです。

今回の教訓 酒を呑みながらのオペレーションはやめよう。

 

Splunk 6 にバージョンあげてハマったこと(メモ)

地味にハマったので忘れたときようにメモ

libjemalloc.so.1 が足りないと言われて起動しない

ライブラリへのパスが通っていないと起こる。
パスを通してあげるとあっけなく起動する。

$ export LD_LIBRARY_PATH=/opt/splunk/lib

$ source /opt/splunk/bin/setSplunkEnv

$ /opt/splunk/bin/splunk start

 

IPv6 で WebIF が見れない

以下の conf をいじる

$ vi /opt/splunk/etc/system/default/web.conf

listenOnIPv6 = yes

 

debパッケージで入れたのに・・・チ●ショウ!

 

NSD4 beta4 vs BIND9.8.1 ~NSDの逆襲~

前回の POST で BIND からの NSD4 の移行について書いたのだが、
その際にテスト程度に走らせたベンチマークについて物議を呼んだので
(NSDがBINDなんかに負けるはずが無い!とか config煮詰めろとか)
NSD4 側の config をいじりながら再度ベンチマークを取ってみた。

そうしたところ、とても興味深い結果が得られたので記しておく。

 

0. 検証環境

CPU : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz stepping 07 × 2

Memory : DDR3 1333 NonReg ECC 16GB

HDD : 146GB 15000rpm SAS RAID 1

OS : Ubuntu 12.04.2

DNS : NSD4 beta4 / BIND9.8.1 -P1(Ubuntu Packege)

 

1. ベンチマーク方法

ベンチの方法は前回と同様に 32110行のクエリを dnsperf に食わせて行う。
クエリを飛ばす側のマシンも上記とほぼ同様のスペックで用意した。

コマンドは下記のとおり。

 # dnsperf -c 16 -s 10.200.4.230 -d querylist -l 300

※10.200.4.230 は被験体

  • nsd.conf の server-count を変更しながらベンチマーク
  • 16クライアント(並列)で300秒クエリを飛ばす

server-count はリクエストを受け付ける nsd の子プロセスの数なので、
多ければ多いほどクエリを捌けるはず(素人考え)

config は下記のとおり Rate limit は Off にしておく。

server:
server-count: 4
username: nsd
zonesdir: “/etc/nsd4/zones”
zonelistfile: “/var/cache/nsd4/zone.list”
database: “/var/cache/nsd4/zone.db”
logfile: “/var/log/nsd4.log”
pidfile: “/var/run/nsd4/nsd4.pid”
xfrdfile: “/var/cache/nsd4/xfrd.state”
rrl-ratelimit: 0
remote-control:
control-enable: yes
control-interface: 127.0.0.1
control-port: 8952
server-key-file: “/etc/nsd4/nsd_server.key”
server-cert-file: “/etc/nsd4/nsd_server.pem”
control-key-file: “/etc/nsd4/nsd_control.key”
control-cert-file: “/etc/nsd4/nsd_control.pem”

 

2. ベンチマーク結果

 

表1 BIND と NSD4 の qps 比較

 Server (server-count) qps
BIND9.8.1 -P1 362923.554683
NSD4 b4 (1) 237789.686302
NSD4 b4 (2) 287640.556382
NSD4 b4 (4) 409956.827579
NSD4 b4 (6) 178863.252545
NSD4 b4 (8) 129717.122177
NSD4 b4 (16) 70822.115927

 

nsd4_svcount
図1 NSD4 beta4 server-count と qps

nsd_bind_comp

図2 ベンチマーク中のロードアベレージの推移 (NSD4 beta4/BIND9.8.1-P1)

3. 考察

今回の実験では NSD4の server-count を 4 にした場合は最もパフォーマンスがよく、
サーバへの負荷(ロードアベレージ)も低目の値を推移している。
これはゾーンをバイナリ化してメモリに保持している効果と思われる。

また、当初想定していた結果とは異なり、server-count の値と qps は比例しないという結果が出たのが興味深い。
ハードウェア(CPU) 依存の可能性もあるので、AMD製のCPUなどでも試してみようかと思う。

BIND に関しては qps  で言うと NSD4 に匹敵する値をたたき出しているが、ロードアベレージが高めを推移している。
コスト的にはあまりお得な感じはしないと言えるだろう。

ざっとベンチマークを取り直してみて NSD4 が速いことを証明できたので、
今回の目的は達成できたかな。

 

4. 参考文献

Unbound/NSD最新情報(OSC 2013 Tokyo/Spring) http://www.slideshare.net/ttkzw/unboundnsdosc-2013-tokyospring-16708977

NLnetLabs : DNS Response Rate Limiting as implemented in NSD. http://www.nlnetlabs.nl/blog/tag/nsd4/

BIND9 からの卒業 – NSD4 beta4 編

BIND9  の脆弱性の対応に疲れた今日この頃、

(前回のPOSTと以下同文)

この Post では NSD4 beta4 にフォーカスする。

NSD と言えば趣味で DNS をやっているハートビーツ社の滝澤さんが
大変参考になる資料を公開してくれているのでありがたく参考にさせていただきます。
(いつもありがとうございます)

 

0. 検証環境

CPU : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz stepping 07

Memory : DDR3 1333 NonReg ECC 16GB

HDD : 146GB 15000rpm SAS RAID 1

OS : Ubuntu 12.04.2

DNS : NSD4 beta4

 

1. 構築手順(メモ程度)

※大先生にダメ出しされたので configure option などを見直しました。(2013/04/01)
https://twitter.com/ipv6labs/status/318402235610583043

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

# apt-get install gcc make libssl-dev libevent-dev

  • グループとユーザの追加

# groupadd nsd

# useradd nsd -g nsd

  • ソースを落としてきて make する

# cd /tmp

# wget http://nlnetlabs.nl/downloads/nsd/nsd-4.0.0b4.tar.gz

# tar xf nsd-4.0.0b4.tar.gz

# cd nsd-4.0.0b4/

# ./configure \
–prefix=/usr/local \
–enable-ratelimit \
–with-user=nsd \
–with-libevent \
–with-ssl \
–with-configdir=/etc/nsd4 \
–with-zonesdir=/etc/nsd4/zones \
–with-zonelistfile=/var/cache/nsd4/zone.list \
–with-dbfile=/var/cache/nsd4/zone.db \
–with-xfrdfile=/var/cache/nsd4/xfrd.state \
–with-pidfile=/var/run/nsd4/nsd4.pid \
–with-logfile=/var/log/nsd4.log

# make && make install

  • ちなみに以下のファイルがインストールされるみたいです。

./install-sh -c -d /usr/local/sbin
./install-sh -c -d /etc/nsd4
./install-sh -c -d /var/run/nsd4
./install-sh -c -d /tmp
./install-sh -c -d /var/cache/nsd4
./install-sh -c -d /usr/local/share/man
./install-sh -c -d /usr/local/share/man/man8
./install-sh -c -d /usr/local/share/man/man5
./install-sh -c nsd /usr/local/sbin/nsd
./install-sh -c nsd-control-setup.sh /usr/local/sbin/nsd-control-setup
./install-sh -c nsd-checkconf /usr/local/sbin/nsd-checkconf
./install-sh -c nsd-control /usr/local/sbin/nsd-control
./install-sh -c -m 644 ./nsd.8 /usr/local/share/man/man8
./install-sh -c -m 644 ./nsd-checkconf.8 /usr/local/share/man/man8/nsd-checkconf.8
./install-sh -c -m 644 ./nsd-control.8 /usr/local/share/man/man8/nsd-control.8
./install-sh -c -m 644 ./nsd.conf.5 /usr/local/share/man/man5/nsd.conf.5
./install-sh -c -m 644 nsd.conf.sample /etc/nsd4/nsd.conf.sample

  • 必要なディレクトリを作ってユーザ/グループを変更

# mkdir /etc/nsd4/zones

# chown -R nsd:nsd /etc/nsd4/zones/ /var/cache/nsd4/

  • nsd-control に必要な鍵の生成

# nsd-control-setup

  • コンフィグを書く

# vi /etc/nsd4/nsd.conf

server:
username: nsd
zonesdir: “/etc/nsd4/zones”
zonelistfile: “/var/cache/nsd4/zone.list” # <- これがないと patterns (ゾーンの動的追加・削除)が使用できない
database: “/var/cache/nsd4/zone.db”
logfile: “/var/log/nsd4.log”
pidfile: “/var/run/nsd4/nsd4.pid”
xfrdfile: “/var/cache/nsd4/xfrd.state”

remote-control:
control-enable: yes
control-interface: 127.0.0.1
control-port: 8952
server-key-file: “/etc/nsd4/nsd_server.key”
server-cert-file: “/etc/nsd4/nsd_server.pem”
control-key-file: “/etc/nsd4/nsd_control.key”
control-cert-file: “/etc/nsd4/nsd_control.pem”

# ここから下が NSD4の目玉「patterns」

pattern:
name: “masterzone”
zonefile: “%s.zone”
notify: 10.200.4.226 NOKEY
provide-xfr: 10.200.4.226 NOKEY

pattern:
name: “slavezone”
zonefile: “%s.zone”
allow-notify: 10.200.4.226 NOKEY
request-xfr: AXFR 10.200.4.226 NOKEY

 

2. 既存のゾーンファイルを登録

以下のコマンド1行でゾーンの追加が可能だ。

便利過ぎて吐き気がするぜ。

  • 文法

# nsd-control addzone [DOMAINNAME] [pattern]

  • 実行例

# nsd-control addzone mykw.jp masterzone

ok

# nsd-control addzone wktk.so slavezone
ok

数万ゾーンあるといちいち手打ちするのは骨が折れるのでワンライナー

# for i in `ls -1 | sed ‘s/\(.*\).zone/\1/g’` ; do nsd-control addzone $i masterzone ; done

登録されたか確認

# nsd-control zonestatus
zone: mykw.jp
pattern: masterzone
state: master
zone: wktk.so
pattern: slavezone
state: refreshing
served-serial:  “2013031900 since 2013-04-01T22:48:39”
commit-serial:  “2013031900 since 2013-04-01T22:48:39”

これでお引越しは完了したはずだ。

 

3. 動作確認

適当に dig とかして動作確認をしてみよう。

ちゃんと回答が帰ってくれば動いているはずだ。

# dig @10.200.4.230 mykw.jp soa

ついでに dnsperf でベンチマーク

前回と同じ条件で 32110 行のクエリリストを食わせて 4thread でいじめてみた

  • NSD4 beta4

# dnsperf -c 4 -s 10.200.4.226 -d querylist -l 300
DNS Performance Testing Tool
Nominum Version 2.0.0.0

[Status] Command line: dnsperf -c 4 -s 10.200.4.226 -d querylist -l 300
[Status] Sending queries (to 10.200.4.226)
[Status] Started at: Mon Apr 1 00:41:22 2013
[Status] Stopping after 300.000000 seconds
[Status] Testing complete (time limit)

Statistics:

Queries sent: 44570073
Queries completed: 44570073 (100.00%)
Queries lost: 0 (0.00%)

Response codes: NOERROR 44427108 (99.68%), SERVFAIL 56908 (0.13%), NXDOMAIN 86057 (0.19%)
Average packet size: request 36, response 98
Run time (s): 300.002108
Queries per second: 148565.866077

Average Latency (s): 0.000619 (min 0.000157, max 0.035287)
Latency StdDev (s): 0.000160

 



ちなみにBINDは以下のような結果になった。(前回から流用)
  • BIND 9.8.1-P1

# dnsperf -c 4 -s 10.200.4.230 -d querylist -l 300
DNS Performance Testing Tool
Nominum Version 2.0.0.0

[Status] Command line: dnsperf -c 4 -s 10.200.4.230 -d querylist -l 300
[Status] Sending queries (to 10.200.4.230)
[Status] Started at: Sun Mar 31 00:28:16 2013
[Status] Stopping after 300.000000 seconds

[Status] Testing complete (time limit)

Statistics:

Queries sent: 58084969
Queries completed: 58084969 (100.00%)
Queries lost: 0 (0.00%)

Response codes: NOERROR 57898647 (99.68%), NXDOMAIN 112154 (0.19%), REFUSED 74168 (0.13%)
Average packet size: request 36, response 225
Run time (s): 300.003788
Queries per second: 193614.118632

Average Latency (s): 0.000313 (min 0.000227, max 0.060098)
Latency StdDev (s): 0.000382

 

4. まとめ

前項の結果でも分かるようにまたもや BIND9 は意外に早かった。

とはいえ、今年も夏のアップデート祭り(略)

クエリを捌く速さが劣っていたとしても NSD4 の素晴らしさは以下の点にあると思っているので
導入するメリットは十分あると思っている。

  • 権威サーバのみのシンプルな構成
  • 脆弱性が発見されることが少ない
  • pattern (macro) によるシンプルな設定ファイル
  • シンプルなオペレーション

シンプルなものほど美しいものはありません。

beta でも十分使えるレベルなので正式版が出るのが楽しみですね。

 

 

 

BIND9 からの卒業 – PowerDNS 3.0 編

BIND9  の脆弱性の対応に疲れた今日この頃、
なぜ BINDを使っているのか自問自答して欝になりかけた日もある(嘘)

そんなこんなで、 BIND9 との決別を決めた。

次の相棒は今 最もホットでナウい PowerDNSNSD4 (beta)
この Post では PowerDNS にフォーカスする。

0. 検証環境

CPU : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz stepping 07

Memory : DDR3 1333 NonReg ECC 16GB

HDD : 146GB 15000rpm SAS RAID 1

OS : Ubuntu 12.04.2

DNS : PowerDNS 3.0

DB : MySQL 5.5.29

 

1. 構築手順(メモ程度) 

  • MySQL と PowerDNS のパッケージインストール

# apt-get install pdns-server pdns-backend-mysql mysql-server mysql-client

  • MySQL にログインしてデータベースとテーブルを作る

# mysql -u root -p

mysql> create database pdns;

Query OK, 1 row affected (0.00 sec)
Create MySQL User

mysql> GRANT ALL ON pdnstest.* TO ‘pdns’@’localhost’ IDENTIFIED BY ‘hogehogepasswd’;

mysql> FLUSH PRIVILEGES;
Change Database

mysql> use pdns;
Database changed
Create Tables

mysql> create table domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);

CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(10) DEFAULT NULL,
content VARCHAR(64000) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
) Engine=InnoDB;

CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

create table supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
) Engine=InnoDB;

mysql> quit;

  • コンフィグを編集

ここでは Masterでの動作を念頭において設定している。

# vi /etc/powerdns/pdns.conf

allow-axfr-ips=10.200.8.0/24  # <- AXFRできるネットワーク or IPアドレス
config-dir=/etc/powerdns
daemon=yes
default-soa-name=ns0.mykw.jp  # <- SOAレコードに書くDNSのホスト名
disable-axfr=no
disable-tcp=no
local-port=53
log-dns-details=yes
log-failed-updates=yes
logfile=/var/log/pdns.log
logging-facility=0
loglevel=4
master=yes
module-dir=/usr/lib/powerdns
negquery-cache-ttl=60
setgid=pdns
setuid=pdns
use-logfile=yes
version-string=powerdns
include=/etc/powerdns/pdns.d 

DB接続情報は別ファイルに分けて書く

# vi /etc/powerdns/pdns.d/pdns.local.gmysql
# MySQL Configuration
#
# Launch gmysql backend

launch=gmysql
gmysql-socket=/var/run/mysqld/mysqld.sock  # <-ローカルの DB 使うなら Socket 使った方が
gmysql-user=pdns
gmysql-password=hogehogepasswd
gmysql-dbname=pdns

これで一通り使う準備は完了。

 

2. 既存のゾーンファイルを SQL に変換

PowerDNS には zone2sql という便利な SQL 変換スクリプトが標準で用意されている。

BIND で使っていたゾーンファイルを以下の手順で変換・DBへの投入を行う。
素直に変換できないことが多いので、named.conf 調整しながら変換しよう。

  • ゾーンファイルを変換

# zone2sql –gmysql –dnssec=no –named-conf=/etc/bind/named.conf –start-id=1 > zone.sql

  • 変換したレコードをDBにぶち込む

# mysql -updns -phogehogepasswd pdns < zone.sql

  • 変換したゾーンに MASTER のフラグを立てる

これをしないと AUTOSERIAL が有効にならない。

# mysql -u pdns -phogehogepasswd -e “update pdns.domains set type=’MASTER’;”

詳しい説明については公式サイトの Wiki にお任せしよう。

http://wiki.powerdns.com/trac/wiki/Zone2SQLFAQ

 

これでお引越しは完了したはずだ。

 

3. 動作確認

適当に dig とかして動作確認をしてみよう。

ちゃんと回答が帰ってくれば動いているはずだ。

# dig @10.200.4.230 mykw.jp soa

ついでに dnsperf でベンチマーク

32110 行のクエリリストを食わせて 4thread でいじめてみた

  • PowerDNS
# dnsperf -c 4 -s 10.200.4.230 -d querylist -l 300
DNS Performance Testing Tool
Nominum Version 2.0.0.0

[Status] Command line: dnsperf -c 4 -s 10.200.4.230 -d querylist -l 300
[Status] Sending queries (to 10.200.4.230)
[Status] Started at: Fri Mar 15 18:01:29 2013
[Status] Stopping after 300.000000 seconds
n[Status] Testing complete (time limit)

Statistics:

  Queries sent:         33040355
  Queries completed:    33040355 (100.00%)
  Queries lost:         0 (0.00%)

  Response codes:       NOERROR 32976558 (99.81%), NXDOMAIN 63797 (0.19%)
  Average packet size:  request 36, response 52
  Run time (s):         300.000634
  Queries per second:   110134.283916

  Average Latency (s):  0.000890 (min 0.000144, max 0.431226)
  Latency StdDev (s):   0.001421

ちなみにBINDは以下のような結果になった。

  • BIND 9.8.1-P1

# dnsperf -c 4 -s 10.200.4.230 -d querylist -l 300
DNS Performance Testing Tool
Nominum Version 2.0.0.0

[Status] Command line: dnsperf -c 4 -s 10.200.4.230 -d querylist -l 300
[Status] Sending queries (to 10.200.4.230)
[Status] Started at: Sun Mar 31 00:28:16 2013
[Status] Stopping after 300.000000 seconds

[Status] Testing complete (time limit)

Statistics:

Queries sent: 58084969
Queries completed: 58084969 (100.00%)
Queries lost: 0 (0.00%)

Response codes: NOERROR 57898647 (99.68%), NXDOMAIN 112154 (0.19%), REFUSED 74168 (0.13%)
Average packet size: request 36, response 225
Run time (s): 300.003788
Queries per second: 193614.118632

Average Latency (s): 0.000313 (min 0.000227, max 0.060098)
Latency StdDev (s): 0.000382

 

 

4. まとめ

前項の結果でも分かるように BIND9 は意外に早かった。

とはいえ、今年も夏のアップデート祭り(予定)に参戦するのはイヤということで
しばらく自宅環境はPowerDNSで頑張ってみることにした。

ちなみに今回使ったマシンの前にはRAIDキャッシュなしのマシンで検証していたのだが、
スコアは半分ぐらいであまりふるわない成績だった。
SQL を使っているので Disk I/O に引っ張られる印象があるが、
update が多いようなアプリケーションではないので DISKが遅いマシンでも
querycache をたんまり盛ってあげればそこそこ捌いてくれそうな気がする。

SSDとかNANDフラッシュ系の高級ストレージって楽するという選択もありですかね。
空から iodrive か intel SSD 910 降ってこないかな。

Ubuntu 12.04 Desktop でEMOBILE GL04PをUSB接続してみた

昨今、S●ftbankやKD●Iなどの携帯電話キャリアがWifiのアクセスポイントをバラまいて、
有線回線へのオフロードを謀っておりますが、その影響でWifiのチャンネルが埋まってしまい、
いざというときにPocketWifiが使えないといったことが多くなってきた気がします。

※そもそもモバイルルータを持ち歩く人が多くなったせいもあるか。

WindowsもMacも使っていない私はUSBのドライバが用意されていないと思い込みで
数か月間EMOBILE GL04Pを使って来ましたが、勉強会・セミナーで不便を強いられることが
多くなってきたので、仕事をサボ(ry 快適環境を追い求めてみました。

手順は以下の通り。

1.ドライバのダウンロード

これが一番探すのに苦労した。

HUAWEIのサイトからLinux用ドライバを入手

http://www.huaweidevice.com/worldwide/downloadCenter.do?method=toDownloadFile&flay=software&softid=NDcwMzU=

 

2.ドライバの展開

なぜかZIPを展開するとtar.gzが出てくるのでさらに展開

$ unzip HUAWEI\ Data\ Cards\ Linux\ Driver.zip

$ tar xf Linux\ Driver\ 4.19.19.00.tar.gz

 

3.ドライバのインストール

インストーラがついているので、実行するとmakeが始まる

$ cd driver/

$ sudo ./install

4.再起動

再起動してGL04Pを接続するとNetworkManagerで認識しているはずだ。

あまりに簡単すぎてあれだが、ドライバを探すのに時間を費やしたので記録に残しておく。

Ubuntu12.04 DesktopでSynergyを自動起動で使いたい(メモ)

Linux版Synergyの導入手順メモ(For Ubuntu12.04)

http://sourceforge.net/projects/synergy2/

1. synergyをインストール

# apt-get install synergy

2. configを作る(ml115:server op740:client)

# vi /etc/synergy.conf
section: screens
ml115:
op740:
end

section: links
ml115:
left = op740
op740:
right = ml115
end

3. lightdm起動時に一緒に起動させる

# vi /etc/lightdm/lightdm.conf

[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
#greeter-setup-script=/usr/bin/synergyc 192.168.2.80 ←クライアントとして使うとき(サーバのIP)
greeter-setup-script=/usr/bin/synergys -c /etc/synergy.conf  ←サーバとして使うとき