|
Spaces home Mimori's Algorithms Spac...PhotosProfileFriends | ![]() |
|
|
August 19 孤立したMSDTCトランザクション への対処FIX:継続的な MS DTC トランザクションは、 SQL Server 2005 で孤立します。 または FIX: An ongoing MS DTC transaction is orphaned in SQL Server 2005 によってHotFixが提供されているようなのだが未適用の環境で問題が起きたのでメモ。 環境の概要
このような状況で、ServerB (ディストリビュータも兼ねている) において spid=-2 のSQLServerプロセスによってロックが確認され、トラブル対応で調査を行った。 結論としては、spid=-2 のSQLServerプロセスは孤立したMSDTCトランザクションであり、MSDTC側の作業IDユニットは次のSQL文で確認することができる。
SELECT DISTINCT(req_transactionUOW) FROM sys.syslockinfo WHERE req_spid = -2 また、GUIとしては 管理ツール - コンポーネントサービス の分散トランザクションコーディネータ - トランザクションの一覧で確認できる。 比較的早期にMSDTCではないかとあたりを付けたため MS DTC トランザクションに関するトラブルシューティング にたどりついていたのだが、SQL Server 2005 以降ではKILLステートメントの構文は異なり WITH ROLLBACK はつけられない。 トラブルシューティングにあるように、一度GUI画面から「中止」や「破棄」を行おうとしたが、エラーメッセージとともに受け付けてはもらえず、対処としては、 KILL '00000000-0000-0000-0000-000000000000' というように KILL ステートメントの引数として1つだけシングルクオートで囲った作業IDユニット を渡してトランザクションを終了させた。
FIX:継続的な MS DTC トランザクションは、 SQL Server 2005 で孤立します。(KB949075) が累積パッチに含まれているかを確認してみたが、Cumulative update package 8 for SQL Server 2005 Service Pack 2 (CU8) 時点でもまだ含まれていないので個別にHotFixを適用するしかない。 August 18 Windows Vista でロック中にパスワード有効期限が切れた時の挙動ロック解除用のパスワード入力画面で有効期限切れパスワードを入れると「キャンセルを押してユーサーの切り替え画面でパスワードを変更して下さい」みたいなメッセージが出てくる。実際にはキャンセルボタンはなくてOKボタンしかないのだが。 それはともかく、ユーザーの切り替えを押すと、ユーザーの選択画面に移動するのだが、そこで更に「ログインしています」と表示されている自分のアカウントを選択するとパスワード変更の画面に移動する。 …そんだったら自動的にパスワード変更画面にいってくれてもいいのに、と思わなくもないが、きっとUACと似たような理由でプログラムから自動的にユーザーの選択画面(ログイン用のパスワード入力画面)に移動するわけにはいかないような気がする。 August 07 SQL Server 2008 RTMダウンロードできるようになった。.NET Framework 3.5 SP1 もRTMになっている。 .NET Framework 3.5 SP1 Beta から .NET Framework 3.5 SP1 へのアップグレードは特に問題発生しなかったが、再起動は必要。 SQL Server 2008 を入れようとすると、インストーラの途中のチェックで Visual Studio 2008 SP1 を要求してくる。開発マシンに入れようとするなら Visual Studio の方が出てくれないと更新できない。 追記: SQL Server 2008 RTM を入れたときに一緒に入るVisualStudio2008(Business Intelligence Development Studio) のバージョンは 9.0.30729.1 SP 現在のVS2008SP1Beta のバージョンは 9.0.30428.1 SP1Beta1 早く VisualStudio 2008 SP1 出てくれー(切実) August 06 System.Web.HttpUtility.UrlEncodeで文字化けSystem.Web.HttpUtility.UrlEncodeで文字化け より
Visual Studio 2008 Intellisense for jQuery 1.2.6Visual Studio 2008 Intellisense for jQuery 1.2.5 経由 JQuery 1.2.6 Intellisense for Visual Studio 2008 VisualStudio が このIntellisense 用のファイルを認識させる方法は Intellisense for jQuery in Visual Studio 2008 に記載されており、reference 要素を記述する。 August 05 KDDI Security PassSecurity Pass はドコモの First Pass 同様、初期費用無料、月額利用料無料 というサービス。 まあ要するに申込をするとCA証明書とCRLを提供してくれるというだけなので、CA証明書とCRLのURLを公表してくれりゃいいじゃん、という話のような気もするのだが。 ただ、すっかり au の機種にはうとくなってしまったので 「Security Pass」対応機種 がどの程度普及した端末群なのかは全く判断できない。 証明書の取得は端末内のメニューにはなくて http://au-spdl.kddi.jp/spdl/reception にアクセスする。発行すると2年間有効な証明書が入る。
ちなみにちょうど昨日、会社のサイボウズサイトに携帯(FirstPass認証)からアクセスできないという連絡があって調べたところ、週末からCRLダウンロードに失敗していてCRLの期限切れで接続遮断しているという状態であった。先週金曜日にネットワーク構成を変更したこともあって、ドコモからCRLがダウンロードできなかったのはこちらが悪いだけなのだが、ちゃんと証明書の検証が行われているのが確認できたという意味では安心できる。 SSL証明書同様 CRLの有効期限に関するエラーも hobbit で検出したいところだ。 August 04 CAMELLIA 暗号OpenSSLのコマンドをたたいていたら、CAMELLIA256 とか見えていつの間にか取り込まれていた。FreeBSD 7.0 にて。 Wikipedia の Camellia を確認すると FireFox3 にも取り込まれている。 apcahe のSSL設定で、CAMELLIA 優先にしてみた。 SSLCipherSuite CAMELLIA:AES:RC4:3DES:!LOW:!SSLv2:!EXP:!ADH …FireFox3から接続したところログによるとちゃんとCAMELLIA使っているようだ。
ちなみに C# から使う場合は openCrypto.NET を組み込むと、他の暗号化クラスと同様に利用できる。AES に対するアドバンテージは主にハードウェア実装の場合の消費電力と思っている。携帯端末から使った時にちょっとエコ? AESを置き換えるということはおそらくありえないだろうな。 July 30 NameValueCollection に対して直接 foreachMSDNのドキュメントを見ても GetEnumerator が何を返すのか読み取れなくて結局ググって調べた。 Hacking the NameValueCollection のコメント欄より
foreach (KeyValuePair<String,String> nvp in NameValueCollection nvc) {
[....]
string key = nvp.Key;
string value = nvp.Value;
}
伝統的にはこういった辞書型に対してはKeysを順番に取り出して処理をするものなのだが、一度に取り出せるのなら取り出した方が速いのではないかと思った次第。 でも本当に速いかどうかは計測しないといかんな TODO (7/31 追記) NameValueCollection そのものではなく ASP.NET の QueryString を対象とするのが目的だったのだが、結局うまくいかなかった。Keys を順番に取り出す方式で結局対処することとした。 July 29 VMware ESXi 無償提供VMware社がESX 3iを来週無償で公開(20080722-1) vmware サイトに行くと「Go Virtuel for Free ESXi」の表示になっているので利用できるようになっているようだ。 VMware Infrastructure 3 Documentation の Systems Compatibility Guide for ESX Server 3.5 and ESX Server 3i , I/O Compatibility Guide for ESX Server 3.5 and ESX Server 3i を眺めると、ハードウェアの制約は厳しそうな一方、 ドライバの名前がどうみてもLinuxなので動かしてみたらなんとかなるかもしれない。 July 27 inspircd 社内用ircサーバの設置社内でirc使えという指示が来たのだが、公開ircサーバを仕事で使うのは書き込む内容に気をつけないといけなくなって不便なんで自分でサーバを立てることにした。 昔ながらの ircd については、設定ファイルがバッドノウハウくさいので避けることとし、SSL通信機能を持っている inspircd を選択。ports でのインストールについては WITH_OPENSSL, WITH_SSLMODULES を指定してSSLモジュールが入る。ドキュメントによると GNUTLS 推奨だけどopensslに慣れ親しんでしまったので openssl で。 また、2台構成にしてデータをサーバ間でやりとりするようにすることにより冗長構成を実現した。 日本語の解説としては Windows/Mac OS X/Linux/BSDで動作するフリーのIRCサーバ「InspIRCd」 でWindowsにインストールする様子が書いてある。が設定ファイルの詳細については解説がない。 inspircd.conf で2台構成における最低限と思われる設定を作成したので置いておく。
<server name="irc1.example.com" description="Example Irc World" network="ExampleIrc">
<admin name="exampleAdmin" nick="exampleAdmin" email="admin@example.com">
<bind address="IRC1のIPアドレス" port="6667" type="clients" ssl="openssl">
<bind address="IRC1のIPアドレス" port="7000" type="servers" transport="openssl">
<power diepass="/DIE用のパスワード" restartpass="/RESTART用のパスワード" pause="2">
<files motd="inspircd.motd" rules="inspircd.rules">
# 上記の2つのファイル inspircd.motd,inspircd.rule については適当に用意する。
# inspircd.motd は接続時に表示される文字列
# inspircd.rules は何もしないなら空のファイルでよい
<options prefixquit="Quit: "
loglevel="default"
netbuffersize="10240"
maxwho="128"
noservices="no"
qaprefixes="no"
deprotectself="no"
deprotectothers="no"
somaxconn="128"
softlimit="12800"
userstats="Pu"
operspywhois="no"
customversion=""
maxtargets="20"
hidesplits="no"
hidebans="no"
hidewhois=""
flatlinks="no"
hideulines="no"
nouserdns="no"
syntaxhints="no"
cyclehosts="yes"
ircumsgprefix="no"
announcets="yes"
disablehmac="no"
hostintopic="yes"
hidemodes="eI"
quietbursts="yes"
pingwarning="15"
serverpingfreq="60"
allowhalfop="yes"
defaultmodes="nt"
moronbanner="You're banned! Email haha@abuse.com with the ERROR line below for help."
exemptchanops="">
<connect allow="*"
password="接続用パスワード"
timeout="60"
flood="20"
threshold="1"
pingfreq="120"
sendq="262144"
recvq="8192"
localmax="30"
globalmax="30">
<link name="irc2.example.com"
ipaddr="IRC2のIPアドレス"
port="7000"
allowmask="192.0.2.0/24みたいな感じで"
autoconnect="300"
timeout="15"
transport="openssl"
bind="IRC1のIPアドレス"
statshidden="no"
hidden="no"
sendpass="IRC1サーバ間パスワード"
recvpass="IRC2サーバ間パスワード">
<pid file="/var/run/inspircd/inspircd.pid">
# SSL modules should be place earlier
<module name="m_sslinfo.so">
<module name="m_sslmodes.so">
<module name="m_ssl_openssl.so">
# modules
<module name="m_spanningtree.so">
また、SSL通信に必要な証明書ファイルは標準で cert.pem(証明書ファイル), key.pem(秘密鍵ファイル), ca.pem(証明機関証明書ファイル), dhparams.pem(DH用) となっているので標準のファイル名を採用することにした。これらのファイルはapache用に作成したものを流用するために以下のような Makefile を作成した。
certs::
cp /usr/local/etc/apache22/server.crt cert.pem
cp /usr/local/etc/apache22/server.key key.pem
cp /usr/local/etc/apache22/server-ca.crt ca.pem
openssl gendh -rand /dev/urandom 512 > dhparams.pem
chown ircd *.pem
chgrp ircd *.pem
chmod o-rwx key.pem
最後に daemontools 用 runスクリプト
#!/bin/sh
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/sbin:/usr/sbin
export PATH
config="/usr/local/etc/inspircd/inspircd.conf"
pidfile="/var/run/inspircd/inspircd.pid"
inspircd_user="ircd"
inspircd_group="ircd"
logfile="/var/log/inspircd/ircd.log"
command=inspircd
piddir=$(dirname ${pidfile})
if [ ! -d ${piddir} ]; then
mkdir -m 755 -p ${piddir}
fi
chown -R ${inspircd_user}:${inspircd_group} ${piddir}
logdir=$(dirname ${logfile})
if [ ! -d ${logdir} ]; then
mkdir -m 755 -p ${logdir}
fi
chown -R ${inspircd_user}:${inspircd_group} ${logdir}
exec 2>&1
exec softlimit -c 0 \
setuidgid ${inspircd_user} \
envdir ./env \
$command --nofork --logfile ${logfile} --config ${config}
(7/29 追記) openssl だと /sslinfo コマンドで接続ユーザの証明書情報が取れないようだ。後でgnutlsにして試してみる。 July 25 DDRII RamDiskACARD ANS-9010 噂では8月~10月発売ということらしい。スロット数は8なので、現在ビット単価の安い2GBメモリモジュールを使った場合は 16GB になる。 データベース屋の立場で言えば、tempdb 置き場にしたい! トランザクションログも置きたい!! かつてiRAMが欲しくて結局買わなかったけど、DDRIIのメモリ単価を考えても今回はかなり有望だと思う。 あとCFカードへのバックアップ機能も素敵だ。このことを考えても16GBでの運用はとても現実的。
mod_auth_kerb で Basic認証を有効にする (Active Directory を使ったシングルサインオン)mod_auth_kerb の KrbVerifyKDC を on にできた を読んだところ、KrbVerifyKDC off を書いたら今まで Basic 認証が通らなかったところが通るようになった。IEを利用した統合認証だったら KrbVerifyKDC on のままでも問題なく動いている。 使っているバージョンは mod_auth_kerb 5.3 なのだがやはり off にするとBasic認証で通らない。ちなみに KrbVerifyKDC on の状態で ActiveDirectory ドメインコントローラのイベントログ(セキュリティ)を確認すると、1回失敗した後に2回目に成功しているログが確認できる。 Apache/認証にActiveDirectoryを使う方法 でも KrbVerifyKDC off するように書いてあるな。 ちなみに /etc/krb5.conf については、以下のように tcp を指定しないとudpで流しきれないデータ量になった時に通信できなくなってはまる現象が以前あった。(最新の環境だと改善している可能性はある) [realms] そういえばと確認したら1月に投げていた ports/119794: patch for www/mod_auth_kerb to fix on FreeBSD 7.0 は採用されてた。ちょっと嬉しい。 (追記)統合認証は由緒正しいKerberos認証なので、
一方Basic認証の場合、ブラウザ側がTGTを持っているわけではないので
かと思ったが、「更にサービスチケットの発行を依頼してサービスチケットを検証すれぼOK」か。 で、1回 /etc/krb5.keytab を apache の実行ユーザが読めるように変更したら、アクセスできるようになってよしよしと思ってたら、元にもどして root でのみ読み書きできるようにしてもやっぱり KrbVerifyKDC on でBasic認証が通るようになってしまった。何が起きているんだ? July 24 DNS サーバ製品におけるキャッシュポイズニングの脆弱性に関する注意喚起DNS サーバ製品におけるキャッシュポイズニングの脆弱性に関する注意喚起 当初予定より早く攻撃ツールが登場したためDNSについての事態はかなり緊迫している。昔から djbdns をキャッシュサーバに利用しているので、FreeBSD 経由になっている環境については影響はないのだが、たとえば自分の自宅は Yamaha RT57i のキャッシュサーバ利用して外界に出ていたりしてもろに影響がある。 そのYAMAHAは RTシリーズのDNS機能におけるキャッシュポイズニングの脆弱性について というドキュメントを出しているが、24日現在「ファームウェア 順次リリース待ち」状態。 ただ、ファームウェアを更新後、ip filter 53 pass * 上位DNSサーバー udp 10000-19999 53 といったルールを書くとsrcポートが変化するようになる、ということは、フィルターのところで nat descriptor のような動作をさせようとしているようだ。 というか、現時点でもDNSの外部への問い合わせを masquarade 経由にできればある程度解決するような気もする。それでもWindowsマシン上にDNSキャッシュサーバを立てるのが現実的か。 それにしても、インターネット黎明期から今に至るまで基盤を支え続けた奇跡のプロトコルも、いいかげん進化を迫られているようだ。分かってはいたから現実に運用されないDNSSECが実装されていたわけだけど。 メール配信も含めて、安全・安心・有料 っていう展開はあるのかしら。(少なくとも安全はタダではない、適切な負担はあるべき、と思うようになった。むやみに高かったらそれは問題だけど。) IPv6 界にそういう技術の蓄積があったら、アドレス枯渇だけではないもう一つの移行圧力として使われる可能性はなきにしもあらず。 Twice NAT 機能Yamaha RT Twice NAT機能 ソースアドレス と デスティネーションアドレスの両方を書き換えられるNAT 昔はLinuxBOXの stone とかで中継させていたのだが、ルータでもできるようになってた。Cisco でもできる模様。 とりあえず単語だけ覚えとけばいざというときに使える。 July 18 Windows XP x64 の IISWindows XP x64 の中身は、Windows Server 2003 とほぼ同じなので IIS もバージョン6 なのだが、Webサイトを1つしか作れないという制限がある。 Visual Studio から既定で起動される ASP.NET 開発サーバー だと32bit動作になってしまうので、64bit状態で確認するには IIS を経由させないといけないのだが、複数のWebサイトを作成できないと不便。でもしょうがない。 そんなわけで開発マシンを Windows Server 2008 にしたいと思っているところ。 SQL Server 2008 FILESTREAM 機能いわゆるBLOBの格納先を、ファイルにしてしまうという機能。 できること
できないこと
SQL Express + FILESTREAM + レプリケーション という構成で Windows Server 2008 Web Edition に搭載するのはものすごく魅力的。 SQL Express 2008 x64 があるので64bit OS で動作が高速になることも期待できる。1GB メモリ制限により SQL Express 内でのキャッシュ量が少なくなるが、これは ASP.NET 側のキャッシュでがんばって実装する方がパフォーマンスが出るだろう。 フレッツ・ドットネット サービスに関する大切なお知らせ5月に強制解約事件のあった フレッツ・ドットネット だが、今度はNTT東日本から佐川急便の「受取確認のある」配達で、解約しても映像サービス見れるよ、というお知らせの紙1枚が届いた。 そんなにまでして解約させたいのか? 元々安すぎるとは思ってるけどね… NTT西日本と通信できるようになったことと NGN のことを考えると、高い値段体系で別のサービスに切り替えようとしているのではないかと邪推。日本全国に向かって安定した通信を保証してくれるんだったら、こちらはVPN基盤として使っているわけである程度の価格アップは許容できる。 July 17 Windows Server 2008のターミナルサービス経由でのOffice2007利用についてWindows Server 2008のターミナルサービス経由でのOffice2007利用について ターミナルサービスで Office 2007 を利用するためには、ライセンスとして Volume License を利用する必要がある。MSDN の場合 Office 2007 Suites に対して提供されているライセンスキーが Volume License 扱いのためこれを利用する。 Office 2007 Enterprise で提供されているキーはリテールキーなので利用できない。Enterprise と名乗っているのにかなりわかりにくい。 もっと困っているのが、認定パートナー向けに提供されているキーがターミナルサービスで利用できていない。認定パートナーのライセンスキー表示の画面では「ボリュームライセンス」と言っているのだが…ただし製品ごとに Volume License と表示されていたりされていなかったりする。Office 2007 については表示されていない。提供されているEdition が Office 2007 Enterprise だし。 この件は問い合わせ中。 svk による作業用ブランチに、逆マージが反映されないsvk は Subversion 1.5 以前から利用しているもの。そういう意味ではsvk内に含まれるSubversionライブラリは 1.4 のものという状況。 TortoiseSVN 1.5 で逆マージを行ってリビジョン a から a+3 の作業内容を元に戻す作業をした後、コミットを行った。(このコミットのリビジョンを b とする) svk smerge -m - -st [作業用ブランチ] をすると、元に戻す作業をしたリビジョン b が反映されない現象が発生。 それどころか更に svk push --verbatim [作業用ブランチ] を行って、リビジョン aからa+3 の内容が再び本体リポジトリにコミットされる、すなわちリビジョン c から c+3 として新たに複数のコミットが発生してしまった。 原因は特定していないが、Subversion 1.5 のマージ機構との不整合が想像される。 現在のところ Subversion1.5をベースにした svk バイナリはない? Subversion 1.5 系マージを運用するためには、1.4 以前のクライアントからのコミットを禁止しないと駄目な気分がますます高まってきた。8月の盆休みあたりで適用する方向で調整するかな。 July 16 Virtual Server 2005 R2 SP1 Update 上のマシン上で IPv6 を運用する以前から IPv6 が不安定で、仮想マシンからルータに向かってたまにping6を打つなどの対処をしていたのだが、ネットワークインターフェースを promiscuous mode にしてパケットを何でも受け取るようにするのがいいんじゃないかと設定変更してみた。 次の画面は VMRC plus 1.8 での設定画面。 promiscuous mode でないと IPv6 Neighbor Discovery が届かないんじゃないかと想像している。 もちろん副作用として余分なパケットを受け取る可能性があるわけだが、少なくとも仮想マシンを1~2台起動するような環境なら大した影響はないだろう。通信できなくなる方が重大だ。 |
|
|