Chapter 25. 詳細なネットワーク管理

John H. Terpstra

Samba Team

June 15 2005

Table of Contents

機能と利便性
リモートサーバー管理
リモートデスクトップ管理
NoMachine.Comによるリモート管理
ThinLincを使うリモート管理
ネットワークログオンスクリプトの魔法
ユーザーの干渉なしにプリンターを追加する
ログオン接続の制限

この章では、ネットワークリソースアクセス制御を改善するためと、ユーザー環境を自動化する ためと、使用時の作業をより簡単にすることをしたいと思っているネットワーク管理者のための とても重要な周辺機器についての問題を記述する。

機能と利便性

しばしば、作業中のネットワーク環境とより理解しているものの違いは、すべてをより協調させる 小分けの観点で最もよく測れる。すべてのネットワークソリューションの 重要な部分は、リモートからMicrosoft Windowsワークステーションを管理すること、リモートで Sambaサーバーにアクセスすること、より信頼出来るネットワーク操作の場面において手助けとなる 他の保守作業と同様の、カスタマイズしたログオンスクリプトを提供することである。

この章では、それらの各領域についての情報を提供する。それらはここにあり、他の章にはなく、 そのため、参照が容易である。

リモートサーバー管理

どのようにしてユーザーマネージャとサーバーマネージャを手に入れたらよいのか?

NT4 サーバーを購入する必要がないので、どのようにしてユーザー マネージャとサーバーマネージャを手に入れたらよいのか?

Microsoftは、Windows 9x/Meシステム上でインストールするための、 Nexus.exeと呼ばれるバージョンのツールを配布している。ツールセット には、以下が含まれている:

  • サーバーマネージャ

  • ドメイン用のユーザーマネージャ

  • イベントビューワ

Microsoftの Nexus から書庫ファイルをダウンロードする。

ドメインとサーバーマネージャ用の、Windows NT 4.0バージョン用の ユーザーマネージャは、Microsoftの via ftpにある。

リモートデスクトップ管理

自由に使えるものから、費用がかかるものまでの間で、数多くのリモートデスクトップ管理 ソリューションが存在する。黙ってみていてはいけない。最も費用がかかるソリューションは えてして最も効果的なものである。どの場合も、使用しているネットワーク環境で、どれが 最も良いツールかを、自分で結論づける必要がある。

NoMachine.Comによるリモート管理

以下の情報はSambaメーリングリストに、2003年4月3日 23:33:50(UTC+00:00)に投稿 されたものである。以下は若干修正(プライバシーの理由で投稿者の詳細を省略)して ある。完全な答えは、削除したいくつかのコメントを考慮して再構成してある。

PDCとしてネットワーク上で動いている、優れたなLinux/Sambaサーバーがある。 これに、ユーザーが外部からシステムにログイン出来るようにして、家や他の 国からデスクトップ状態を使えるようにする、リモートデスクトップ機能を 追加したい。

これを達成する方法はあるだろうか?Windowsターミナルサーバーが必要だろうか? それを設定する必要があり、それはドメインのメンバーか、BDCあるいはPDCになる のだろうか?コンピューターがドメイン中にいる場合でも、Microsoft Windows XPを リモートログインにするようなhackはあるだろうか?

提供された回答: NoMachineから 提供されている新しいNXソフトウェアを申し込む。

これは、VNC/RFBとrdesktop/RDBをその中に取り込んでいる、簡単に使える、 リモートXプロトコルを実装しているが、今まで使ったことがあるかもしれない 他のものよりもパフォーマンスがよい。

リモートXは別に新しいものではないが、これが成し遂げたものは、遅いmodem/ISDN 接続上でも十分に使えるくらいのスピードを出す、新しい圧縮方法とキャッシング 技術である。

イタリアで(公開の)Red Hatマシンに対して、負荷の高いインターネット接続で、 KDE konquerorのサムネイルプレビューを有効にして、マウスを載せると その時点でポップアップするようにしてテストしてみた。その内側(リモートX)の セッションで、Windows XPマシンへののrdesktopセッションを起動した。パフォーマンスを 測ってみたところ、最初に631750ポイントというスコアが出た。

NXは、TightVNC, rdesktopやromete Xという、その時点までに使っていた他の 純粋な接続方法のどれよりも、ローカルLANよりも良いパフォーマンスを 出す。2つのノードを直接クロス接続するよりも速い。

リモートXアプリケーションから手元のマシンに対して、音を再生することも出来、 (イタリアにあるKDEセッションで動いている)NXウィンドウからMozillaメールソフトに コピーアンドペーストをする事も出来た。このソフトはとてもよく 動いている!

リモートコンピューティングに一時的な興味のみあるどなたにも、 NXを使って 見る事をお勧めする。

無料で使えるクライアントソフトウェアをダウンロードし(Red Hat、SuSE、Debianと Windows用がある)、起動し5分間使える(この時testdrive.nomachine.com上に実際の UNIXアカウントを割り当てるために、アカウントデータを送る必要がある)。

計画されている要点では、クラスターのノードとしてNXアプリケーションサーバーを 動かせるようになり、単にNXセッションをローカルに起動し、透過的に アプリケーションを動かせる(アプリケーションが他のNXノードで動いていたとしても、 同じウィンドウで表示されるために、最初のログインで使われていたのと同じように 動く。また、フルスクリーンでも動作でき、そのすぐにリモートログインしていることを 全く忘れてしまうだろう)。

最後に最も良いことを:すべての主要な圧縮とキャッシュ技術はGPLのもとでリリース され、何かに組み込もうと思う人誰にもそのソースコードが公開されている!これらの 技術はちゃんと動くが、コマンドラインのみから起動する(そして、完全に動作する リモートXセッションを起動し動かすために使うにはとても不便である)。

質問に対する回答は以下の通り:

  • ターミナルサーバーをインストールする必要はない。XPはRDPのサポートを内蔵している。

  • NXはCitrixよりも安価であり対抗できうる性能があり、おそらくより速い。

  • XPをハックする必要はない。それはちゃんと動く。

  • 透過的にリモートからXPマシンにログイン出来(そして、ドメインに対する認証が 必要だとしても、接続時に何かを変更する必要はない)。

  • NXの主要な技術はすべてオープンソースでGPLでリリースされている。 (とても不便だが)無料で、コマンドラインで使う事が出来るが、お金を出せば、 便利な(商用の)NX GUIフロントエンドを買うことが出来る。

  • そのようなフロントエンドに対する、OSS/Free Softwareでの実装に、NoMachineは 自分自身に対する競合を意味しているのにもかかわらず、力を貸し、手助けを している(このような主旨を、LTSP、KDEとGNOME開発メーリングリストにも表明 している)。

ThinLincを使うリモート管理

リモートアクセスに対する他の解は、CendioによるThinLincである。

ThxnLincは、LinuxとSolarisベースで使える、SSH、TightVNC、NFSとPulseAudioのような 標準プロトコルをベースとしたターミナルサーバーである。

ThinLincは、LAN環境において組織におけるシンクライアント運用にも、狭帯域においても 使えるリモートから仕事をする人がセキュアなリモートアクセスを行うのにも使える。 ThinLincは、単一の同時アクセスするユーザーに対して自由に使える。

プロダクトはWindowsターミナルサーバーかCitrix環境のフロントエンドとしても、 Windows XPマシンのフロントエンドとしても使え、sshプロトコル経由で接続時の安全性を 確保している。クライアントはLinux(数多くのシンクライアント端末と同様すべてのLinux ディストリビューションをサポート)とWindows用がある。JavaベースのWebクライアントも 提供されている。

ThinLincはCendioのデモシステムに接続することで評価が出来る。下記を参照。 Cendio's web サイト testdrive センタ。

Cendiaは以下を含む、いくつかのオープンソースプロジェクトにおける主要な貢献者である。 TightVNC, PulseAudio , unfsd, Pythonrdesktop.

ネットワークログオンスクリプトの魔法

固有のネットワーク設定環境を作成するための、いくつかの機会がある。

  • ログオンスクリプトなし。

  • すべてのユーザーに適用される、単純な汎用ログオンスクリプト。

  • ユーザー単位あるいはグループ単位の属性に適用する条件付きログオンスクリプトの使用。

  • 固有のログオンスクリプトを作るための、NETLOGON共有に対する アクセス上の、Sambaのpreexecとpostexec機能を使用し、それを実行。

  • kixStartのようなツールのユーザー。

Sambaソースコードの中には2つのログオンスクリプト生成/実行ツールが含まれている。 examplesディレクトリのgenlogonntlogonサブディレクトリを参照。

以下のリストはgenlogonディレクトリからのものである。

これは、genlogon.plファイルである:

	#!/usr/bin/perl
	#
	# genlogon.pl
	#
	# Perl script to generate user logon scripts on the fly, when users
	# connect from a Windows client. This script should be called from 
	# smb.conf with the %U, %G and %L parameters. I.e:
	#
	#       root preexec = genlogon.pl %U %G %L
	#
	# The script generated will perform
	# the following:
	#
	# 1. Log the user connection to /var/log/samba/netlogon.log
	# 2. Set the PC's time to the Linux server time (which is maintained
	#    daily to the National Institute of Standards Atomic clock on the
	#    internet.
	# 3. Connect the user's home drive to H: (H for Home).
	# 4. Connect common drives that everyone uses.
	# 5. Connect group-specific drives for certain user groups.
	# 6. Connect user-specific drives for certain users.
	# 7. Connect network printers.

	# Log client connection
	#($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
	open LOG, ">>/var/log/samba/netlogon.log";
	print LOG "$mon/$mday/$year $hour:$min:$sec";
	print LOG " - User $ARGV[0] logged into $ARGV[1]\n";
	close LOG;

	# Start generating logon script
	open LOGON, ">/shared/netlogon/$ARGV[0].bat";
	print LOGON "\@ECHO OFF\r\n";

	# Connect shares just use by Software Development group
	if ($ARGV[1] eq "SOFTDEV" || $ARGV[0] eq "softdev")
	{
		print LOGON "NET USE M: \\\\$ARGV[2]\\SOURCE\r\n";
	}

	# Connect shares just use by Technical Support staff
	if ($ARGV[1] eq "SUPPORT" || $ARGV[0] eq "support")
	{
		print LOGON "NET USE S: \\\\$ARGV[2]\\SUPPORT\r\n";
	}

	# Connect shares just used by Administration staff
	If ($ARGV[1] eq "ADMIN" || $ARGV[0] eq "admin")
	{
		print LOGON "NET USE L: \\\\$ARGV[2]\\ADMIN\r\n";
		print LOGON "NET USE K: \\\\$ARGV[2]\\MKTING\r\n";
	}

	# Now connect Printers. We handle just two or three users a little
	# differently, because they are the exceptions that have desktop
	# printers on LPT1: - all other user's go to the LaserJet on the
	# server.
	if ($ARGV[0] eq 'jim'
	    || $ARGV[0] eq 'yvonne')
	{
		print LOGON "NET USE LPT2: \\\\$ARGV[2]\\LJET3\r\n";
		print LOGON "NET USE LPT3: \\\\$ARGV[2]\\FAXQ\r\n";
	}
	else
	{
		print LOGON "NET USE LPT1: \\\\$ARGV[2]\\LJET3\r\n";
		print LOGON "NET USE LPT3: \\\\$ARGV[2]\\FAXQ\r\n";
	}

	# All done! Close the output file.
	close LOGON;

これらは、より精巧か、有用なログイン処理システムがそれらのサイトを確認する事を期待している:

ユーザーの干渉なしにプリンターを追加する

プリンターは以下を使用することで、ログオンスクリプト処理中に自動的に追加することが出来る:

C:\> rundll32 printui.dll,PrintUIEntry /?

ユーザーによる操作なしで Windowsにプリンターを追加する方法 を参照のこと。

ログオン接続の制限

時々、Samba共有リソースへの同時接続の数を制限することが必要な場合がある。 たとえば、ユーザー毎に1つのネットワークログインのみを、サイトが許可したいような 場合である。

Sambaのpreexec scriptパラメーターはユーザー単位に1つの接続 のみを許可するのに使える。この方法は完全に安全性があるわけではなく、副作用が あるかもしれない。以下の寄贈された方法はより良い解を誰かに思いつかさせて、 提供を促すかもしれない。

これは、Windowsクライアントが、実際にそうである間、共有をもう使っていないと 見える場合に、自動再接続機能を使って、アイドル状態の接続を切ってしまうことが 出来るという理由で完全な解ではない。そうだったとしても、これは、 preexec scriptパラメーターの使用の原理的なデモである。

以下の共有設定は“Script to Enforce Single Resource Logon”中で示されるスクリプトの使用をデモする。

[myshare]
	...
	preexec script = /sbin/PermitSingleLogon.sh
	preexec close = Yes
	...

Example 25.1. Script to Enforce Single Resource Logon

#!/bin/bash

IFS="-"
RESULT=$(smbstatus -S -u $1 2> /dev/null | awk 'NF \
        > 6 {print $1}' | sort | uniq -d)

if [ "X${RESULT}" == X  ]; then
  exit 0
else
  exit 1
fi