タグ: freebsd
YubiKeyとSSH ed25519-skをmacOSとUbuntuとFreeBSDとCygwinで
しばらくぶりの鍵周りの整理でOpenPGP(GnuPG)の暗号用鍵を更新したり、フォールバック用に長いこと残しっぱなしにしていたOpenSSHのRSAの公開鍵を消して回っているなどしている時に、だいぶ前の話のようですがOpenSSH 8.2でFIDO U2Fがサポートされ、ed25519-skおよびecdsa-skなる-skが付いた鍵タイプが追加されたという話にたどり着きました。
FIDO U2Fということは黒いYubiKey 5 NFCシリーズ(PDF)ではなくて、青いSecurity Keyシリーズ(PDF)でもOKということになことになります。これは試さねば! というわけでmacOSとUbuntuとFreeBSDとCygwinで試してみました。
続きを読むドメインごとのDNSサーバ指定 macOS, Windows, 他
ARC(RFC8617)とEd25519 SHA-256のDKIM(RFC8463)にさくっと対応させてみる Postfix + OpenARC + dkimpy-milter on FreeBSD
RECV/CQ: Invalid WhiteTable code word, row 0, x 0
与信を通過しましたとか、(情報) 統合思念体(ってなんだか知らないけどなんか納得)様からのFAXがしばらく来てませんでしたがFAXが必須な仕事でも無く、電話番号とTSIの一覧はエラーも含めてすべて毎日自動的に送られてくるので必要なものかどうかは一目瞭然なのと、そもそも必要ならば別のコンタクト手段がいくらでもあるので気付かないふりを継続していました。しかしついに年に1,2回のFAXを受けないといけない場面に出くわし、届かないので詳細ログを確認したところ、FAXサーバのlibtiffが4.0.7にアップグレードされた2016年の暮れ頃から3ヶ月以上FAXが正常受信されずに 続きを読む
ntpd – PPS discipline まずは普通に較正 編
- 出力データ形式
- NMEA0183V3.01準拠
- 電源電圧
- DC5V(3.8V~12V)
- 入出力信号レベル
- C-MOSロジック(3.3V)
- UART通信速度
- 9600bps(デフォルト)、4800~115200bps
- 1PPS出力
- 精度±10ns C-MOSロジック(3.3V)レベル,パルス幅:100mS(アクティブLow)
いー感じです。 続きを読む
Notable Changes in NSS 3.27 CA certs. - Removal of 'Equifax Secure Certificate Authority'
1 2 |
postfix/smtp[28442]: ... delay=3866, delays=3865/0.04/0.31/0, dsn=4.7.5, status=deferred (Server certificate not trusted) postfix/smtp[28444]: certificate verification failed for ...:25: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority |
確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
> /usr/local/bin/openssl s_client -showcerts -connect ...:25 -starttls smtp CONNECTED(00000003) depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/OU=... i:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- 1 s:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3 i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA -----BEGIN CERTIFICATE----- MIIEJTCCAw2gAwIBAgIDAjp3MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT ... gP8L8mJMcCaY -----END CERTIFICATE----- 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority -----BEGIN CERTIFICATE----- MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT ... b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S -----END CERTIFICATE----- |
3つ送られた証明書の最後の証明書のi:のCA証明書が無いのでエラーになっているようです。確かにNSS 3.27で削除された(コード)ようですが念のためコピペして食わせて確認してみます。 続きを読む
bruteblock – 非公式IPv6パッチ
キエフ発のbruteblockはSSHのbrute-force攻撃対策で参照されることが多いようですが、標準入力を読んでipfwのテーブルに追加(bruteblock)してくれ、テーブルから決められた時間経過後に削除(bruteblockd)してくれるというシンプルな作りのおかげで使い道は無限大、自分次第あなた次第、SMTP-AUTH, IMAP4へのあくなき挑戦や、公開していないポートへのアクセスなど、好きなトリガーを設定するだけです。
Apache HTTPDのCustomLog directiveはpiped logを出力できますし、SSHでの利用例のようにsyslogdもパイプに出力できるのでsyslogを吐くプログラムならば何でもbruteblockを利用できることになります。
EPSONプリンタ用 epson-201203j Linux向けCUPSドライバをFreeBSDで使ってみる
PostScriptプリンタが壊れ、つなぎに急遽エプソンのPX-435Aという、有線LAN無し、新しく入れ替えたインクを普通の文字だけの文書でも秒速で使い果たすという大食漢なプリンタを、アクセスポイントとの相性なのか無線LAN接続がいまいち安定しないので、長いことご無沙汰なUSB接続で使用するというお遊びをしてみます。
まずCUPS(print/cups-base)
1 |
# cd /usr/ports/print/cups-base && make config |
lprで使えれば十分なのでZeroconfは無視します。
libusbを使う場合はulptなど他のドライバがロードされていない状態の素のugenであることが重要とpkg-messageに書かれていて、しかしこのプリンタはUSB接続した瞬間にulptどころかSDカードリーダでumassまでロードされて後で何かとめんどそうなので、逆にulptを使用してlibusbを使用しない方向に。
1 |
LIBUSB_DESC=USB support via libusb instead of ulpt |
とかいうknobにしておいてくれれば良いのかも。いろいろな環境ではそう簡単な話じゃないのだとは思うけど。というわけでlibpaperとGhostscriptとD-Busを選択し、一方libusbの選択はされていない状態でインストールしてみます。
1 2 3 4 5 6 |
# printf '\ndevfs_system_ruleset="system"\n' >>/etc/rc.conf # printf "\n[system=10]\nadd path 'ulpt0' mode 0660 group cups\n" >>/etc/devfs.rules # service devd restart # portmaster print/cups # printf '\ncupsd_enble="YES"\n' >> /etc/rc.conf # service cupsd start |
http://127.0.0.1:631/にアクセス。ちゃんとlocalhostだけでlistenしていて、デフォルト設定でいきなり普通に動作している模様。うれしい。
続いてCUPS用ドライバ。GutenprintにPX-401Aはあるものの、まだPX-435Aは載っていませんでした(2013/7/5)。他のモデルやGenericなESC/P系でいけるのだろうと思うも試行錯誤がありそう。OpenPrntingのwebサイトによるとrpmやらdebやらがあるようなので、それにしてみることに。FreeBSDのlinuxulatorはFedra 10(なんと)の対応のパッケージが多いようなので、emulators/linux_base-f10をインストール。
1 2 3 |
# portmaster emulators/linux_base-f10 ===>>> This port is marked IGNORE ===>>> linuxulator is not (kld)loaded |
なるほど。
1 2 3 |
# printf '\nlinux_enable="YES"\n' >> /etc/rc.conf # service abi start # portmaster emulators/linux_base-f10 |
epson-inkjet-printer-201203j-1.0.0-1lsb3.2.i486.rpmをダウンロードして、’package epson-inkjet-printer-201203j is not relocatable’だそうなのでrpm2cpioですごく変な場所に書きこまれてしまうものがないことを確認してからインストールしてみます(今思えばそのまま/compat/linux下にcpioで展開して、/optにsymlinkすればよかったです…)。
1 2 3 4 |
# portmaster archivers/rpm # rehash # rpm2cpio epson-inkjet-printer-201203j-1.0.0-1lsb3.2.i486.rpm | cpio -it # rpm -i --nodeps --noscripts --ignorearch --ignoreos epson-inkjet-printer-201203j-1.0.0-1lsb3.2.i486.rpm |
- フィルタ: /opt/epson-inkjet-printer-201203j/cups/lib/filter/epson_inkjet_printer_filter
- PPD(gzip): /opt/epson-inkjet-printer-201203j/ppds/Epson/Epson-PX-435A_Series-epson-driver.ppd.gz
のようです。
1 2 3 |
# ldd /opt/epson-inkjet-printer-201203j/cups/lib/filter/epson_inkjet_printer_filter | fgrep 'not found' ELF interpreter /lib/ld-lsb.so.3 not found /opt/epson-inkjet-printer-201203j/cups/lib/filter/epson_inkjet_printer_filter: signal 6 |
lsbなんじゃそりゃ、とほこりをかぶったUbuntu機で確認。なるほど、いろんなディストロ向けのパッケージングをしやすくするためのものですか。えいっ、
1 |
# ln -s ld-linux.so.2 /compat/linux/lib/ld-lsb.so.3 |
あとはたんたんと繰り返し。
1 2 3 4 5 6 7 8 9 10 |
# ldd /opt/epson-inkjet-printer-201203j/cups/lib/filter/epson_inkjet_printer_filter | fgrep 'not found' libcupsimage.so.2 => not found libcups.so.2 => not found libjpeg.so.62 => not found # portmaster print/linux-f10-cups-libs graphics/linux-f10-jpeg # ldd /opt/epson-inkjet-printer-201203j/cups/lib/filter/epson_inkjet_printer_filter | fgrep 'not found' libtiff.so.3 => not found libpng12.so.0 => not found # portmaster graphics/linux-f10-tiff graphics/linux-f10-png # ldd /opt/epson-inkjet-printer-201203j/cups/lib/filter/epson_inkjet_printer_filter | fgrep 'not found' |
ふつうのユーザでフィルタを実行してみる
1 2 |
> /opt/epson-inkjet-printer-201203j/cups/lib/filter/epson_inkjet_printer_filter Insufficient options. |
ダイナミックリンクは解決してちゃんと動作してエラーを出力。結果的にLSB 3.2なるものがFedra 10との相性抜群なおかげもあってportsで全部済み、ありがたいことこのうえないです。stringsで覗いてコマンドは呼び出していなさそうなので、これでOKなはず。
http://127.0.0.1:631/で、Find New Printersでは無線LANの接続だけが見つかるので、Add Priterを押し、Local Printers ‘USB Printer #1’ で追加。Or Provide a PPD File:に先ほどの /opt/epson-inkjet-printer-201203j/ppds/Epson/Epson-PX-435A_Series-epson-driver.ppd.gz を指定してAdd Printer。デフォルト設定をしてからPrint Test Pageであっさり印字されました。linuxulator を動かす分の手間だけで、本当にいい世の中になったものです。
続いて他の*BSD機でも使えるようにとman cups-lpdするとinetd経由で呼ぶのが吉とのこと。inetdで起動しているものは何もなかったので、/etc/inetd.confが変なもの起動しないことを確認、/etc/hosts.allow(TCP wrapperの作者は今はPostfixで有名なWietse Venemaさんですね)を適切に指定してからinetdを起動するようにします。そしてCUPSが自動生成したprintcapを見ておきます。
1 2 3 4 5 6 |
# printf '\nprinter stream tcp nowait cups /usr/local/libexec/cups/daemon/cups-lpd cups-lpd -o document-format=application/octet-stream\n' >>/etc/inetd.conf # printf '\ninetd_enble="YES"\n' >>/etc/rc.conf # service inetd start # cat /usr/local/etc/printcap ... PX-435A|PX-435A on homepac:rm=foo.bar.example.com:rp=PX-435A: |
他の*BSD機にはCUPS不要でlpdが動いていなければ動かすだけ、例えば、
1 2 |
# printf '\nlpd_enable="YES"\n' >> /etc/rc.conf # service lpd start |
そして先ほどのサーバ側のprintcapを素の/usr/bin/lprが見てくれる/etc/printcapに追記します。
1 |
# printf '\nlp|PX-435A|PX-435A on homepac:rm=foo.bar.example.com:rp=PX-435A:sh:\n' >> /etc/printcap |
他に使えるプリンタがないので lp にして引き数無しで使えるデフォルトにし、バナーは不要なので sh を追加します。webブラウザから印刷でlprしてみたところさくっと印刷してくれました。めでたしめでたし。
おまけ。せっかくCUPSいじったので、横でネットワークにつながっ
ているCITIZEN CT-S300のドライバ追加してみます。 ctzpos-cups-1.1.0-0.src.rpm というsource rpmがあるので、こちらはそのままいけそうです。
1 2 3 4 5 6 7 8 9 |
# rpm2cpio ctzpos-cups-1.1.0-0.src.rpm | cpio -iv # tar xjvf ctzpos-cups-1.1.0.tar.bz2 # cd ctzpos-cups-1.1.0 # /bin/sh # for f in *.c; do b=$(basename $f .c); cc -O -I/usr/local/include -L/usr/local/lib -lcups -lcupsimage -o $b $f; chown root:cups $b; chmod ug=rx,o= $b; mv -iv $b /usr/local/libexec/cups/filter/; done # exit # gzip -9k *.ppd # chown root:cups *.ppd.gz # mv -iv *.ppd.gz /usr/local/share/cups/model/ |
これで
- CT-S280
- CT-S281/281L
- CT-S300
- CT-S310
- CT-S2000/2000L
- CT-S4000
- CT-S601/S651
- CT-S801/801L
- CT-S851
- PPU-700
- CT-P29X
- CBM1000
- CD-S500
- PMU22XX
- PMU23XX
がFreeBSDのCUPSでも使えるはず。うちのCT-S300は’Find New Printers’で見つかり、自動的に socket://xxxxxxxx になりました。ポートが明示されていない場合のデフォルトポートは9100の模様です。そのまま追加完了して、デフォルト設定を74mm x 2000mmにしたら、えらい長いテストページの左端だけが出てきました…
FreeBSD.org で侵入
FreeBSD.org intrusion announced November 17th 2012 だそうです。
- FreeBSD developerからSSHの鍵(秘密鍵ですね。こらこら)が漏れた。
- 2012/9/19から2012/11/11までにpackageではなくてports treeからインストールされたものは完全性が保証できない。
あたりが重要項目でしょうか。
unzip: ZIP decompression failed (-3) unzip fails to extract password protected archive
1 2 3 4 5 6 7 |
> zip -e hoge.zip hoge.txt > unzip -v hoge.zip Archive: hoge.zip Length Method Size Ratio Date Time CRC-32 Name -------- ------ ------- ----- ---- ---- ------ ---- 0 Stored 0 0% 06-13-12 21:09 00000000 hoge.txt unzip: ZIP decompression failed (-3) |
which unzip するとわかりますが、今時の FreeBSD は /usr/bin/ に unzip がいて、これは archivers/unzip の ports から /usr/local/bin/ にインストールされる Info-ZIP の unzip とは別物です。というわけで
1 2 3 4 5 6 7 |
> /usr/local/bin/unzip -v hoge.zip Archive: hoge.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 40960 Defl:N 8288 80% 06-13-2012 21:09 342c5fc6 hoge.txt -------- ------- --- ------- 40960 8288 80% 1 file |
/usr/local/bin/ を指定してめでたしめでたし。
archiver/php5-zip (pcre.h: No such file or directory)
/usr/local/include/php/ext/pcre/php_pcre.h:29:18: error: pcre.h: No such file or directory
/usr/local/include/pcre.h はあるので、よく見ると -I/usr/local/include が無いです。configure がおかしかったことになるので config.m4 と config.log を見ると、 PHP_PCRE_DIR に /usr/local が指定されるところまでは正常、その後
1 2 3 4 |
#include <main/php_config.h> #if defined(HAVE_PCRE) && !defined(COMPILE_DL_PCRE) yes #endif |
をプリプロセッサに渡して出来上がりに yes があるかという条件判定で PHP_PCRE_REGEX=no になってしまっています。php/main/php_config.h は php/ext/php_config.h を読み込み、さらに php/ext/pcre/config.h を読んでいます。そこには #define COMPILE_DL_PCRE 1 の行が。というわけで1年半前のports/UPDATING の指示は微妙に作業が足りていないようです。/usr/local/php/ext/php_config.h に、必要の無い行がある場合は削除します(pcre spl以外は実際に存在していたか特に確認していません)。
1 2 3 |
# cd /usr/local/include/php/ext # cp -p php_config.h php_config.h.prev # fgrep -v -e ext/pcre/ -e ext/spl/ -e ext/dbase/ -e ext/ncurses/ -e ext/ming/ -e ext/mhash/ php_config.h.prev > php_config.h |
間違いの無いようにファイルも
1 2 3 |
# /bin/sh # for p in pcre spl dbase ncurses ming mhash; do [ -f "$p/config.h" ] && mv -v "$p/config.h" "$p/config.h.prev"; done # exit |
とでもしてリネームしておきます。最後に
1 |
# portupgrade -fr lang/php5 |
あたりをしておけば安心です。ふぅ。/usr/ports/UPDATINGとしては1.5)を追加して
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
20100409: AFFECTS: users of lang/php5 AUTHOR: [email protected] As of PHP 5.3, a few extensions were removed from or included into the core PHP5 package. Follow the steps below to update your installation. 1) Delete the following packages (if installed): - php5-dbase - php5-ncurses - php5-pcre - php5-spl - php5-ming - php5-mhash Keep package names in the output of this commend, # pkg_info -R php5-dbase php5-ncurses php5-pcre php5-spl php5-ming php5-mhash Delete them, # pkg_deinstall -f php5-dbase php5-ncurses php5-pcre php5-spl php5-ming php5-mhash 1.5) Remove unused files (if installed): # cd PREFIX/include/php/ext # cp -p php_config.h php_config.h.prev # fgrep -v -e ext/pcre/ -e ext/spl/ -e ext/dbase/ -e ext/ncurses/ -e ext/ming/ -e ext/mhash/ php_config.h.prev > php_config.h # for p in pcre spl dbase ncurses ming mhash; do [ -f "$p/config.h" ] && mv -v "$p/config.h" "$p/config.h.prev"; done 2) Rebuild lang/php5 and all ports that depend on it. # portupgrade -fr lang/php5 # portupgrade -f [packaged names checked on step 1)] |
とでもなりましょうか。
FreeBSD ACPI acpi_tz0: _CRT value is absurd, ignored (256.0C)
HP Compaq nx6320/CT Notebook PC(ノートPC)にFreeBSDをぶち込んだところ表題のメッセージが出続けます。absurdですか、そうですねハンダが溶けそうです。acpi(4) と SEE ALSO の acpi_thremal(4) が関係ありそうです。 hw.acpi.thermal.tz%d._CRT は致命的なのでシャットダウンする温度だそうな。上書きできると書いてありますが、実は一瞬できるように見えるだけですぐにもとの値に戻るようです。 hw.acpi.thermal.polling_rate を 0 にしてポーリングを止めてしまうという荒技だと猛暑のときに機械が壊れそうなので、こちらacpi_tz0: _CRT value is absurd, ignored (256.0C) (was pr kern/105537) FIX?のようにしてみます。
1 2 |
# acpidump -dt >nx6320.asl # cp -p nx6320.asl nx6320.asl.orig |
中身を眺めると、 ThermalZone (TZ0) の中が記事で参照しているところと同様のようです。単位は0.1Kのようなので、90℃=363.15K=3631.5*0.1K を返すようにしてみます。
1 2 3 4 5 6 7 8 9 10 11 |
--- nx6320.asl.orig 2011-02-10 19:49:59.000000000 +0900 +++ nx6320.asl 2011-02-10 23:12:08.000000000 +0900 @@ -12942,7 +12942,8 @@ Method (_CRT, 0, Serialized) { - Return (C316 (0x04, 0x00)) + Return (3632) } Method (_TMP, 0, Serialized) |
これを元に
1 2 3 |
# mkdir tmp # iasl ./nx6320.asl # mv -i ./tmp/acpidump.aml /boot/nx6320.aml |
あとはハンドブックの通りに /boot/loader.conf に以下を追加。
1 2 |
acpi_dsdt_load="YES" acpi_dsdt_name="/boot/nx6320.aml" |
リブートして表題のメッセージは止まりました。よかったよかった。
タイムゾーンのオフセット+09:18:59 はて、18:59はなんぞや?
いろいろ検索したつもりでしたが、実は :18:59 timezone と検索することで先人の方々のサイトがヒットし、Google先生がいれば誰でも天才ということで表題の件は簡単に速攻で解決できたことがわかりました。しかしせっかく書いたので恥ずかしながら公開しておきます…
devel/libltdl22 (port directory error)
portupgrade中
1 2 |
- devel/libltdl22 (port directory error) - devel/libtool22 (port directory error) |
毎度おなじみ/usr/ports/UPDATING を見ると、バージョン付きでなくなったものがいろいろあるようです。
1 2 3 4 |
# portmaster -o devel/autoconf devel/autoconf268 # portmaster -o devel/automake devel/automake111 # portmaster -o devel/libtool devel/libtool22 # portmaster -o devel/libltdl devel/libltdl22 |
か
1 2 3 4 |
# portupgrade -o devel/autoconf devel/autoconf268 # portupgrade -o devel/automake devel/automake111 # portupgrade -o devel/libtool devel/libtool22 # portupgrade -o devel/libltdl devel/libltdl22 |
で置き換えるように指示されていますが、多くの人がビルド専用でしょうから
1 2 3 |
# pkg_deinstall -R autoconf-\* automake-\* libtool-\* # portsnap fetch && portsnap update # portupgrade -o devel/libltdl devel/libltdl22 |
で十分かも。