投稿者「admin」のアーカイブ
自転車買いました。
ルータに対して ping ができないのに traceroute できる。
traceroute は ping と同じパケット(ICMP Echo Requestパケット)を送ってるんだと思ったてたけど Linux のtraceroute は UDP パケット送ってるそうな。
traceroute – ネットワークの経路を調査する – atmarkit
*1LinuxではUDPパケットを、WindowsではICMP Echo Requestパケットをデフォルトで用いる。Linuxでは-IオプションでICMPに変更することもできる
今回は –icmp-type echo-request を Drop しているルータに対して ping ができないのに traceroute ができて『???』と思ったのでした。
EC2 の EBS Volume を自動マウントするコマンドをちょっと改造。
Amazon EBSのボリュームを自動でattachしてマウントしたい – cyberarchitect
を参考にさせて頂き試してみましたがエラーが…。><
『Client.InvalidVolume.NotFound: The volume ‘vol-XXXXXXXX’ does not exist.』
リージョンの設定が足りないようだったので。
Scripts to automatically attach and mount an EBS Volume at Boot Time
のスクリプトを改造して、ec2-attach-volume コマンドに –region のオプションを追加した。
# diff -Nur mount_ebs_volume.py_org mount_ebs_volume.py > mount_ebs_volume_add_region.patch
# cat mount_ebs_volume_add_region.patch
--- mount_ebs_volume.py_org 2011-09-27 16:04:22.028387625 +0900 +++ mount_ebs_volume.py 2011-09-28 13:14:12.100673654 +0900 @@ -31,7 +31,7 @@ def mount(): logging.info('Attempting to attach volume [%s] to instance [%s] as [%s]' % (volume_name, instance_id, device_name)) - cmd = 'ec2-attach-volume -C %s -K %s %s -i %s -d %s' % (ec2conf['CERT'], ec2conf['PRIVKEY'], volume_name, instance_id, device_name) + cmd = 'ec2-attach-volume -C %s -K %s %s -i %s -d %s --region %s' % (ec2conf['CERT'], ec2conf['PRIVKEY'], volume_name, instance_id, device_name, ec2conf['REGION']) for i in range(0, 20): p = Popen(cmd, shell=True,stdout=PIPE); @@ -49,7 +49,7 @@ logging.info('Volume [%s] attaching to device [%s] in attempt #%d' % (_volume_id, _device_id, i)) # wait for fully attached - cmd = 'ec2-describe-volumes -C %s -K %s' % (ec2conf['CERT'], ec2conf['PRIVKEY']) + cmd = 'ec2-describe-volumes -C %s -K %s --region %s' % (ec2conf['CERT'], ec2conf['PRIVKEY'], ec2conf['REGION']) for n in range(0, 20): logging.debug('Running ec2-describe-volumes for the %dth time' % n) p = Popen(cmd, shell=True,stdout=PIPE); @@ -79,13 +79,21 @@ def unmount(): logging.info('Attempting to detach volume [%s] from instance [%s] as [%s]' % (volume_name, instance_id, device_name)) - cmd = 'ec2-detach-volume -C %s -K %s %s -i %s -d %s' % (ec2conf['CERT'], ec2conf['PRIVKEY'], volume_name, instance_id, device_name) + cmd = 'umount %s ' % (device_name) + p = Popen(cmd, shell=True,stdout=PIPE); + exitcode = p.wait() & 0xff; # exit code is in the high byte + logging.debug('umount returned status code %d' % exitcode) + if exitcode == 0: + logging.info('Successfully unmount volume [%s] as [%s]' % (volume_name, device_name)) + + cmd = 'ec2-detach-volume -C %s -K %s %s -i %s -d %s --region %s' % (ec2conf['CERT'], ec2conf['PRIVKEY'], volume_name, instance_id, device_name, ec2conf['REGION']) p = Popen(cmd, shell=True,stdout=PIPE); exitcode = p.wait() & 0xff; # exit code is in the high byte logging.debug('ec2-detach-volume returned status code %d' % exitcode) if exitcode == 0: logging.info('Successfully detached volume [%s] from instance [%s] as [%s]' % (volume_name, instance_id, device_name)) + # arguments if len(sys.argv) < 5: @@ -119,9 +127,9 @@ logger.setLevel(logging.INFO) # setup environment -os.putenv('PATH', '/root/ec2-api-tools/bin/:' + os.getenv('PATH')) -os.putenv('EC2_HOME', '/root/ec2-api-tools/') -os.putenv('JAVA_HOME', '/usr/lib/jvm/java-6-sun') +os.putenv('PATH', '/opt/aws/bin/:' + os.getenv('PATH')) +os.putenv('EC2_HOME', '/opt/aws/apitools/ec2/') +os.putenv('JAVA_HOME', '/usr/lib/jvm/jre/') # EC2 conf ec2conf = shellVars2Dict('/root/.ec2cred')
※ ec2-detach-volume するときに unmount しないとうまくいかなかったのでそれも追加した。
.ec2cred に
REGION=ap-northeast-1
を追加した。
# diff -Nur .ec2cred_org .ec2cred
--- .ec2cred_org 2011-09-27 08:40:53.000000000 +0900 +++ .ec2cred 2011-09-27 16:17:53.789461128 +0900 @@ -1,4 +1,5 @@ -CERT=/root/cert-XXX.pem -PRIVKEY=/root/pk-XXX.pem -AWSACCOUNTID=XXXX-XXXX-XXXX +CERT=/root/cert-XXXAAA.pem +PRIVKEY=/root/pk-XXXAAA.pem +AWSACCOUNTID=XXXX-XXXX-XXXX +REGION=ap-northeast-1
これでOKになりました。
VNC Server の設定
ポリシー
- デーモンで起動する。
- ssh でトンネリングするので localhost からのアクセスのみ。
VNC 用パスワードの設定。
# vncpasswd
gnome の画面が見られるように dot_file を編集。
[root@hosting634 ~]# vi ~/.vnc/xstartup #!/bin/sh # Uncomment the following two lines for normal desktop: unset SESSION_MANAGER #コメント外す exec /etc/X11/xinit/xinitrc #コメント外す [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm &
どのユーザと画面番号をひもづけるか設定。
/etc/sysconfig/vncservers の最後のほうに追加。
[root@hosting634 ~]# vi /etc/sysconfig/vncservers … # VNCSERVERS="2:myusername" # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost" VNCSERVERS="1:root" VNCSERVERARGS[1]="-nolisten tcp -nohttpd -localhost"
ssh でトンネリングして使うので『-localhost』オプションを付ける。
こんな感じでトンネリングしてから、VncViewerをつかう。
$ ssh 192.168.222.5 -L 5901:localhost:5901
nfs 経由のアクセスのグループ数には上限がある。
今週の初めから出張挟んで悩んでた件。
『NFS経由のグループによるアクセス制御は、補助グループが16を越えるとダメでした』というはなし。
samba(3.0.23d)のファイルサーバ。あるユーザがアクセス出来ないと連絡あり(このユーザ以外は問題なし)
認証には LDAP を使用していて統合されている。
計5台でファイルサーバ1台に見えるように、メインのサーバ1台に他の4台が nfs マウントされている。(過去にmsdfs proxy 形式から変更した経緯あり。Windows7ではうまく動かなかった。)そのnfsマウントされた領域をsambaで共有している。
このユーザの権限でファイルを作ろうとすると。
[root@fs kojin]# id furu-furu uid=1222(furu-furu) gid=1000(samba-users) 所属グループ=1000(samba-users),1001(dantai),1002(kojin),…………………,1032(nittei) # 32 のグループに所属してる。 [root@fs kojin]# pwd /mnt/samba/fs2/kojin # fs2 以下は nfs マウント [root@fs kojin]# ls -ld drwxrwsr-x 36 root kojin 4096 6月20日 15:59 ./ [root@fs kojin]# sudo -u furu-furu touch test touch: `test' に触れることができません: 許可がありません [root@fs kojin]# LANG=C sudo -u furu-furu touch test touch: cannot touch `test': Permission denied
こんな感じで、パーミッションは問題なさそうなんだけど書けない。
fs2 に直接ログインしての書き込みは可能。nfs経由からの書き込みがダメっぽい。
autofs で経由で接続されてるので autofs,nfs の設定見直して再接続してみたけどダメ。
調べてみると、nfs 経由のアクセスはユーザが所属する補助グループが16以下しかアクセスコントロールできないとのことらしい。
結局ファイルサーバへのアクセス権限の範囲を厳選してもらい、所属グループ数を減らしてもらいました。他のユーザもダメだったかもしれないですな。
みんなどうしてるんだろう、iSCSI とかつかうのだろうか?実験しとかないとダメですなー。
2011.6.27追記
iSCSI だと iscsi-initiator 経由でファイルシステム作り直す感じになるので、元からある共有領域をマウントはできないですな。
こちらを参考にさせて頂きました。ありがとうございます。
NFSアクセスにおけるグループ数の制限とは – OpenGroove
windows のバックアップ
synctoy
Download details: SyncToy 2.1
@IT:Windows TIPS — Tips:SyncToyツールで手軽にバックアップを行う
robocopy.exe (Windows server 2008 にデフォルトでインストールされている。)
robocopyでフォルダをバックアップ/同期させる − @IT
コピー元にドライブを指定すると、隠しフォルダになるそうな。
robocopy後のコピー先フォルダが隠しフォルダになってしまう
robocopy.exe でバッチファイル書いた。
synctoy って名前が悪いよなぁ。
腰痛い。
Amazon EC2
Munin をインストール。4/n (tarball で munin-node をインストール)
前回からの続き。ちょっと古い Vine にtarball で munin-node をインストール。
tarball で munin-node をインストール
http://munin-monitoring.org/
http://sourceforge.net/projects/munin/files/ ← こちらから入手。
$ tar zxvf munin-1.4.5.tar.gz
tar の中の INSTALL を読む。
node に必要なライブラリを cpan からインストールする。
# perl -MCPAN -e shell install Net::Server install Net::Server::Fork install Time::HiRes install Net::SNMP install Crypt::DES install Digest::SHA1 install Digest::HMAC install Net::SSLeay
または cpanminus をインストールして。
# cpan App::cpanminus # cpanm install Net::Server Net::Server::Fork Time::HiRes Net::SNMP Crypt::DES Digest::SHA1 Digest::HMAC Net::SSLeay
munin ユーザを足す。uid、gid は 500 以下。
make、make install。
# groupadd -g 103 munin # useradd -u 103 -g munin munin $ make # make install-common-prime install-node-prime install-plugins-prime
起動スクリプトをコピー。
cp /root/munin-1.4.5/dists/redhat/munin-node.rc /etc/init.d/munin-node
[root@aaaa munin-1.4.5]# diff -BbwENur /root/munin-1.4.5/dists/redhat/munin-node.rc /etc/init.d/munin-node --- /root/munin-1.4.5/dists/redhat/munin-node.rc 2005-11-07 01:54:02.000000000 +0900 +++ /etc/init.d/munin-node 2011-03-10 18:27:26.000000000 +0900 @@ -2,10 +2,10 @@ # # munin-node Control the Munin Node Server (formerly Linpro RRD client) # -# chkconfig: 2345 90 10 +# chkconfig: - 90 10 # description: munin node agents # processname: munin-node -# config: /etc/munin/munin-node.conf +# config: /etc/opt/munin/munin-node.conf # pidfile: /var/run/munin/munin-node.pid # Source function library. @@ -21,7 +21,7 @@ case "$1" in start) echo -n "Starting Munin Node: " - /usr/sbin/munin-node & + /opt/munin/sbin/munin-node & sleep 1 pkill -0 $PROCNAME RETVAL=$?
/opt/munin/sbin/munin-node-configure --shell | sh -x /etc/init.d/munin-node restart /sbin/chkconfig munin-node on
このスクリプトを動かすと、pkill がないと言われたので。
# apt-get install pgrep
conf はここ。rpm でインストールしたときの場所はここでした。→『/etc/munin/munin-node.conf』
# vi /etc/opt/munin/munin-node.conf … allow ^192\.168\.1\.152$ #(Munin 描画サーバアドレスからのアクセスを許可) …
munin-node plugin の挙動の設定。rpm でインストールしたときの場所はここでした。→『/etc/munin/plugin-conf.d/munin-node』
# vi /etc/opt/munin/plugin-conf.d/munin-node [qmailqstat] user root