route53のruby client

自宅のIPアドレスをroute53に登録するために、rubyスクリプトを書いた。

SSLの証明書の検証でエラーが発生し、悩んだが、明示的にCAの証明書を指定して、解消した。

切り分けには、以下を指定して証明書の検証を無効にしたら、上手くいった。
rubyが「定数を書き換えている」旨の表示が出たが、警告メッセージで、代入はできていた。

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

ほかの人はどうしてうまくいっているのかと思ったら、v1のSDKでは、CAの証明書が同梱されていたらしい。

http://d.hatena.ne.jp/komiyak/20130508/1367993536
http://alligatorswamp.hatenablog.com/entry/2015/04/21/163234

aws-sdk-rubyに証明書がバンドルされていないのか
aws-sdk-v1ではバンドルされていたが、aws-sdk-v2からバンドルしなくなった。

それができたら、Net::HTTPで「ipinfo.io/ip」から、自宅のIPアドレスを取得して、(とりあえず)完成。
http://docs.ruby-lang.org/ja/2.1.0/class/Net=3a=3aHTTP.html#S_GET

自動実行とか、自力でルータからIPアドレス取得は…まだ今度。

zfs diff

zfs diff コマンドで表示されるのは、新しい方の値らしい。

# zfs-diff-long.sh data-a@130829 data-a > zfs-diff.txt
# zfs-diff-long.sh -E data-a@130829     > zfs-diff@130829.txt
# zfs-diff-long.sh -E data-a            > zfs-diff@latest.txt
# diff xxx.zip zfs-diff*.txt
zfs-diff.txt:       1377796042.173347920    +       F       153510  153496  588458531       1       +0      1000            1000            1377796042.173347920    1271246288.000000000    1380034046.692823670    1289647809.332299246    /data/xxx.zip     -
zfs-diff@130829.txt:1321541261.555379372    +       F       153510  153496  588458531       1       +0      1000            1000            1321541261.555379372    1271246288.000000000    1312597694.414690065    1289647809.332299246    /data/xxx.zip     -
zfs-diff@latest.txt:1377796042.173347920    +       F       153510  153496  588458531       1       +0      1000            1000            1377796042.173347920    1271246288.000000000    1380034046.692823670    1289647809.332299246    /data/xxx.zip     -

こんなスクリプトで出力。第一引数の方を「-E」にすると、空のsnapshotと比較する指定になって、該当するファイルシステム上のすべてのファイルが出力される。

#! /bin/sh

zfs diff -H -tF \
-o object \
-o parent \
-o size \
-o links \
-o linkschange \
-o user \
-o group \
-o ctime \
-o mtime \
-o atime \
-o crtime \
-o name \
-o oldname \
"$1" \
"$2" 

アクセス日時の変更でも、zfs diffに出力される。アクセス日時の記録は不要なのでoffにした。

# zfs get atime
NAME                            PROPERTY  VALUE  SOURCE
data-a                          atime     on     default
# zfs set atime=off data-a
# zfs get atime
NAME                            PROPERTY  VALUE  SOURCE
data-a                          atime     off    local

NetBSDで Fletsの「サービス情報サイト(旧フレッツ・スクエア)」へ接続する方法

  • 前提
    • NetBSD 5.1
    • PPPoEのインタフェース名は「pppoe2」、Ethernetのインタフェース名は「vr0」
    • DNSはBINDのキャッシュサーバを使用(ISPのネームサーバは使用していない)
    • NATはPFで行っている
  • PPPoEの設定

PPPoEの設定を追加する。

# cat /etc/ifconfig.pppoe2
create
! /sbin/ifconfig vr0 up
! /sbin/pppoectl -e vr0 $int
! /sbin/pppoectl $int myauthproto=chap myauthname=guest@flets myauthsecret=guest
inet 0.0.0.0 0.0.0.1 netmask 0xffffffff
up
  • BINDの設定変更

named.confに以下を追加。
(参考:DNSサーバアドレスの一覧|接続方法|サービス情報サイト(IPv4)|フレッツ公式|NTT東日本)

# /etc/named.conf
zone "flets"
{
        type forward;
        forward only;
        forwarders {220.210.194.67; 220.210.194.68;};
};
  • ルーティング情報の追加

参考:ルーティングアドレス情報|サービス情報サイト(IPv4)|フレッツ公式|NTT東日本
TODO: PPPoEのインタフェース名で指定する方法があったはず。

 route add -inet 220.210.194.0/25  ${pppoe2の相手先IPアドレス}

/etc/ppp/ip-up に書く場合。

# /etc/ppp/ip-up
route add 220.210.194.0   -netmask 255.255.255.128 $5
route add 220.210.198.0   -netmask 255.255.255.192 $5
route add 123.107.190.160 -netmask 255.255.255.240 $5
  • PFの設定
# /etc/pf.conf
nat on pppoe2 inet from !(pppoe2) to any -> (pppoe2:0)

自宅のIPv6化

OCN IPv6 の契約はしているものの、L2TPの設定が面倒。乗り換えを検討中。

IIJ mio についてはIPv6接続ラインアップが分かりやすい。

NetBSDでAFTなHDDを使用する場合の注意点

普通にインストールすると、従来どおり512byte/sectorでフォーマットされてしまうので、disklabelとnewfsする時に注意が必要。

disklabel
パーティションの先頭を4Kbyte境界に合わせる。デフォルトだと63sectorから始まるので、64sectorに変更した。
newfs
フラグメントサイズを4Kbyteにする。ブロックサイズの8分の1にするのが定番らしいので、ブロックサイズを32768byte、フラグメントサイズを4096byteに変更した。

NetBSD 5.1.2 + HTS727575A9E364

設定内容 softdep tar -jxf pkgsrc.tar.bz2 rm -r pkgsrc/
上記設定 ON 1m52s 0m17s
上記設定 OFF 6m43s 1m52s
フラグメントサイズが2048byte(デフォルト)にした場合 ON 18m58 3m4s
パーティション境界を63byte(デフォルト)にした場合 ON 21m49s 7m9s

disklabelの例

デフォルト
#         size     offset     fstype [fsize bsize cpg/sgs]
 a: 1448106912         63     4.2BSD   2048 16384     0  # (Cyl.      0*- 1436614*)
 b:     263088 1448106975       swap                     # (Cyl. 1436614*- 1436875*)
 c: 1465149105         63     unused      0     0        # (Cyl.      0*- 1453520)
 d: 1465149168          0     unused      0     0        # (Cyl.      0 - 1453520)
 e:   16779105 1448370063     4.2BSD   2048 16384     0  # (Cyl. 1436875*- 1453520)
変更後
 e:   16779104 1448370064     4.2BSD   4096 32768     0  # (Cyl. 1436875*- 1453520)

newfsの例。-Sオプションでセクタサイズを4096と指定してしまうと、mountできるけど、lsするとBad File descripterエラーになるという変な状態になるので注意。

newfs -b 32768 -f 4096 wd0e 

ディスク増設でデバイス番号がずれて起動しない場合

度々あるのでメモ。
ディスクを増設したら、起動ディスクが /dev/wd0a から /dev/wd1a になってしまった場合。

  • シングルユーザモードで起動

boot中に何かキーを押下して、bootプロンプトが表示されたら 「boot -s」。

  • root device が read-only でmountされているので、書き込めるようにする。いつも「-u」オプションが思い出せず、別の端末で調べる羽目に。

# mount -u -w /dev/wd1a /

  • fstab を編集。

# export TERM=vt100
# vi /etc/fstab
【前】/dev/wd0a / ffs/ wf 1 1
【後】/dev/wd1a / ffs/ wf 1 1

  • exitすれば /etc/rc が実行されて通常通り起動する。再起動してもいいけど。

# exit

Dual Processorのalphaが起動しない

ヤフオクで21264を2個積んだalphaを落札したのですが、
NetBSD 5.0.2が起動しません。

probe(esiop0:0:0:0): request sense for a request sense ?
probe(esiop0:0:0:0): request sense failed with error 22
probe(esiop0:0:0:0): generic HBA error

SCSIカードを差し替えたり、GENERIC.MPカーネルで起動してみたりしたのですが、
どうにもならないので、ぐぐって見たところ、よく似たのprがありました。
メモリを減らしたら動いたとか、uvmとか書いてあるのですが、
せっかくの2Gメモリを減らすのは癪だし、どうしたもんか。

http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=32717
http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=40604