SuSE
ここの話は、SuSE9.{2,3}でテストしたものです。他のバージョンや他の環境でどうかは分かりません。
(追記)SuSELinux10.0 でも ok です。(2006/Jan)
remote server のパスワード変更
ssl connection を張ってパスワード変更する pwdutils http://www.thkukuk.de/pam/pwdutils/ が便利そう。
imap-2004c_suse
default で生パスは禁止されている。これを許すには、imap.spec を以下のように書き換えて rebuild
--- imap.spec.orig 2005-09-10 02:10:27.000000000 +0900 +++ imap.spec 2006-01-23 14:23:23.000000000 +0900 @@ -91,7 +91,7 @@ %build export CFLAGS="$RPM_OPT_FLAGS -DDISABLE_POP_PROXY=1 -fPIC -fno-strict-aliasing" -make lnp MYCFLAGS="$CFLAGS" SSLTYPE=nopwd IP=6 +make lnp MYCFLAGS="$CFLAGS" SSLTYPE=unix IP=6 make lnp c-client gcc -shared -o libc-client.so.%{version} c-client/*.o strip libc-client.so.%{version}
NFS, Quota, Firewall
/etc/sysconfig/SuSEfirewall2 のFW_TRUSTED_NETS 行を適当に 編集すれは良いはず。。。開けないといけない port は、nfs と sunrpc に加え、portmapper によって rquotad に割り当てられた port 番号 xxx。
FW_TRUSTED_NETS="10.0.0.2,udp,nfs 10.0.0.2,udp,sunrpc 10.0.0.2,udp,xxx"
問題は、この xxx が何番になるかである。portmapper は動的に port 番号を割り当てるからだ。
iptables などで制限をかけるには、port番号は固定したい。rpc.quotad には port 番号を指定する option (-p port_num)が存在するが、これを適当に指定しても塩梅が良くない。おそらく、-p で指定された port 番号を portmapper が関知しないためだろう。
ちなみにclient-server 間の通信の様子を見てみたところ、次のような流れになっている。client で quota コマンドを実行すると、
まず client が server の nfs port 経由で問いかけ、 次に server の sunrpc port 経由で rquotadの port 番号を聞き出し、 最後に、聞いた port 番号で server 側の rquotad とやりとり
しているらしい。
さて、SuSEの場合であるが、割り当てられる port を固定するためには、/etc/services に
rquotad 14900/udp rquotad 14900/tcp
のように記載するだけで良い。 これで、portmapper は、rquotad に 14900 を割り当てることになる。(割り当てられたport番号を確認するには、rpcinfo -p を実行すればよい。)
Software RAID1
SATA ディスク 2本を使った RAID1。YaST で簡単に設定できる。拍子抜け。
YaST の System → Partitioner から作成できる。ポイントは target となるディスクに partition を作成(format不要)、type を 0xfd にすること、くらいかな。
ath1:~ # cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 36146112 blocks [2/2] [UU] [====>................] resync = 21.5% (7787776/36146112) finish=7.6min speed=61487K/sec unused devices: <none>
NFS, Mountd の port 固定
rpc.mountd の port 指定は、/etc/sysconfig/nfs の中の
MOUNTD_PORT=""
で指定するか、あるいは /etc/services に
mountd 14901/tcp mountd 14901/udp
とか書けば良い。
NFS, lockd & statd(?) の port 固定
portmapper で動的に port が割り当てられる、残りの lockd と statd について。
rpc.statd は -o, -p option で固定できると(Vine の) man に書いてある。 一方 lockd(NFS lock manager) は kernel module。Redhat なんぞでは /etc/modules.conf で nlm_udpport と nlm_tcpport を指定するらしい。( http://cryptosystem.us/files/nfs_help.html )
しかし、SuSE には /etc/modules.conf が見当たらないので、/proc 経由で parameter をいじってみることにする。
/etc/init.d/nfsserver stop echo 14902 > /proc/sys/fs/nfs/nlm_udpport echo 14902 > /proc/sys/fs/nfs/nlm_tcpport /etc/init.d/nfsserver start
てな具合にやってみる。 rpcinfo -p で確認する(↓)と nlockmgr のみならず status も 14902 に固定されている。
ath1:/proc/sys/fs/nfs # rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100024 1 udp 14902 status 100021 1 udp 14902 nlockmgr 100021 3 udp 14902 nlockmgr 100021 4 udp 14902 nlockmgr 100024 1 tcp 14902 status 100021 1 tcp 14902 nlockmgr 100021 3 tcp 14902 nlockmgr 100021 4 tcp 14902 nlockmgr 100005 1 udp 14901 mountd 100005 1 tcp 14901 mountd 100005 2 udp 14901 mountd 100005 2 tcp 14901 mountd 100005 3 udp 14901 mountd 100005 3 tcp 14901 mountd
nlockmgr と status が同じ port になるのは何故だろう?(SuSE9.xはいつも nlockmgr とstatus のport 番号が同じ....)
なんにしても、nlockmgr と status がうまく固定された。NFS client からの mount も難なく成功。
rpc.statd が無いのは??? (疑問)
statd についてだが、そもそも rpc.statd は SuSE には存在していない。もちろん man もない。調べてみると rpc.statd は rpc.lockd と協調して動くもののようだ。もしかすると、nfs-utils で rpc.lockd に merge されたのだろうか。。。(多分違う)
SuSE9.3 の nfs-utils-1.0.7.src.rpm を取ってきて、中を見てみる。rpm spec file 中で rpc.statd とかをばっさり remove してある。うーむ。
SuSE9.1 の Changelog に rpc.statd を消したとある。。。 その代わりかどうか分からないが、sm-notify という command がある。(util-linux に入っている)
試しに man sm-notify すると
sm-notify(8) sm-notify(8) NAME sm-notify - Send out NSM reboot notifications
一方、(Vine上で)man rpc.statd すると
rpc.statd(8) rpc.statd(8) NAME rpc.statd - NSM status monitor
sm-notify が rpc.statd と同じような役割をしているのかな?
(NSM = Network Status Monitor)
あ、Redhatの文書を読むと、NFSv4( http://www.nfsv4.org/ )では portmapper、rpc.mountd、rpc.lockd、rpc.statdが kernel に導入されて、使用しないという記述が。だから無いのかなぁ。。。釈然としない。
NFS server での iptables 設定のまとめ
上述の繰り返しになるが、NFS server で iptables を設定する方法について一応まとめておこう。 まず次の二つは最初から port が固定されている。
portmapper → 111 nfs,nfs_acl → 2049
固定されていない(動的割当される)のは、mountd, nlockmgr, status, rquotad 。
これらの port を固定するには、まず mountd と rquotad に関しては /etc/services に次のように書けば固定できる。
rquotad 14900/tcp rquotad 14900/udp mountd 14901/tcp mountd 14901/udp
nlockmgr, status に関しては、nfs server を起動する前に
echo 14902 > /proc/sys/fs/nfs/nlm_udpport echo 14902 > /proc/sys/fs/nfs/nlm_tcpport
のようにすればよい。(kernel version に依存すると思うけど。)たとえば、/etc/init.d/nfsserver を次のように変えておけば簡単。
--- /etc/init.d/nfsserver.orig 2005-03-20 06:16:05.000000000 +0900 +++ /etc/init.d/nfsserver 2005-07-21 16:21:29.000000000 +0900 @@ -68,6 +68,9 @@ PARAMS=3 test "$USE_KERNEL_NFSD_NUMBER" -gt 0 && PARAMS="$USE_KERNEL_NFSD_NUMBER" + echo 14902 > /proc/sys/fs/nfs/nlm_udpport + echo 14902 > /proc/sys/fs/nfs/nlm_tcpport + echo -n "Starting kernel based NFS server" /usr/sbin/exportfs -r rc_status
以上の設定では、nfs server 側で開けなければならない port は、111, 2049, 14900-14902 の udp, tcp となる。 これらの port を NFS client に対して iptables で許可すれば良い。 SuSE であれば、/etc/sysconfig/SuSEfirewall2 の FW_TRUSTED_NET に次のように書けばよい。 (server:10.0.0.1, client:10.0.0.2)
FW_TRUSTED_NETS="10.0.0.2,udp,111 10.0.0.2,tcp,111 10.0.0.2,udp,2049 10.0.0.2,tcp,2049 10.0.0.2,udp,14900 10.0.0.2,tcp,14900 10.0.0.2,udp,14901 10.0.0.2,tcp,14901 10.0.0.2,udp,14902 10.0.0.2,tcp,14902"
↑ 1行が長いので適当に改行を入れて折り返してあります。
[iptables の設定例]
192.168.10.21がserver、192.168.10.22がclient、rquotadの設定はなし。
iptables-save > nfs-ipt.txt
Keyword(s):[Linux] [SuSE] []
References:[Linux]