<   2010年 09月 ( 38 )   > この月の画像一覧
グループポリシーのプロキシの設定が効かない件

ActiveDirectory グループポリシーの InternetExplorer のメンテナンスにてプロキシの設定をしたんですが、このプロキシの設定がクライアントPCの方に効かないという現象が発生しました。(クライアントPCは XP SP2,SP3です)
現象が発生したのはクライアントPCの IE を IE6 から IE8 にバージョンアップした時からで、IE8の端末のみ発生しています。

とりえあずいろいろ調査をしてみました。
とりあえず最初試したのはポリシーの適用タイミングかと思ったので、@IT:ポリシー適用のタイミングについてを参考に、[コンピュータの構成]→[管理用テンプレート]→[システム]→[グループポリシー] の [Internet Explorerのメンテナンスポリシーの処理] を有効にして、
[グループポリシーオブジェクトが変更されていなくても処理する]にチェックを入れましたが、結果はNGでした。

([Internet Explorerのメンテナンスポリシーの処理]には優先モードがあって、このモードだとポリシーが上書きされないこともあるようです。Windows 2000/XP/2003 Internet Explorer メンテナンスポリシーが適用されないを参考。)

あと、回線が低速リンクとみなされてグループポリシーの一部が適用できないという例があるみたいなので、そこも調査。。。
LAN環境なのにログオン時に低速回線で接続していると判断されるを見ると、上記の [Internet Explorerのメンテナンスポリシーの処理] で [低速回線接続からの処理を許可する] にチェック入れてみました。
しかし、これでも結果はNGでした。

(低速リンクやルータをまたぐグループポリシー適用についてはシステム管理者の備忘録: VPN、ルータ越えでADのGPOを適応する方法も参照。)


また、プロキシの例外リストには文字数の制限もあるようです。(MSサポート:グループ ポリシー オブジェクト エディタでプロキシ例外リストにエントリを追加するとリストが切り詰められて表示されることがあるを参考)
Windows XP や 2003 のSP無だと、最大255文字([ローカル (イントラネット) のアドレスにはプロキシ サーバーを使用しない] チェック ボックスをオンにした場合、実際の最大文字数は 247)になるようです。
XP SP2,2003 SP2 を当てると、プロキシ例外リストの最大文字数は、1,024 になるようです。

ただ、IE7以降は、最大文字数は 2064 となるようです。
(Microsoft Internet Explorer 7: Beta 2 リリース ノートTechNet:プロキシの設定を構成するを参考。)
しかし、この文字数に関してもクライアントOSは XP SP2 以上であり、文字数も500文字程度なので、問題ありません。


最終的にいろいろ調査をした結果、プロキシの例外リスト設定の書式によって IE8 のクライアントにプロキシの設定が効いたり、効かなかったりすることが判明しました。

具体的に、例外リストを下記のように、IP,ホスト名Onlyで指定したときは設定が効きます。
192.168.0.*;exsample.com;

しかし、例外リストを下記のように、プロトコル指定にすると、設定が効きません。
http://192.168.0.100/;https://exsample.com/;

IE7でも同様です。

ただ、TechNet:プロキシの設定を構成する見る限りは、IE8 でもプロトコル指定できるようなニュアンスで書いてるんですが、米国マイクロソフト社の開発サポート エンジニア Akshay N S のブログ投稿によると、「グループ ポリシーで IE のプロキシ例外リストを構成する際の注意事項」の二つ目に「ウェブサイト名と共に http:// を使用してはいけません」 とあるようです。

これはIE7について言及しているので、やはりIE7から例外リストでのプロトコル指定はサポートされなくなったようですね。

まぁとりあえず原因と対応方法が分かったのでよかったです。

補足:
プロキシ例外リストでポート指定(exsample.com:443)をしても、その設定は無視されてしまいました。
ポート指定もしない方がよさそうです。
[PR]
by jehoshaphat | 2010-09-29 07:19 | サーバがらみ | Trackback | Comments(0)
ドメイン環境で、ドメインコントローラとの時刻同期に失敗する
Windows ドメイン環境で、クライアントPCの時刻がずれていたので、コマンドから強制的に同期を試みました。
すると下記のようにエラーとなります。

C:\Documents and Settings\Administrator>w32tm /resync
再同期のコマンドを送信: local computer...
時刻データが利用できなかったため、コンピュータは同期をとり直しませんでした。


で、ActiveDirectory環境で時間の同期失敗に解決策が載ってました。
Windows Time サービスの設定をし直してやればいいようです。

>w32tm /config /syncfromflags:DOMHIER
>net stop w32time
>net start w32time
>w32tm /resync

ただ、普通はドメインメンバなら自動的にこの設定になってると思うんですが。。。


補足:
即時に時刻同期するには、/nowait オプションを加えます。
Windows端末で時刻同期を即時に行う参考。
[PR]
by jehoshaphat | 2010-09-28 01:19 | サーバがらみ | Trackback | Comments(0)
(Windows)共有フォルダへのアクセスのための資格情報を保存させない
Windowsで共有フォルダアクセス時にログイン中のアカウントでは入れない共有フォルダだと、認証ダイアログが表示され、認証情報(ユーザ名、パスワード)を保存できるようにするチェックボックスもあります。

ただ、運用によっては認証情報を保存させたくない場合があります。(例えば他人数共有するアカウトでWindowsにログインし、自身だけアクセス権を持っている共有フォルダにアクセスするときなど)

で、認証方法を保存させない方法ですが、グループポリシーもしくはローカルセキュリティポリシーで設定できます。

グループポリシーだと下記の設定を 有効 に変更します。

コンピュータの構成 → Windowsの設定 → セキュリティの設定 → ローカルポリシー → セキュリティオプション → Windowsで共有フォルダのpasswdを覚えさせないようにするには、セキュリティオプション → ネットワークアクセス:ネットワーク認証のために資格情報または.NETPassportを保存することを許可しない
(Windows Server 2008 だと、ネットワーク アクセス: ネットワーク認証のためにパスワードおよび資格情報を保存することを許可しない という設定名になってます。)

これで再起動をかけると、認証ダイアログに認証情報を保存するチェックボックスが削除され、過去に保存していた認証情報もクリアされます。

参考:
XP Proでパスワードを記憶するを表示させない方法 - Windows系OS - 教えて!goo
ネットワーク アクセス : ネットワーク認証のために資格情報または .NET Passport を保存することを許可しない
[PR]
by jehoshaphat | 2010-09-25 03:21 | 豆知識 | Trackback | Comments(0)
(Excel)配列数式を使ってみた
A列(A2:A10)に下記のような数値が並んでるとします。
14450
578
145
145

14450
10838
0
7225

ここの中で、最小値かつ0以上の値を求めたいとした場合(145の値)、MIN関数だけではできません。(0となってしまう)

このような時に配列数式というものを使うと値を求めることができるようです。
(配列数式とは、配列と呼ばれる複数の値またはセル参照に1つの数式を当てはめて、1つまたは複数の結果を求める計算式のことだそうです。)

上記のような条件付き(0より大)の最小値を求めるときはまず結果を表示するセルに下記の数式を入力します。

=MIN(IF(A2:A10>0,A2:A10,""))

そして、重要なのが Ctrl + Shift + Enter として数式を確定することです。
配列数式とすると、下記のように数式が { } で囲まれます。

{=MIN(IF(A2:A10>0,A2:A10,""))}


上記の式だと、A2:A10の間で、0より大きい値は基のセルの値を配列に持ち、0以下のセルは空白として配列に持ち、その配列に対して MIN 関数を使って最小値を求めるという意味になるようです。


恥ずかしながら三流PGは今までExcelの配列数式を使ったことがありませんでしたが、これはかなり使えますね。

(OpenOffice Calcでも配列数式はサポートされているので同じように使えます。)

参考:
配列数式
日経PC21 / 初めての「配列数式」① 1行おきの実績値を一気に合計
Excel(エクセル)関数の技:条件付きで最大値、最小値を求める
[PR]
by jehoshaphat | 2010-09-25 03:19 | 豆知識 | Trackback | Comments(0)
(.Net)数値型を書式指定子を使って3桁区切りで出力する
今まで int.ToString("###,###,###,##0#) 的な出力をしてたんですが、標準数値書式指定文字列を使うともっと楽にできるようです。
一応標準数値書式指定文字列の "N" を使うと3桁区切りで出ることは知ってたんですが、小数点以下2桁まで出力されるのが問題でした。

この標準数値書式指定文字列ですが、書式指定子の後に、数値を入れることで小数点の桁数を制御できるようです。
なので、整数3桁区切りで出したいときは下記のようすればいいようですね。

int i = 1234567890;
string s = i.ToString("N0");
//1,234,567,890として出力


参考:
.NET Framework - 書式指定文字列
MSDN:標準の数値書式指定文字列
[PR]
by jehoshaphat | 2010-09-25 03:15 | .Net開発 | Trackback | Comments(0)
MetaFrameって今はXenAppって呼んでるんだ
アプリケーション仮想化で有名な Citrix の MetaFrame ですが、今は XenApp って呼ばれてることを初めて知りました。
会社のサーバにも Citrix Presentation Server ってのが入ってて、業務アプリを動かしてはいるんですが、これは MetaFrame のバージョンアップ版で、XenApp よりかは古いバージョンのようです。
(そのサーバは管轄外なんであまり Citrix に関しては関与できてませんでした)


MetaFrameからXenAppへ、Citrixプロダクト名の移り変わり | エンタープライズ | マイコミジャーナルを見るとMetaFrameが WinView → WinFrame → MetaFrame → MetaFrame XP → MetaFrame Presentation Server → Citrix Presentation Server → XenApp とプロダクト名を変えてきたことが分かります。

大幅に製品名変更されると混乱するのでやめてほしいですね。

そういえば旧Sunも結構はちゃめちゃな製品名やバージョンが多かったと思います。
Sun ONE WebServer6 が Sun Java WebServer7 になったり、Java自体も J2SE 1.4 から J2SE 5.0 、そして Java SE 6になったりしてますよね。


しかし、Citrix のアプリケーション仮想化技術は結構すごいです。本当にサーバ上のアプリケーションが自身のPC上で動いているように見えますからね。。
WinodwsServer2008から搭載された RemoteApp でもようやくアプリケーション仮想化ができましたが、十数年以上前から実装してるCitrixはやはりすごいです。

たしか、ターミナルサービス自体もCitrixとマイクロソフトが共同で作ったんですよね。
[PR]
by jehoshaphat | 2010-09-25 03:14 | 豆知識 | Trackback | Comments(0)
Hyper-V上でドメインコントローラ作るときは時刻同期に注意!
複数ドメインコントローラが有る環境で、PDCエミュレータ機能を有するドメインコントローラにこの設定をしたんですが、他のドメインコントローラがPDCドメコンのNTPに同期してくれません。(PDCエミュレータのドメインコントローラは、ドメインコントローラを外部のNTPサーバと時刻同期で外部NTPサーバに同期するよう設定し、正常に動いています。)

ちなみにPDCエミュレータのドメインコントローラは実サーバ、その他のドメインコントローラは Hyper-V の仮想マシンとして構築しています。

PDCエミュレータに時刻同期できないFSMO以外のドメインコントローラのイベントビューアをみると、下記のエラーと警告が延々とでてます。

タイム プロバイダ NtpClient は到達できないか、現在 pdcDC.hogedomain.local (ntp.d|192.168.0.111:123->192.168.0.100:123) から有効な時間データを受信中です
 ↓
タイム プロバイダ NtpClient: ドメイン コントローラ pdcDC.hogedomain.local へのアクセスを 8 回試行し ましたが、有効な応答が得られませんでした。このドメイン コントローラは、タイム ソースとしては破棄され、NtpClient は同期先となる新しいドメイン コントローラの 発見を開始します。
 ↓
1 つまたは複数のタイム ソースから時間を取得するようにタイム プロバイダ NtpClient は 構成されていますが、どのソースも現在アクセスすることはできません。 ソースへのアクセスの試行は、あと 15 分間実行されません。NtpClient が正しい時間を 参照できるソースがありません。


いろいろ調べたところ、ゲストOSのWindowsServer2003でw32timeエラーが多発に原因と解決策が載ってました。

それは Hyper-V の仮想インスタンス毎の設定にある、統合サービスの「時刻の同期」が有効になっていたためでした。
確かにこれを有効にしてると、ゲストOSはホストOSの時刻に合わせようとします。しかし、ドメインのメンバサーバたるホストOSは近いところにある(つまり今回の環境ではHyper-V上の)ドメインコントローラに時刻を合わせようとします。

これにより、時刻同期がうまくできなかったわけですね。

この統合サービスの時刻の同期チェックを外すと問題なくPDCに同期できるようになりました。


まぁ注意深く考えたらすぐに原因がひらめきそうなもんですが、結局原因わかるまで1日かかっちゃいました。
最近ボケ気味の3流PGです。
[PR]
by jehoshaphat | 2010-09-24 01:52 | 豆知識 | Trackback | Comments(0)
(.Net,OpenOffice).NetからCalcの行の挿入、削除を行う
(.NetからOpenOfficeを操作する方法は(.Net,OpenOffice).Net から OpenOffice ドキュメントを操作するを参照。OpenOfficeは3.2です。)

Calc操作時に、行を挿入、削除する方法です。


OpenOffice SDKのサンプルにやりたいことが書いていました。
サンプルは、OpenOffice.org_3.2_SDK\sdk\examples\CLI\CSharp\Spreadsheet\GeneralTableSample.cs の doFormattingSamples メソッドに書いてあります。

ほぼサンプルそのままですが、一応ソース載せておきます。(C#)

//下記の型インポート必要
using uno.util;
using unoidl.com.sun.star.frame;
using unoidl.com.sun.star.lang;
using unoidl.com.sun.star.sheet;
using unoidl.com.sun.star.table;
using unoidl.com.sun.star.uno;
using unoidl.com.sun.star.beans;
using unoidl.com.sun.star.util;
using unoidl.com.sun.star.container;
 
string filename = @"d:\a.ods";
 
//ファイルパスを変換
Uri uriCalcFile;
Uri.TryCreate(filename, UriKind.Absolute, out uriCalcFile);
filename = uriCalcFile.ToString();
//コンポーネントコンテキストオブジェクト取得
XComponentContext context = Bootstrap.bootstrap();
//サービスマネージャ取得
XMultiServiceFactory factory = (XMultiServiceFactory)context.getServiceManager();
//コンポーネントローダオブジェクト取得
XComponentLoader loader = (XComponentLoader)factory.createInstance("com.sun.star.frame.Desktop");
//ドキュメントオブジェクト取得
XSpreadsheetDocument doc = (XSpreadsheetDocument)loader.loadComponentFromURL(filename, "_blank", 0, null);
//シート取得
XSpreadsheets sheets = doc.getSheets();
XSpreadsheet xSheet = (XSpreadsheet)sheets.getByName("Sheet1").Value;
 
//行オブジェクト取得
XColumnRowRange xCRRange = (XColumnRowRange)sheet;
XTableRows xRows = xCRRange.getRows();
 
//行挿入(5行目から3行挿入する)
xRows.insertByIndex(5, 3);
 
 
//行削除(10行目から2行削除する)
xRows.removeByIndex(10, 2);

insertByIndex,removeByIndex の行インデックスは0から始まっていることに注意です。
[PR]
by jehoshaphat | 2010-09-23 03:16 | .Net開発 | Trackback | Comments(0)
(Solaris)TFTPによるファイル転送
現在フル稼働中の Solaris からパケットキャプチャしたログをPCに落としたいという要件です。
(Solarisでのパケットキャプチャの方法は、snoopによるパケットキャプチャを参照)

Solaris10のぞいてみたら TFTP が稼働してっるっぽいのでこいつでファイル転送することにしました。
(TFTPとはFTPに比べると軽量単純なプロトコルでユーザ認証が無く、UDPを使ってファイル転送するようです。)
UnixやLinuxの場合、inetdのサービスとして動いてることが多いようなので、/etc/inetd.conf でTFTPが動いてか確認しました。
/etc/inetd.conf をのぞいたたところ、下記のようになってました。

tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot

公開するディレクトリは /tftpboot のようですね。


ということで、/tftpboot にログファイルをおきます。

後は、クライアントPC上のWindowsから tftp コマンドを使ってダウンロードします。

D:\>tftp 192.168.0.100 get snoop.txt snoop.txt
Transfer successful: 5282188 bytes in 13 seconds, 406322 bytes/s


TFTPはあまり使ったことないですが、シンプルなのでこういうときに便利ですね。

参考:
DHCP サーバーと TFTP サーバーの設定
[PR]
by jehoshaphat | 2010-09-23 03:10 | ネットワーク | Trackback | Comments(0)
(Solaris)snoopによるパケットキャプチャ
Solaris10(SunOS 5.10) 上で UDP のパケット解析をすることとなりました。

Solarisには snoop というコマンドでパケットが採れるようです。
ただ画面に描画しただけでは後からの解析がしずらいので、一旦ファイルに落としてから解析したいと思ってます。

まずパケットを取ってファイルに落とすには下記コマンドでできます。

bash-3.00# snoop -d nge0 -s 42 -o /Desktop/snoop.out udp
Using device /dev/nge0 (promiscuous mode)
4468 ^C (Ctrl+Cで終了)


snoopについては、snoop(1m)ネットワークパケットの取得および検査 (SunOS リファレンスマニュアル 1M : システム管理コマンド) - Sun Microsystemsを見てもらうとわかるんですが、上記の引数を簡単に解説しときます。
-d:パケット採取するNIC(インターフェイス)を指定(今回はnge0)
-s:パケットの指定したサイズより後ろを切り捨てる。通常は全パケットを取るので、ヘッダだけいる場合は、各プロトコルに応じた長さを指定すればいいようです。
今回はUDPパケットのヘッダだけ取りたかったので42としています。各プロトコルのに応じたヘッダのみ取得する場合は、IPのみ:34,UDP 42,TCP 53,RPC 80,NFS 120となります。
-o:ファイルに出力。
udp:UDPパケットのみ取得。この末尾部分がフィルタ指定となります。ここで、特定のIPや特定の方向等さまざまなフィルタがかけれます。


snoopで出力したファイルですが、バイナリ形式(RFC1761準拠らしい)で落ちます。
wiresharkで見れるらしいとのことだったんでが、自分の環境の場合見れませんでした。

この出力したログをsnoopを使ってみることはできるのですが、実用的では有りません。
よって、出力したログをsnoopを使って人が見やすいようにテキストファイルに落とします。下記コマンドでできます。

bash-3.00# snoop -i snoop.out -x 50 > snoop.txt

-i:これで出力したログを表示します。
-x:パケットデータを 16 進数および ASCII 形式で表示します。-xの後の数値はオフセットでパケットの一部を表示します。

上記のコマンドの場合下記のような形式のテキストファイルとして出力されます。

1 0.00000 192.168.0.5 -> HogeSRV UDP D=40368 S=51760 LEN=36
2 0.00387 192.168.0.8 -> HogeSRV UDP D=41173 S=46509 LEN=48
3 0.00470 192.168.0.99 -> HogeSRV UDP D=41819 S=63676 LEN=36
4 0.02001 HogeSRV -> 192.168.0.117 UDP D=35782 S=41985 LEN=1344


snoop で -V を付けると詳細要約モード、-v だと詳細表示モードみたいです。
-V とした場合下記のような表示形式となりました。(パケットの中身は0に置換してます。)

1 0.00000 192.168.0.16 -> HogeSRV UDP D=40368 S=51760 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
2 0.00048 192.168.0.18 -> HogeSRV UDP D=40600 S=32937 LEN=48
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
3 0.00061 192.168.0.19 -> HogeSRV UDP D=40159 S=57005 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
4 0.00188 192.168.0.13 -> HogeSRV UDP D=41484 S=57103 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
5 0.00005 192.168.0.5 -> HogeSRV UDP D=40009 S=43415 LEN=36
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 ....
6 0.00013 HogeSRV -> 192.168.0.17 UDP D=60261 S=41128 LEN=392
0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
16: 0000 0000 0000 0000 0000 0000 0000 0000 ................
32: 0000 0000 0000 0000 0000 0000 0000 0000 ................
48: 0000 0000 0000 0000 0000 0000 0000 0000 ................
64: 0000 0000 0000 0000 0000 0000 0000 0000 ................
80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
96: 0000 0000 0000 0000 0000 0000 0000 0000 ................
112: 0000 0000 0000 0000 0000 0000 0000 0000 ................
128: 0000 0000 0000 0000 0000 0000 0000 0000 ................
144: 0000 0000 0000 0000 0000 0000 0000 0000 ................
160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
176: 0000 0000 0000 0000 0000 0000 0000 0000 ................
192: 0000 0000 0000 0000 0000 0000 0000 0000 ................
208: 0000 0000 0000 0000 0000 0000 0000 0000 ................
224: 0000 0000 0000 0000 0000 0000 0000 0000 ................
240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
256: 0000 0000 0000 0000 0000 0000 0000 0000 ................
272: 0000 0000 0000 0000 0000 0000 0000 0000 ................
288: 0000 0000 0000 0000 0000 0000 0000 0000 ................
304: 0000 0000 0000 0000 0000 0000 0000 0000 ................
320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
336: 0000 0000 0000 0000 0000 0000 0000 0000 ................
352: 0000 0000 0000 0000 0000 0000 0000 0000 ................
368: 0000 0000 0000 0000 ........


参考:
iT-folder IT関連情報を配信
Solarisでいきましょか? -各種トレース機能
南アラバ公国: Solarisでのパケットキャプチャー
tcpdump でキャプチャしたファイルを WireShark で解析 | bluegold
ネットワークを調査する 50 の方法 : やっぱり Sun がスキ! Solarisでの各種ネットワークコマンドや調査方法が分かりやすく載っています。
[PR]
by jehoshaphat | 2010-09-21 23:59 | ネットワーク | Trackback | Comments(0)