2011/06/25(土)/usr/local/lib/libldap.so: undefined reference to `fetchGetURL'

2017/10/12 4:29 サーバ運営・管理
openLDAP 2.4.25 を FreeBSD 7.x もしくは FreeBSD 8.x 上でソースコードから構築し、
openLDAP サポートを必要とする他のアプリケーションを構築しようとすると、

/usr/local/lib/libldap.so: undefined reference to `fetchGetURL'

のようなリンクエラーが出て構築できないという状況になる場合があります。
日本語での情報が全く無いため、記録しておきます。
google のお世話になりました。英語が苦手なのでちと苦労を。。(爆)

これは、openLDAP 2.4.24 以降の新しいバージョンで fetch(3) ライブラリをデフォルトで組み込まなくなったことによります。
FreeBSD の場合は、fetch(3) ライブラリはOS標準で用意されています。

OpenLDAP 2.4.23 以前と同じ挙動にするためには、openLDAP 2.4 コンパイルの configure 時に、

 --with-fetch

をconfigure オプションに追加します。
しかし、FreeBSD の場合、これだけでは駄目なのです。
コンパイル、インストールは何の問題もなくされるのですが、なんと、configure スクリプト自身にバグが潜んでいます。
以下のパッチを当てる必要があります:
@@ -22234,7 +22234,7 @@


    if test $ol_cv_lib_fetch != no ; then
-      LUTIL_LIBS="$LUTIL_LIBS $ol_link_fetch"
+      LIBS="$LIBS $ol_link_fetch"
  >    ol_link_fetch=freebsd
    elif test $ol_with_fetch != auto ; then

上記の修正後、--with-fetch オプションを追加した状態にて、いつもどおり configure から openLDAP 2.4 を構築することで解決します。

(追記 2011/07/14)
OpenLDAP 2.4.26 に於いて、このバグは解消されているようです。

2011/06/15(水)dovecot 2.0.13 を FreeBSD8.2R 上で構築

2017/10/12 4:28 サーバ運営・管理
ちょうど丸1年、メールサーバの更新をしていなかったのと、経験上、このままではセキュリティ耐性が急低下する状況(謎)だったので、集中メンテナンスを開始しています。

* dovecot 2.0.x のインストール準備
OSに dovecot と dovenull アカウントを作成。
# dovenull アカウントは 2.0 になってから必要になった

./configure 、make は v1.2.x と同じようにできる。

* dovecot 2.0 のコンフィギュレーションファイル dovecot.conf
v1.2 からは書式が大幅に変更されていて、正直難解なものになってしまった。
しかし、v1.2 のコンフィギュレーションファイルがあれば、v2.0 用に変換するツールが付いている。先ずは以下の要領で変換する:

# copy dovecot.conf dovecot.conf.old
# doveconf -n -c dovecot.conf.old > dovecot.conf

弊社では ver 1.2 からのアップグレードで、
これでOKかと言いたいところだが、リハーサルしてみると、実際はそのままではまともに起動しなかった。 dovecot.conf に以下の変更が必要だった:

service auth {
 executable = /usr/local/libexec/dovecot/dovecot-auth  ← 削除
 unix_listener /var/spool/postfix/private/auth {
  group = postdrop
  mode = 0660
  user = postfix
 }
 user = root
 vsz_limit = 128 M
}

ちなみにこれは、SMTP-AUTH に dovecot SASL を使う場合の設定。
これで起動できる。
また、SSL 署名ファイルの書式はちょっと特殊。

ssl_cert = </etc/postfix/tlskey/clione.basekernel.ne.jp.pem
ssl_key = </etc/postfix/tlskey/clione.basekernel.ne.jp.key

赤文字部分の '<' が何故か必要。消す必要はありません。
最初は変換エラーかと勝手に思い込んで、わざわざ削除してしまい、填ってしまった...orz

参考にどうぞ。

2011/06/14(火)Samba 3.5.8 を FreeBSD 8.2上で構築

2017/10/12 4:27 サーバ運営・管理
./confifure は成功し、いざ make すると、、

Compiling ../nsswitch/winbind_nss_freebsd.c
make: don't know how to make EXTRA_FLAGS. Stop




Linking non-shared library bin/libsmbclient.a
make: don't know how to make EXTRA_FLAGS. Stop


といった、エラーを出して、 samba の導入が出来ない。
これは既知の問題らしく、3.5.0 が提供された時点から未だすべて修正されていない模様。
日本語での情報は無かったが、どうやら以下のようにすると大丈夫らしい。

source3/Makefile の 1405行目付近:
# $(LIBSMBCLIENT_THREAD_OBJ) ../nsswitch/wins.o ../nsswitch/winbind_nss_linux.o: EXTRA ....

つまり、$(LIBSMBCLIENT_THREAD_OBJ) で始まる行を探し出し、その行をコメントアウトする。
参考になれば幸いです。

2011/06/13(月)〔参考〕Apache 2.2 のSNI ホスティング設定

2017/10/12 4:26 サーバ運営・管理
SSLStrictSNIVHostCheck off というのは、SNI 非対応ブラウザのとき、複数あるバーチャルホストコンテナの最初のコンテナへアクセスさせるような設定です。
Apache 2.2.12 以降で使用できます。
あとは、通常のノンセキュア名前ベースバーチャルホストと大きく変わりません。

--- ここから
Listen 443
NameVirtualHost aaa.bbb.ccc.ddd:443
SSLStrictSNIVHostCheck off

<VirtualHost aaa.bbb.ccc.ddd:443>
  DocumentRoot "/home/webroot/site1/ssdocs"
  ServerName www.example.com
  SSLEngine on
  SSLCertificateFile "/usr/local/etc/apache/certs/www.example.com.pem"
  SSLCertificateKeyFile "/usr/local/etc/apache/certs/www.example.com.key"

  (以下、その他の設定)
</VirtualHost>

<VirtualHost aaa.bbb.ccc.ddd:443>
  DocumentRoot "/home/webroot/site2/ssdocs"
  ServerName www.example.net
  SSLEngine on
  SSLCertificateFile "/usr/local/etc/apache/certs/www.example.net.pem"
  SSLCertificateKeyFile "/usr/local/etc/apache/certs/www.example.net.key"

  (以下、その他の設定)
</VirtualHost>

2011/06/13(月)ネーム(名前)ベース SSL バーチャルホストは今や可能

2017/10/12 4:25 サーバ運営・管理
これは、広くSNI(Server Name Indication / RFC4366) として知られつつある技術。

今まで、SSLのバーチャルホスティングは、サイト毎に異なるIPアドレスが必要で、昨今のIPアドレス枯渇を受けて、不要不急の立ち上げを規制しているなどの面もあって積極的には対応していませんでした。

エンドユーザに対しては、「サイト毎にIPアドレスが必要 → 提供費用の上乗せ」ということにならざるを得ずという状況でした。

ですが、現在では「SNI対応ブラウザ」さえあれば、「ネーム(名前)ベース SSL バーチャルホスト」が出来ますので、同じ品質で今までより安価にSSLサイトを運用・構築できる道が拓かれています。
月額換算で最低4000円程度から対応できます。

SNI対応ブラウザは、2011/06/13 現在以下の通りです。
一部ゲーム機に以下のブラウザが搭載されていますが、ゲーム機では基本的にSNI対応はされていません。
お使いのものが WindowsXP であれば、Internet Explorer を捨てる選択をお勧め。
但し、Internet Explorer からの乗り換え誘導のほうが、経済的負担より重いかもしれません。

・Opera 8 以降全て (TLS 1.1 を手動で有効・確認する必要がある)
・Firefox 2 以降全て
・Chrome 6 以降全て
・Safari 3.2.1 以降
(Safari については、MacOS X,Windows 7 以降で対応。その他は不可)
・Lynx 2.8.7rel1 以降
・Internet Explorer 7,8,9
(Internet Explorer については、Windows vista 以降で対応。Windows XP は不可)

また、サーバでもSNIに対応していることが必要です。
以下の要件を満たしていれば、たいていの場合、自動的に導入されています。

・Apache 2.2.12 以降のバージョンで、OpenSSLライブラリ付きで構築している
・OpenSSL 0.9.8k 以降
(OpenSSLがTLS拡張オプション〔enable-tlsext〕ありで構築している)
(OpenSSL 0.9.8f 以降であれば、TLS拡張オプションありで再構築すれば対応できる)

FreeBSD の場合、OpenSSL がOSにバンドルされていますが、8.1R が OpenSSL 0.9.8n, 8.2R が OpenSSL 0.9.8q で、8.1R からデフォルトでTLS拡張オプション対応です。

2011/02/25(金)FreeBSD 8.2R/7.4R リリース

2017/10/12 4:23 サーバ運営・管理
今朝、 AM 5:00 過ぎにアナウンスが入りました。

○ FreeBSD 8.2R リリースノート(勝手な和訳)

- [amd64] FreeBSD/amd64は、物理的な記憶容量より等しいか大きいサイズの KVAスペースの確保をします。 この変更は、ZFSを使用するときしばしば起こる“kmem_map too small”パニックを防ぐのを助けるでしょ う。

- FreeBSD GENERICカーネルは現在、KDBとKDB_TRACEオプションでコンパイルされます。 8.2-RELEASEから、カーネルは、ddb(8)のようにデバッガバックエンドなしで stack(9) を使用することにより、panic時のスタックトレースを表示するのをサポートします。このことが panic時におけるGENERICカーネルのデフォルトの振舞いを変えないことに注意してください。

- FreeBSD の crypto(4) フレームワーク(opencrypto)は、XTS-AES(XEX-TCB-CTS、またはCipherText StealingがあるXEXベースのTweaked Code Bookモード)をサポートしました。(XTS-AESはIEEE Std. 1619-2007 で定義されます)。

- [amd64] FreeBSD/amd64カーネルにおけるXen HVMサポートが改良されました。 その他の詳細に関しては、xen(4)マニュアルページを参照してください。

- FreeBSDは、GPT(GUID Partition Table)を完全にサポートしました。 プライマリヘッダーとプライマリパーティション・テーブルのチェックサムは現在、適切に確かめられます。

- [amd64,i386] aesni(4)ドライバーが新設されました。 これは、インテルCPU上に、AESアクセラレータがあると、crypto(4)のためにAES操作を加速します。

- [amd64,i386] aibs(4)ドライバーが新設されました。 これは、ASUSマザーボードにてハードウェアセンサをサポートし、acpi_aiboost(4)ドライバーの置き換えになります。

- tpm(4)ドライバーに、信頼されるモジュール(トラステッドプラットフォームモジュール) 判定サポートが加えられました。

- xhci(4)ドライバーに、Extensible Host Controller Interface (xHCI) と USB3.0サポートが加えられました。

- FreeBSD Linuxエミュレーションは、video4linux APIをサポートしました。これは multimedia/pwcbsdと、multimedia/webcamdによって提供されたもの等の Linuxネイティブな video4linux ハードウェア・ドライバーを必要とします。

- miibus(4)は、一般的なIEEE802.3 annex 31B full duplexフロー制御サポートのために書き直されました。これに伴い、alc(4)、bge(4)、bce(4)、cas(4)、fxp(4)、gem(4)、jme(4)、msk(4)、nfe(4)、re(4)、stge(4)、およびxl(4) に伴うドライバー atphy(4)、bmtphy(4)、brgphy(4)、e1000phy(4)、gentbi(4)、inphy(4)、ip1000phy(4)、jmphy(4)、nsgphy(4)、nsphyter(4)、およびrgephy(4) をアップデートしました。

- 新しい netgraph(4) に node_ng_patch(4)が新設されます。 これは通り抜けるパケットのデータ変更を実行します。 変更は8、16、32の符号のない整数か64ビットのサイズでC言語操作の部分集合に制限されます。

- FreeBSD TCP reassembly は改良されました。 SMPシステムに影響する長年のバグが解消され、net.inet.tcp.reass.maxqlen sysctl(8)変数が、動的に変わるソケットバッファサイズを示します。 FreeBSDの パケット受信は、現在、接続スループットを向上させる以前より、かなり良好にパケット損失回復(特に待ち行列オーバーフローで引き起こされた損失)を扱います。

- siftr(4)、Statistical情報 For TCP Research(SIFTR)カーネルモジュールは新設されました。 これは、活発なTCP接続におけるさまざまな統計をログファイルに登録する機能です。 それはシステム管理者、開発者、および研究者を対象にした、非常に高度なTCP接続状態の測定をする能力を提供します。

- geli(8) GEOM クラスは、現在、デフォルトでXTS-AESモードを使用します。
- ディスクフォーマットのときに、ZFSを Version 15へアップデートしました。そして、OpenSolaris から ZFSに様々な性能改良を導入しました。

- Userlandサポート dtrace(1) が新設されました。これはuserlandソフトウェア自体の試験とカーネルとの相関関係を許容します。その結果、場面の後ろで先へ進んでいる状況の表示ができます。 dtruss(1)ユーティリティを加えました。そして、この機能をサポートするためにlibprocをアップデートしました。

- gpart(8)ユーティリティは、GPTパーティション・テーブルを回復できるようになりました。

- part(8)ユーティリティは、現在、GPTでGPT_ENT_ATTR_BOOTME、GPT_ENT_ATTR_BOOTONCE、およびGPT_ENT_ATTR_BOOTFAILEDに属性をサポートします。 コマンドラインの属性キーワードは、bootme、bootonceであり、それぞれbootfailedされました。

- libarchiveライブラリと tar(1) ユーティリティは、LZMA(Lempel-Zivマルコフ連鎖アルゴリズム)圧縮形式をサポートしました。

- newsyslog(8)ユーティリティは、デフォルトsyslogd(8) PIDファイルに優越するために -S pidfileオプションをサポートしました。

- newsyslog(8)ユーティリティは、新たに処理ファイル包含のために、特別なログファイル名をサポートします。 ファイル Globbingで、名前検出がサポートされます。 その他の詳細に関しては、newsyslog.conf(5)マニュアルページを参照してください。

- pmcstat(8)ユーティリティは、現在、トップソースとしてファイルとネットワークソケットをサポートします。 これはシステムの上で例えば、ローカルのシンボルなしでTCPの上のトップモニターを許します。

- tftp(1)とtftpd(8)ユーティリティは、より良い相互運用性のために改良されました。そして、それらは、現在、RFC1350、2347、2348、2349、および3617をサポートします。

- periodic スクリプトに zfs関連が加えられました。 その他の詳細に関しては、periodic.conf(5)マニュアルページを参照してください。

- periodic スクリプトに、ミスマッチしているチェックサムでインストールされたポートのファイルを見つけるスクリプトが加えられました。 その他の詳細に関しては、periodic.conf(5)マニュアルページを参照してください。

- sysinstall(8)ユーティリティは、デフォルトと最小のパーティションサイズに、以下の値を使用するようになります: /のための1GB、/varのための4GB、および/tmpのための1GB。

- ACPI-CAを20101013にアップデートしました。
- ee(1) をバージョン1.5.2にアップデートしました。
- ISC BINDをバージョン9.6-ESV-R3にアップデートしました。
- netcatをバージョン4.8にアップデートしました。
- OpenSSLをバージョン0.9.8qにアップデートしました。
- タイムゾーンデータベースをtzdata2010oリリースにアップデートしました。
- xzを2010年4月12日スナップショットから5.0.0リリースにアップデートしました。
- GNOMEデスクトップ環境(x11/gnome2)をバージョン2.32.1にアップデートしました。
- KDEデスクトップ環境(x11/kde4)をバージョン4.5.5にアップデートしました。

○ FreeBSD 7.4R リリースノート(勝手な和訳)

- GNOMEデスクトップ環境(x11/gnome2)をバージョン2.32.1にアップデートしました。
- KDEデスクトップ環境(x11/kde4)をバージョン4.5.5にアップデートしました。
- [sparc64] FreeBSD/sparc64が新たにサポートされました。
- [sparc64] FreeBSD/sparc64は、UltraSPARC IV, IV+, and SPARC64 V CPUをサポートします。
- alc(4)ドライバーは、Atheros AR8151/AR8152 PCIe Gigabit/ファースト・イーサネットコントローラを新たにサポートしました。
- bge(4)ドライバーは、BCM5718 PCI Express x2 デュアルポートギガビットイーサネットコントローラを新たにサポートします。 このファミリーは、BCM5714/BCM5715家の後継であり、IPv4/IPv6チェックサムのVLANハードウェア動作、TSO、タグ付け、ジャンボフレーム、MSI/MSIX、IOV、RSS、およびTSSが機能します。 ドライバーの最新版はIOVとRSS/TSS以外のすべてのハードウェア機能をサポートします。

- fxp(4)ドライバーは、i82550とi82551コントローラのVLAN上でTSOをサポートしました。

- re(4)ドライバーは、RTL810xE/RTL8168/RTL8111 PCIeのために64ビットDMAをサポートしました。

- rl(4)ドライバーは、現在、RTL8139Bか、より新しいコントローラ上でWoLをサポートしました(Wakeup on LAN)。

※詳細は、それぞれのリリースノート参照下さい。
FreeBSD 8.2R 〔英文〕
FreeBSD 7.4R 〔英文〕

2011/01/28(金)iso-2022-jp コード問題の対応まだ

2017/10/12 4:20 はんかくさい
2010/12/20 の記事 にて、iso-2022-jp いわゆる、JIS コードでエンコードされた Webサイトを IE8 で閲覧すると、文字化けするようになったという記事を掲載しました。

当方では、その後の反応はサッパリだが、今日、メンテナンスで IE8 にて動作チェックをしたら、(この間の自動 Windows update は3回くらいあった)文字化けは治らない状況で、やはり別の Web ブラウザ(Firefox とか Chrome あたり)を使ってもらうしかない、という状況。

一応、状況報告が挙がっている模様:
MS10-090 導入後の不具合につきまして〔Internet Explorer ブログ (日本語版)〕
↑ 作りこんだ問題解決をやる気があるんだか、無いんだか、、
「(コンピュータ)ウィルスと同じ」という厳しい意見もあるが、この点はそう言える。

制作者によっては、 iso-2022-jp (JISコード) なんて、使ったこと無いという層もいるようですが、そういう制作者は、ここ数年の新参者が多いでしょうね。
個人的には、結果的に技術教育できていないのねぇ、、なんて思ってしまった。。

昔は、日本語のサイト=iso-2022-jp と決まっていたようなもので、ベテラン層はそれを忠実に守ってきただけの話です。

コンテンツの文字コードを変えるという作業は、一般ユーザには単純な話に思うのでしょうが、想像以上にはるかに煩雑です。
そのコスト払ってくれないと、、です。

2011/01/26(水)今まで見た中では最高記録

2017/10/12 4:19 はんかくさい
 **:**AM  up 971 days,  7:08, 1 user, load averages: 0.00, 0.00, 0.00
 USER TTY FROM LOGIN@ IDLE WHAT
 ******** p0 example.com **:**AM - w

うーむ、、はんかくさいと言うより、「良く連続動作してるなぁ」という感想。
決してσ(^^) が管理しているサーバではありません。
稼動OSが恐ろしく古く、対応出来ないソフトウェアもあるレベル。

*ぱっと見て解らない方へ*
最上行左側は、連続稼動の期間。971 days と7時間8分。

2011/01/17(月)CGI に使う言語

いわゆる、ここではプログラム言語に何を使うか? という話。

日本では、
PHP , Java というのがもてはやされている模様。
ですが、これはちょっとガラパゴス化している可能性が最近出てきた感ありです。
元々当方は、メンテナンスの点で PHP は否定的、 Java は無駄に高性能なハードウェアを要求する点で否定的。

当方的に推奨できるのは Perl です。あと、ruby。C言語や C++,C# もありです。
こう書くと、嘲笑の対象なんですな、、しかしです。嘲笑するような奴らは、はっきり言ってITゼネコンに洗脳されています。

Java は、ITゼネコンのひとつである、富士通が主に推進し、ごり押ししました。
それが実体。資金力に任せてAPIを提供してきたので、そこそこ使えるのでしょう。
しかし、無駄にハードウェアを高性能化することを要求されるため、ハードウェアの売り上げに繋がる、という商業的な理由があります。
だから、当方はそういうのは承服できないのです。

PHP は、バージョンアップの度に、過去の互換性検証を強要されます。
これだけでもうメンテナンス性がダメダメです。
作りっぱなしなら問題ないけれど、ここでも「互換性検証」という名目で売り上げ増や維持に繋がる、という商業的理由があります。
PHP もITゼネコンが半ばごり押しした言語。

一方で、Perl は10年前に作成したものであっても、セキュリティ問題等さえなければ、何の問題もなく、さくっと動作するのです。こういうのを「後方互換性が優れている」と評価します。Windows で言えば、 Windows 95 の時代に作ったアプリケーションが、Windows 7 や Windows XP でも何の問題もなく、さくっと動作するという感じです。

ruby 、C++、C# なんかも、そんな傾向です。
perl であれば、商業的なことで、無駄なことしなくて済むのです。
だから、米国やインドなどの日本以外の国では、Perl や ruby が見直されてきています。

だが、商業的には都合が悪いかもしれません。
日本のITゼネコン達は Perl や ruby を使うことは否定的です。

若干話題から脱線しますが、「フレームワーク」というプログラム制作上の枠組みを設けることが、均質で質のよいプログラムを作る礎と思い込んでいる勘違いマネージャーもおり、ますます日本のソフトウェア産業 の未来は懐疑的です。

無駄削減を従業員に強要する企業が、顧客に無駄を強要しているのです。
システム開発は、ウチのような中小の方がいい仕事できます。
ただ、ITゼネコンの下請け会社のようなところは避けましょう。

弊社は、ITゼネコンの下請けはしていません。下請けになれば、技術者は育たない。それが体感として判っているからです。
だから、最初からプロジェクトを任された場合に限るのですが、ある程度の能力的自信はあります。