UNIX系のトピックス ー解決に手こずったものの情報集ー

Valid CSS! Valid XHTML 1.0 Transitional 木谷 公哉(KITANI Kimiya)

2007.6.12の修正パッチを適応するとSSL接続なSMTP認証が失敗する。(Outlook Express: 2007.6.21)
MS07-034が原因の可能性大。587/tcpに対するSSL接続が、over SSL→STARTTLSとなったことに起因する。 postfix側の設定では、smtpd_tls_wrappermode=noに変更することで、STARTTLSへ変更すればよい。だが、MS07-034を適応していないユーザ向けの対応を考えるなら、465/tcpでsmtpd_tls_wrappermode=yesをしておけばいいだろう。また、その他のメールソフトはすべて、SSL→TLS(STARTTLS)に変更しなければならない。
WPAD(Web Proxy Auto-Discovery Protocol)をApache上で有効にするサーバ上の設定
(未解決)
Internet Explorer, Firefoxともに、プロキシの自動検出機能があります。が、それぞれ挙動がことなるため注意が必要です。
結局、MacintoshなどやOSによって挙動が異なる点がやっかい。特にネットワーク内と外で使い分ける場合が難しい。URLによる指定の場合には、ネットワーク外からのアクセスを禁止することで、DIRECT指定させるという技も使えるようだが・・・。もう少しいろいろ見てみないと・・・。
Internet Explorer
 参照データ:
   DNS:  http://wpad.[YOUR DOMAIN]/wpad.da
         http://wpad.[YOUR DOMAIN]/wpad.dat
   DHCP: http://wpad.[YOUR DOMAIN]/proxy.pa
         http://wpad.[YOUR DOMAIN]/proxy.pac

 Winクライアント君は、URL末尾を切り落とすバグがあるため。

 情報元:http://taizooo.g.hatena.ne.jp/keyword/WPAD

Firefox
 参照データ:
   DNS:  http://wpad/wpad.dat

 情報元:http://memo.blogdns.net/webproxy.html



DNS登録
  CNAME, AレコードいずれもOK。wpad専用サーバなどもあんまり
考えられないので、CNAMEが一般的なのかなぁ。

wpad

というホスト名を登録する

DHCPDでの設定
authoritative;
option wpad code 252 = string;
option wpad "http://wpad.[YOUR DOMAIN]/proxy.pac"; 
Apacheでの設定(設定は適宜読み替えること)
※細かいセキュリティ設定等は省きます
  <VirtualHost サーバIPアドレス:80>
   ServerName wpad
   AddType application/x-ns-proxy-autoconfig .pac .dat .pa .da
   DocumentRoot /hogehoge

    <Directory>
      Options FollowSymLinks
      AllowOverride None

      # Option
      Order allow,deny
      Allow from 利用を制限する場合
      Deny from all
    </Directory>

  <VirtualHost>
※Firefoxのために、ServerNameはホスト名にすること。 Internet ExplorerはFQDNでも認識するが、Firefoxはホスト名にしないと駄目。 ここが結構はまるところ。
※ # Optionは利用制限しないのであれば必要なし。
※ Optionsは、シンボリックリンクを使うので、

wpad.dat
ApacheのDocumentRoot直下にテキストファイルとして作成しましょう。
そして
 ln -s wpad.dat wpad.da
 ln -s wpad.dat proxy.pac
 ln -s proxy.pac proxy.pa
として、ソースはすべてwpad.datとしておくと便利です。

設定例情報:Navigator Proxy Auto-Config File Format

仮に
 プロキシサーバ:192.168.1.10
 ポート:8080
 プロキシURL:proxy.example.com 
  ネットワーク:192.168.1.0/24
だとする。  

例1)いかなるケースでもプロキシを使う。
function FindProxyForURL(url, host)
{
     return "PROXY proxy.example.com:8080";
}

※ return "PROXY proxy.example.com:8080; Direct";
   にすると、プロキシへアクセスできなければ、プロキシ使わない設定に
  切り替わる。
※ socksあるのだったら、
   return "PROXY proxy.example.com:8080; SOCKS socksのFQDN:PORT;";
※ FQDNの代わりにIPアドレスでもよい。

例2)サーバと同一ドメインだけプロキシを経由しない
function FindProxyForURL(url, host)
{
    if (isPlainHostName(host) ||
        dnsDomainIs(host, ".example.com"))
        return "DIRECT";
    else
        return "PROXY proxy.example.com:8080;";
}

例3)特定ネットワークだけプロキシを経由しない
function FindProxyForURL(url,host)
{
  if(isPlainHostName(host)||
     isInNet(host,"192.168.1.0","255.255.255.0")) 
	return "DIRECT";
  else return "PROXY proxy.example.com:8080;";
}

例4)特定管理端末のみプロキシを使わない設定にしたい
function FindProxyForURL(url,host)
{
  if(isInNet(myIpAddress(), "192.168.1.22")
	return "DIRECT";
  else return "PROXY proxy.example.com:8080;";

}
No.7 openssh 4.x系のSolaris8 (Sparc)におけるコンパイルエラーについて
makeすると
sshd: Cannot find ELF 
でとまる問題は、GNUのstripを使っていることが原因。解決策は 「which strip」のstripが/usr/ccs/bin/stripであること。
1. おそらく/usr/local/bin/stripにあるファイルをリネームして
  ln -s /usr/ccs/bin/strip /usr/local/bin/strip

2. PATH変数で/usr/ccs/binを/usr/local/binの前に書く
No.6 openssl 0.9.7mをSolaris8 (Sparc)でコンパイルするとエラーがでる(2007.3.1)
./Configure -shared solaris-sparcv9-gcc
を行った場合、0.9.7l以前は、-mcpu=ultrasparcというオプションがついていたが、0.9.7mからは-march=ultrasparcに変更された模様。
Configureファイルのsolaris-sparcv8-gccの部分の-marchを-mcpuに変更する
とすればmakeできた。
gcc3.3.2でのこと。なおgccでのCPUに関する最適化オプションについては、
http://www.fan.gr.jp/~ring/doc/gcc_i386_option.html
を参照すれば分かりやすい
No.5 MacOS 10.4でファイヤウォール(ipfw)のログが記載されない(2007.2.28)
システム環境設定の「共有」から、ファイアウォール→「詳細」を見ると、「ファイアウォールのログを記載」というチェックボックスがある。しかしながら、なんとそこにチェックを入れるだけではログが記載されない。実はコマンドラインで
sysctl -w net.inet.ip.fw.verbose_limit=10000
のようなことをせねばならない。とりあえず1ルールについて1万行のログを記載するという意味だそうだ。なお、この「ファイアウォールのログを記載」のチェックは、コマンドラインからでも可能。
sysctl -w net.inet.ip.fw.verbose=1
でも私のノートでは、「2」、Mac miniでは「1」という値が入っている。この値の意味はわからず。
No.4: syslogdがkill -HUPで無応答になる (MacOS 10.4.8) (2007.2.28)
kill, kill -9したらlaunchctlでのデーモン起動のせいか、しぶとくsyslogdは再起動します。そこらあたりも問題かとも思ったが、手持ちのMac君ではサーバ用途につかっているMac Mini君だけに起こる現象のようだ。syslogd -u -m 0 として動作させているのが問題か? まぁ外部ログサーバとして使っているので、必要なオプションなのだが、とりあえず毎日無応答になるのは /etc/daily, /etc/weekly, /etc/monthlyで実施される下記の行が原因。
if [ -f /var/run/syslog.pid ]; then kill -HUP \
	$(cat /var/run/syslog.pid | head -1); 
fi
そのため、暫定処置としては この-HUPを取り去ると良い。
No.3: Finkでetherealをインストールしても動作しない (MacOS 10.4.8)
http://www.hayagui.com/m_fink104.htmlに書かれている通り、
fc-cache
を実行しないといけない見たいです。フォント情報ファイルを作成するX11のコマンドということです。
No.2: MacOS 10.4 (Tiger)のlaunchdは起動パーティションしか認識しない。
起動パーティション以外のプログラムは自動起動しないようだ。
たとえばfinkなどを/Volumes/UNIX/swにインストールして、
ln -s /Volumes/UNIX/sw /sw
としておいてもデーモンとしては起動しない。手動では起動する。
No.1: SAMBA 3.0.23以降のUNIXグループの取り扱い
マイナーバージョンアップで大幅にやり方変更するな!とまず言いたい。セキュリティアップデートのつもりでアップデートしたらvalid usersなどで利用していたUNIX Group (@staff)とかが使えなくなっている。これはひどい。修正パッチなども個別に出ているし、次のバージョンでは修正されているかもしれないが、これを機会にnet groupmapを使ってUNXIグループをマッピングしてみようと思った。そのやり方について纏めておく。
2009.02.23に刷新。3.2.8の時点で執筆。
カテゴリー内容
Date2006.08.23
2006.09.05UP
2009.02.20UP
OSSolaris 8 on SPARC
SystemSAMBA 3.0.23c以降
リリースノートによると smbpasswdを使っている場合、マッピングされてないユーザがグループに対してRIDアルゴリズムを適応しないことにしたらしい。具体的にはマッピングされていないUNIX usersをS-1-22-1ドメインへ、groupsをS-1-22-2に割り当てるということ。あらかじめsmbpasswdでパスワードに登録したものについては、マシン独自ドメインであるS-1-5-XX-XX-XXに割り当てるってことらしい。まっとはいえ、下記の問題点で解決したようは方策が推奨されてますけどね。やっぱり文句が沢山出たんでしょうねぇ。
問題点 valid users等でUNIXグループが使えなくなっている。Windows側のSIDを使わねばならず、これをnet groupmapコマンドでUNIXグループへマッピングしてやる必要がある。なおWinXPで起きていた現象だが、ただしくマッピングしてないとファイルへの書き込み時にblue screenでてしまう例があった。
準備 あなたのマシンの固有SIDを調べる。
net getlocalsid
コマンドでる。これがS-1-2-40だと仮定する。
登録・削除方法
[登録]
net groupmap add "S-1-2-40-(UNIX-GID)" unixgroup=UNIXグループ名
[削除]
net groupmap delete "S-1-2-40-(UNIX-GID)"
net groupmapコマンドによるマッピング情報表示
# net groupmap list verbose
 Adiministrators
        SID       : S-1-2-40-300
        Unix gid  : -1
        Unix group: ?????
        Group type: ?????
        Comment   : ?????

Power Users
        SID       : S-1-2-40-440
        Unix gid  : -1
        Unix group: ?????
        Group type: ?????
        Comment   : ?????
仮にこんなのがずらずらと出たとしよう。Windowsのユーザグループ別に並ぶはずだ。UNIX gidが-1ということは正しくマッピングされていない証拠である。ここで重要なのはSIDだ。S-1-2-40がユニークIDであり、300がUNIXグループのGIDである。このユニークIDは特殊な環境と特殊なもの以外は同一であることに注目してほしい。
分析すると、S-UNIQUEID-UNIX_GROUP_GIDだということが分かる。ならば S-UNIQUEID-UNIX_GROUP_GID = UNIX_GROUP_NAMEにマッピングすればよいことになる。 さて、かりに/etc/groupに
admin::300:user1,user2,user3 と書かれているとしよう。これをSAMBAデータベースに登録するには
# net groupmap add sid="S-1-2-40-300" unixgroup=admin
とすればよい。まとめたいのだったら、
# cat /etc/group | awk -F: '{printf "net groupmap add sid=@S-1-4-40-%s@ \
	unixgroup=%s\n",$3,$1}' > /tmp/aaa

/tmp/aaaでsambaに登録が不必要なやつを消して、これを実行すればいい。

# sh /tmp/aaa
そして確認として
# net groupmap list verbose
...
...
admin
        SID       : S-1-4-40-300
        Unix gid  : 300
        Unix group: admin
        Group type: Domain Group
        Comment   : Domain Unix group
とかいうように登録されているはず。ここで重要なのはGroup type。これを覚えておこう。あとで設定に使うため。
SAMBAへの設定方法 さてデータベースに登録できたら、後はsmb.confの設定変更となる。かりにいままで
[Web]
        path = /XXX/YYY/ZZZ
        valid users = @webmasters, @admin
        write list = @webmasters, @admin
        create mask = 0664
        directory mask = 0771
        force group = webmasters
        read only = Yes
        browseable = Yes
        comment= "Web Page"
	
とかにしていたならば、
[Web]
        path = /XXX/YYY/ZZZ
        valid users = @"Domain Group\webmasters", @"Domain Group\admin"
        write list = @"Domain Group\webmasters", @"Domain Group\admin"
        create mask = 0664
        directory mask = 0771
        force group = webmasters
        read only = Yes
        browseable = Yes
        comment= "Web Page"
	
というように@webmasters, @adminのところをGroup typeを加えて上記のように変更せねばならないのだ。
情報源 samba.gr.jpの日本語訳 http://www.samba.gr.jp/project/translation/current/htmldocs/groupmapping.html
SAMBA Release notes: http://www.samba.org/samba/history/samba-3.0.23.html
Samba-jp-ML:18777 (上記リリースノートの日本語訳) http://cgi.samba.gr.jp/pipermail/samba-jp/2006-July/000039.html
私のmixiの日記情報 http://mixi.jp/view_diary.pl?id=203930999&owner_id=2236459
No.2: SAMBA 3.0.23から発生する書き込み時のブルースクリーン
3.0.22以下では問題発生しません。現在3.0.23,3.0.23a,3.0.23bで問題を確認しています。特定ユーザでいくつかの端末(新規PC1台、既存PC1台をリカバリー)で再現。
No.3: SAMBAでいつの頃からかマスタブラウザとして選定されなくなった
smb.confでos level = 65としているにもかかわらず、マスタブラウザに選定されることがなくなってしまいました。同時に「ブラウズリスト上でSambaサーバが確認できるが、アクセスするとリソースが見つからない」という問題と「SWATで「動作状況」からnmbdの動作状況を確認すると、常に「停止中」にみえる」という問題も発生していました。これは「Samba 2.0.10日本語版リリース1.0で起こっていた問題」に似ているような気もします。
一応解決したように見えます。
カテゴリー内容
Date2006.09.05
OSSolaris 8 on SPARC
SystemSAMBA 3.0.23-23cまで
問題点 はっきりいって仕事になりません。えーと、ネットワークドライブごしにファイルへの書き込みやファイルの名を変更したりすると「必ず」ブルースクリーンがでます。ただし、ユーザによって出たりでなかったりするのが玉に傷であり、この問題をより一層分からなくするものだと思っています。現状では3.0.22に戻すしかないような感じですね。oplockなどの設定をオンオフ、その他パラメータをいじってみるも変わらず。

カテゴリー内容
Date2006.09.05
OSSolaris 8 on SPARC
SystemSAMBA 3.0.22
解決方法 os levelを65から少し引き下げます。私は40にしてみました。これでブラウザマスターとして選定されるようになり、同時に上記問題すべてが解決しました。ということは、ブラウザマスタとして選定されて、$SAMBA_DIR/var/locks/browse.datが更新されないかぎり、SWATの動作を正しく確認できないってことでしょうかね。