「FreeBSD」タグアーカイブ

Command time limit exceeded (procmail)

先日から、自サーバーにメールを送ったらMAILER-DAEMONさんからこんなエラーが返ってくるようになりました。

Subject: Undelivered Mail Returned to Sender
Command time limit exceeded: “/usr/local/bin/procmail”

自サーバーではprocmailを使ってスパムメールの処理をさせていますが、これと言ってエラーの原因になるようなログが残っていません。時々エラーが返ってくることがある程度だったのがだんだん増えてきました。procmailを通らない経路のメールはちゃんと配信されているのでprocmailのどこかが変です。 続きを読む Command time limit exceeded (procmail)

DDNSサービスを作ってみる

先日のエントリーの続き。

DDNSサービス構築の下調べ

まずは題名の通りの下調べ。さすがに全部一から自分でDDNSサービスを作るのはさすがに面倒というか、この広い世の中にはきっと先人が情報を公開してくれていると信じてあれこれ探してみました。

DDNSでぐぐっただけだとプロバイダや何かの団体が提供している無料DDNSサービスは沢山見つかります。また、そのサービスを自宅サーバーなどで使うためのDDNSクライアントの設定記事も同様に沢山見つかります。でも、そのDDNSサービスそのものを構築する具体的な方法まで踏み込んで書いてある記事はなかなか見つからないのです。 続きを読む DDNSサービスを作ってみる

FreeBSD 8.3-RELEASE

4月にFreeBSD 8.3-RELEASE がリリースされました。(FreeBSD 8.3-RELEASE Announcement

3月中旬に8.2-RELEASE-p6から8.3-PRERELEASEに変わる頃までは追っかけていましたが、RELEASE直後にありがちなトラブルとかを避ける意味も含めて4月はちょっとさぼっていました。ようやく先日、makeworldして8.3-RELEASEに移行しました。すでにp1になってました。何台か稼働しているサーバーを順次移行していってますが、とりあえず目に見える不具合はなさそうです。

FreeBSD 8.3-RELEASE-p1 #10: Tue May 29 10:46:33 JST 2012

 

20120503: p1 FreeBSD-SA-12:01.openssl Fix multiple OpenSSL vulnerabilities.
20120411: 8.3-RELEASE.

vsftpd 2.3.5 : refusing to run with writable root inside chroot()

先日のmakeworldついでにたまっていたportsのアップデートをシコシコと済ませたら今朝になってvsftpdが変だということに気が付きました。

ftpクライアントでログインを試みると

500 OOPS: vsftpd: refusing to run with writable root inside chroot()
500 OOPS: priv_sock_get_cmd

と言われてアクセスを拒否られてしまいます。portsのアップデートは vsftpd-ssl-2.3.4 から vsftpd-ssl-2.3.5 でした。きっと私の他にも不幸な目にあっている人がいるに違いないと上記のエラーメッセージでぐぐってみるとやはり先人がいらっしゃいました。情報感謝。

~かなりオタクで(21)なPC馬鹿の雑記~(vsftpd 2.3.5)
3. Download sources of vsftpd-ext, compile and overwrite exist vsftpd binaries or take it from repositories and add to configuration file option allow_writable_root=yes.

vsftp の代わりに vsftp-ext を使って allow_writeble_root=yes を指定すればよさげです。

portsの中を探してみると /usr/ports/ftp/vsftpd の隣に /usr/ports/ftp/vsftpd-ext がありました。

# pkg_info | grep vsftpd
vsftpd-ssl-2.3.5    A FTP daemon that aims to be “very secure”
# pkg_delete vsftpd-ssl-2.3.5
# portinstall ftp/vsftpd-ext
# pkg_info | grep vsftpd
vsftpd-ext-ssl-2.3.5.1_1 A FTP daemon that aims to be “very secure”. Extended build

でportsを削除&インストールして、/usr/local/etc/vsftpd.conf の末尾に

allow_writable_root=YES

を追加して完了。

これで元通りにftpアクセスができるようになりました。

 

参考サイト:~かなりオタクで(21)なPC馬鹿の雑記~(vsftpd 2.3.5)

FreeBSD 8.3-PRERELEASE

半年くらい前にFreeBSD 8.2-Releaseに上げたところなのにもう次の8.3がリリースされる時期になりました。

FreeBSD 8.2-RELEASE-p6 #8: Wed Mar 14 19:59:06 JST 2012
FreeBSD 8.3-PRERELEASE #9: Sun Mar 18 12:40:41 JST 2012

8.2-Releaseは先日の時点でp6まで上がっていました。makeworldでSTABLEに上げると8.3-PreReleaseになりました。スケジュール(FreeBSD 8.3 Release Process)によると現時点でRC1ということになりますね。

そういえば、使ったことが無いですがPC98が未だにサポートされているんですね。今使っているサーバー(Atom 330 @1.6GHz)でbuildworldが約1時間半、buildkernelが約1時間かかっています。静音サーバー(VIA C3@1GHz)だとbuildworldが約6時間、buildkernelが約2時間もかかります。PC98だと一体どれくらいかかるんでしょうね。確かMMX166のThinkPadで当時のFreeBSDで1日近くmakeworldにかかっていた記憶があるのでそれ以上になるのかな。

 

FreeBSD 8.2-Release (Make World)

久しぶりの備忘録

去年の10月に、友人宅サーバーからFreeBSDが使える専用サーバーに移転したのですが最初に入っていたのがFreeBSD 8.0-Releaseで、すぐに8.1-Releaseにアップして使っていました。6月頃にアップしたらFreeBSD 8.1-RELEASE-p4まで上がっていました。

今年の2月に8.2-Releaseが出てから半年経過したのでそろそろいいだろうと思ってMake Worldしてみました。半年でp2まできてますね。とりあえず問題なし。

8.2-RELEASE-p2 FreeBSD 8.2-RELEASE-p2 #6: Thu Sep  8 17:52:01 JST 2011

 

FreeBSD 8.0 End of Life

FreeBSD 8.0が今年の11月末でEOL(End of Life)を迎えるというお知らせが先日MLに流れてきました。

ANNOUNCE: [FreeBSD-Announce] HEADS UP: FreeBSD 6.4 and 8.0 EoLs coming soon
The current supported branches and expected EoL dates are:

   +---------------------------------------------------------------------+
   |  Branch   |  Release   |  Type  |   Release date  |  Estimated EoL  |
   |-----------+------------+--------+-----------------+-----------------|
   |RELENG_6   |n/a         |n/a     |n/a              |November 30, 2010|
   |---------------------------------------------------------------------|
   |RELENG_6_4 |6.4-RELEASE |Extended|November 18, 2008|November 30, 2010|
   |---------------------------------------------------------------------|
   |RELENG_7   |n/a         |n/a     |n/a              |last release + 2y|
   |-----------+------------+--------+-----------------+-----------------|
   |RELENG_7_1 |7.1-RELEASE |Extended|January 4, 2009  |January 31, 2011 |
   |-----------+------------+--------+-----------------+-----------------|
   |RELENG_7_3 |7.3-RELEASE |Extended|March 23, 2010   |March 31, 2012   |
   |-----------+------------+--------+-----------------+-----------------|
   |RELENG_8   |n/a         |n/a     |n/a              |last release + 2y|
   |-----------+------------+--------+-----------------+-----------------|
   |RELENG_8_0 |8.0-RELEASE |Normal  |November 25, 2009|November 30, 2010|
   |-----------+------------+--------+-----------------+-----------------|
   |RELENG_8_1 |8.1-RELEASE |Extended|July 23, 2010    |July 31, 2012    |
   +---------------------------------------------------------------------+

手元のFreeBSD 8.0-Releaseを入れたままのサーバーでcvsupを入れてソースを8.1-Release(tag=RELENG_8_1)に上げてMake Worldしようとしたらカーネルのコンパイルでエラーが出ました。一旦、8.0-Release(tag=RELENG_8_0)で最終版に上げてから8.1に上げたら問題なくいきました。

FreeBSD 8.1-RELEASE → FreeBSD 8.0-RELEASE-p4 → FreeBSD 8.1-RELEASE

非力なCPUのマシンで、buildworldが約6時間弱、buildkernelが約2時間もかかるのでcvsupも含めて結構時間がかかりました。

Squid 2.7.9 (FreeBSD)

FreeBSD 8.0-Releaseでの設定方法のメモ

portsからインストール

portsのありか

/usr/ports/www/squid

(/usr/ports/www/squid30とか/usr/ports/www/squid31があるけど今回は2.x系のままで。)

/usr/local/etc/pkgtools.conf(特に目新しいことはなし)

MAKE_ARGS = {
        '*' => 'WITHOUT_X11=yes',
  }

インストール

portinstall www/squid

オプション設定はこんな感じ
/var/db/ports/squid/options

# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for squid-2.7.9
_OPTIONS_READ=squid-2.7.9
WITH_SQUID_KERB_AUTH=true
WITHOUT_SQUID_LDAP_AUTH=true
WITH_SQUID_NIS_AUTH=true
WITHOUT_SQUID_SASL_AUTH=true
WITH_SQUID_DELAY_POOLS=true
WITH_SQUID_SNMP=true
WITH_SQUID_CARP=true
WITHOUT_SQUID_SSL=true
WITHOUT_SQUID_PINGER=true
WITHOUT_SQUID_DNS_HELPER=true
WITHOUT_SQUID_HTCP=true
WITHOUT_SQUID_VIA_DB=true
WITHOUT_SQUID_CACHE_DIGESTS=true
WITH_SQUID_WCCP=true
WITHOUT_SQUID_WCCPV2=true
WITHOUT_SQUID_STRICT_HTTP=true
WITH_SQUID_IDENT=true
WITH_SQUID_REFERER_LOG=true
WITH_SQUID_USERAGENT_LOG=true
WITHOUT_SQUID_ARP_ACL=true
WITHOUT_SQUID_PF=true
WITHOUT_SQUID_IPFILTER=true
WITHOUT_SQUID_FOLLOW_XFF=true
WITHOUT_SQUID_AUFS=true
WITHOUT_SQUID_COSS=true
WITH_SQUID_KQUEUE=true
WITHOUT_SQUID_LARGEFILE=true
WITHOUT_SQUID_STACKTRACES=true

squidの設定

/usr/local/etc/squid/squid.confを編集

#キャッシュを増やす 100(MB)->4096(MB)
cache_dir ufs /var/squid/cache 4096 16 256

#アクセス許可のネットワークを指定
acl ほげほげ src www.xxx.yyy.zzz/255.255.255.248

#アクセスを許可
http_access allow ほげほげ

#できるだけ寡黙なプロキシにするための設定
visible_hostname unknown
forwarded_for off
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all

#他にもパラノイア設定が必要であれば以下を
anonymize_headers deny From Referer Server
anonymize_header deny User-Agent WWW-Authenticate Link
fake_user_agent Mozilla/4.99 [en] (Windows NT 5.0; U)

設定間違いが無いかは

/usr/local/sbin/squid parse

で確認。エラーが出たら修正。

portsの場合はデフォルトで/var/squid下にキャッシュやログができます。
(以前は/usr/local/squid下だったのが変わっています)

squidは使い始めにキャッシュのディレクトリ構造を作ってやる必要があるので

/usr/local/sbin/squid -z

で初期化する。

/etc/rc.confに

squid_enable=yes

を追加。

/usr/local/etc/rc.d/squid start

で起動。

パスワードによるアクセス制限

squid.confに追記

acl hogehoge proxy_auth REQUIRED
http_access allow hogehoge

auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/passwd.squid
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

/usr/local/etcにパスワードファイル作成

# htpasswd -c passwd.squid  ユーザー名
New password:(パスワード)
Re-type new password:(パスワード)
Adding password for user  ユーザー名

以前の記事:FreeBSD (Squid2.6)

DNRH-001の内蔵UPSをFreeBSDで使う

はじめに

一時期安値で放出されたUPS内蔵ファンレスPCのDNRH-001が何故か手元にあります。2年ほど前に友人のONSさんが静かなPCだけど電源から変な音がするのが気になるし、もう使わないので誰かいる?と仲間内に放出されたのを私が手を挙げてゲットした物なのです。前回日本に一時帰国した際にこちらに持ち帰って非力なWindowsマシンとして使っていました。最初のうちは内蔵UPSが機能していましたがそのうちに動作が怪しくなり、さらにGUIで使うには遅いPCなので使う機会が減りついにお蔵入りになってました。最近になってFreeBSD 8.0-RELEASEで使ってみようとふと思い、どうせなら内蔵UPSもきちんと使えるようにしようと色々手を入れることにしました。これはその時の自分用の備忘録です。

電源の異音対策

まず、変な音は電源部の二次側にあるトロイダルコアに線を巻いたトランスから発生していました。巻線が磁界で振動して鳴いています。トランスを取り外して線を巻きなおし、エポキシ系の接着剤で巻線を固めて取り付け直してほぼ鳴き止みました。これ以上は真空チャンバで脱泡して固めればいいのですがまあそこまでは無理ですね。

放熱対策

次に、ファンレスPCということなので静かでいいのですが、やはり熱が相当こもります。CPUに大きなヒートシンクが付いていますがmake worldを始めるとかなり熱くなります。それ以上にチップセットのヒートシンクも熱くなります。筐体内で空気が淀むのでHDDも相当熱を持ちます。さすがにこれで24時間稼動は無理なので熱対策をします。ネットで色々調べてみましたが、結論は静音ファンを1個追加して軽く空冷し、3.5インチのHDDを2.5インチのに載せ替えて消費電力を若干下げて対応することにしました。HDDの3.5-2.5変換の基板は「これ」を購入しました。送料無料の通販で$1.59なり。熱対策で電源部に小口径のファンを入れている例もみかけましたが電源部はケースに放熱する構造なので筐体内に若干でも空気が流れていればOKレベルだろうということでCPUとチップセットの近くにファンを1個だけで済ませました。
ファンは近所の店で「Cooler Master Case Fan R4-SPS-20AK-GP」を購入。CPUとチップセットとメモリに風が良く当たる位置で筐体側にネジ4個で取り付けます。筐体には元々パンチングメタル状に穴が開いていますが穴が小さくてあまり効率が良くありません。ドリルで穴を広げて風がよく抜けるようにしました。風の向きは外気吸入です。このファンは薄型大口径でかなり筐体が華奢です。取り付けの時にネジをきつく締めるとネジの回転で筐体が少したわみ、回転するファンの羽根がファンのケースに当たるのでネジ締めの加減が難しいです。
このファンは風切り音はほとんどしませんが効果は絶大でした。これで指で触れないくらいに熱くなっていたチップセットのヒートシンクも問題ないレベルまで温度が下がりました。HDD周りも2.5インチ採用で隙間が出来、空気が流れているので大丈夫そうです。

内蔵UPSの電池交換

お次は内蔵UPS周り。内蔵UPSの電池は単三型のニッケル水素電池を10本パックにしてヒューズが入った金属ケースに入っていました。電池を外して電圧チェックしてみましたが完全に駄目になっていました。最初は単三のエネループを電池ボックスに入れて使おうかと思いましたが適当な10本用の電池ボックスが見つからず、代わりに電池10本をパックしてリード線を出したタイプのものを見つけたのでそれを使うことにしました。(電池単体の仕様書はこちら→PDF)
この電池パックは元の金属ケースには入らない形状なので手持ちのガラエポのユニバーサル基板を適当に切って取り付け台にし、テープとタイラップで電池を固定して押し込みました。ヒューズは元から付いていたのをそのまま流用。

充電特性

この状態で早速データ取りです。BIOS画面にしたままでまずは電池を充電しながら端子電圧を見ていきます。10本直列なので1本当たりの電圧は計算が簡単ですね。青色のデータは諸般の事情で測定時間が飛んでたり、充電が途中で休止したりのデータですが、1回目の充電のデータです。この内蔵UPSの充電回路の開放電圧は約16Vで、実際の充電電流は測定していませんが、電池の仕様では0.1C(10時間充電)で充電終止電圧が1.48Vくらいなので、測定値から見るとほぼ20時間率のトリクル充電を行っているようです。赤色のデータは2回目の充電で、こちらはほぼ連続したデータが取れています。いづれも同じような素直な充電特性です。

放電特性

放電特性は電圧だけでなくシリアル(COM2)のDCDとDSRの動作を合わせて確認。AC電源断から数秒でDCDがLからHに変化します。これでACラインが切れたことが検出できます。電池の放電が進み電圧が10.5Vを切ると今度はDSRがLからHに変化します(バッテリLow)。そしてその後1分しないうちにPCはハング(BIOS画面で時計表示が止まる)しました。これでバッテリを使い切る直前にシャットダウンするのはかなり危険というかほぼ無理でしょう。UPSの動作として利用できるのはAC断のDCDだけと思った方がよさそうです。
肝心の電池の持ち時間ですがBIOS画面で約45分で落ちましたから、負荷がかかっている場合を考えても20分くらいはいけそうです。2200mAhの電池で45分ということは大体30~40Wの消費電力に相当ですからまあ妥当な線でしょう。

UPS制御ソフト

これで内蔵UPSの使い方と限界が分かったので、最後にFreeBSDで使う方法(ソフト)です。まずAC通電時に手動で shutdown -p now の動作確認。すると一旦は電源が切れるのですが、その後すぐに勝手に電源が入ってしまいます。結局ACPIを無効にしてAPMを有効にすることで電源を切れるようになりました。以下がそのための方法の詳細。

/boot/loader.conf に下記を追記。

apm_load=”YES”

/boot/device.hints に下記のように編集

hint.acpi.0.disabled=”1″ ←追記
#hint.apm.0.disabled=”1″ ←コメントアウト
hint.apm.0.disabled=”0″ ←追記
hint.apm.0.flags=”0x20″

/etc/rc.conf に下記を追記

apm_enable=”YES”

COM2を監視しつつshutdownする動作のソフトをネットで色々探してみたら「FreeBSD対応フリーソフトウェア」を見つけました。これはCTSがAC断、DCDがバッテリLowとして動作しているのでソースをいじってそれぞれDCDとDSRに書き換え。他に”shutdown -h now”の記述を”shutdown -p now”に書き換えたりMakefileを修正したりでDNRH-001に対応できるようになりました。AC断からシャットダウンまでの時間はとりあえずデフォルトの5分(300秒)のままにしています。ソース修正後、make; make install; でコンパイル&インストール。そして、 /etc/devfs.conf に下記の設定を追加します。

link cuau1 usv

注) 手動で “ln -sf /dev/cuau1 /dev/usv” とシンボリックリンクを張ってもFreeBSD 8.0-RELEASEでは再起動すると設定が消えてしまうので上記の方法で設定する必要がありました。

これでFreeBSDを再起動すると /usr/local/etc/rc.d/usvd.sh で /sbin/usvd と /sbin/usv_back が起動します。動作は以下のとおり確認できました。

  • ACの状態を10秒毎に監視
  • ACが切れて5分後に自動的にシャットダウンして電源オフ。
  • 5分以内にACが復活したらそのまま動作継続。
  • シャットダウン中にACが復活したらリブートして復帰。
  • シャットダウン完了までにACが復活しなければそのまま電源オフ。
  • ACが復活したら起動。

付録

FreeBSD対応フリーソフトウェア(簡易シャットダウンソフト)DNRH-001対応版
※このソフトの著作権は、(株)ユタカ電機製作所にあります。