カテゴリー:01, Linux

Search




TOPページへ

このブログのフィードを取得
[フィードとは]

Powered by
Movable Type 4.23-ja

template by tokyobuddha

 ■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
 -------------------------

Galler Chocolate
ベルギー王室御用達として認定されたチョコレートブランド、ガレー。

最近のPgSQLでEUC

デフォルトがUTFなので、他の文字コードで設定する場合は

createdb -T template0 -E EUC_JP --locale=C "DBNAME"

になるらしいです。

投稿時間: 17:14

index.htmlの有り無し統一

今更ながらindex.htmlの有り無し統一

今回は無しで統一

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.jp/$1 [R=301,L]


wwwの有り無しと併用したい場合は

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.jp
RewriteRule ^(.*)$ http://www.example.jp/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.jp/$1 [R=301,L]


尚、httpsへ統一している場合は、

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.jp
RewriteRule ^(.*)$ https://www.example.jp/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://www.example.jp/$1 [R=301,L]


投稿時間: 10:42

DBのエクスポート、インポート

今更ながら・・・

DBのエクスポートとインポート


■データベースのエクスポート(バックアップ)
・MySQLデータベースのバックアップは、mysqldumpコマンドを実行して行います。

$ mysqldump -a --user=USERNAME --password=PASSWORD DATABASE > FILENAME.mysql

・PostgreSQLデータベースのバックアップは、pg_dumpコマンドを実行して行います。

$ pg_dump --username=USERNAME DATABASE > FILENAME.pg


■データベースのインポート(リストア)
・MySQLデータベースの復旧は、次のようにmysqlコマンドを実行します。

$ mysql --user=USERNAME --password=PASSWORD DATABASE < FILENAME.mysql

・PostgreSQLデータベースの復旧は、次のようにpsqlコマンドを実行します。

$ psql DATABASE < FILENAME.pg

投稿時間: 10:18

CentOS7系でNICに複数IP

CentOS6以前とCentOS7ではNICへの追加IP方法が変わったらしい・・・
例えば、ifcfg-eth0がメインNICの場合、複数IPを割り当てる時は

ifcfg-eth0
ifcfg-eth0:0
ifcfg-eth0:1



ifcfg-eth0:9

こんな感じで作り込んでいたが、今後はifcfg-eth0内部に追加すれば良いらしい・・・

# vi ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.10
PREFIX=24
IPADDR1=192.168.1.11
PREFIX1=24
IPADDR2=192.168.1.12
PREFIX2=24
IPADDR3=192.168.1.13
PREFIX3=24



IPADDR11=192.168.1.19
PREFIX9=24
GATEWAY=202.45.165.1

こんな感じで統合出来るので、簡単に出来る・・・
設定後、ネットワークの再起動で有効化

# systemctl restart network
# ifconfig
   追加したIPは見えません
# ip addr show
  で、追加したIPを確認!!

投稿時間: 16:49

Centos7でoci8を使う場合

OS標準のPHPだとoci8のパッケージが無いので、個別に入れなければならない。
ちと、面倒〜〜

oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm のインストール後、

# pecl install oci8-2.0.11
# vi /etc/php.d/oci8.ini
---
; Enable oci8 extension module
extension=oci8.so
---
を書き込んで、

# systemctl restart httpd

# php -m | grep oci
oci8


# php -i | grep oci8
/etc/php.d/oci8.ini,
oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20


# php -i | egrep -i 'oracle|oci'
/etc/php.d/oci8.ini,
oci8
OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.0.11
Oracle Run-time Client Library Version => 12.1.0.2.0
Oracle Compile-time Instant Client Version => 12.1
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20


# php --rf oci_connect
Function [ function oci_connect ] {

- Parameters [5] {
Parameter #0 [ $username ]
Parameter #1 [ $password ]
Parameter #2 [ $connection_string ]
Parameter #3 [ $character_set ]
Parameter #4 [ $session_mode ]
}
}


pdo_ociも使い場合は、下記も実行

# git clone https://github.com/hotta/pdo_oci
# cd pdo_oci
# phpize
# ./configure --prefix=/usr --exec-prefix=/usr --with-php-config=php-config --with-pdo-oci=instantclient,/usr,12.1
# make
# make install

# vi /etc/php.d/pdo_oci.ini
---
; Enable oci extension module
extension=pdo_oci.so
---


# systemctl restart httpd


# php -m|grep -i pdo_oci
PDO_OCI


# php -i | egrep -i 'oracle|oci'
/etc/php.d/oci8.ini,
/etc/php.d/pdo_oci.ini,
oci8
OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.0.11
Oracle Run-time Client Library Version => 12.1.0.2.0
Oracle Compile-time Instant Client Version => 12.1
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20
PDO drivers => mysql, oci, odbc, sqlite
PDO_OCI
PDO Driver for OCI 8 and later => enabled
PWD => /home/takahashi/soft/pdo_oci
ORACLE_HOME => /usr/lib/oracle/12.1/client64/lib
_SERVER["PWD"] => /home/takahashi/soft/pdo_oci
_SERVER["ORACLE_HOME"] => /usr/lib/oracle/12.1/client64/lib


# php -m | grep oci
oci8


# php -i | grep oci8
/etc/php.d/oci8.ini,
oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20


# php -i | egrep -i 'oracle|oci'
/etc/php.d/oci8.ini,
/etc/php.d/pdo_oci.ini,
oci8
OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.0.11
Oracle Run-time Client Library Version => 12.1.0.2.0
Oracle Compile-time Instant Client Version => 12.1
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20
PDO drivers => mysql, oci, odbc, sqlite
PDO_OCI
PDO Driver for OCI 8 and later => enabled
PWD => /home/takahashi/soft/pdo_oci
ORACLE_HOME => /usr/lib/oracle/12.1/client64/lib
_SERVER["PWD"] => /home/takahashi/soft/pdo_oci
_SERVER["ORACLE_HOME"] => /usr/lib/oracle/12.1/client64/lib


# php --rf oci_connect
Function [ function oci_connect ] {

- Parameters [5] {
Parameter #0 [ $username ]
Parameter #1 [ $password ]
Parameter #2 [ $connection_string ]
Parameter #3 [ $character_set ]
Parameter #4 [ $session_mode ]
}
}

こんな感じでしょうか〜〜

続きを読む "Centos7でoci8を使う場合" »

投稿時間: 12:40

Centos7のvsftps

Centos6.xの内容で設定していると、接続出来ない・・・(泣)
FTPクライアントでは
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
と、エラーになったり、
サーバーでは
# systemctl start vsftpd
Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.

だったりと、色々大変・・・(汗)


以下の様な設定で接続できた。

------------------------------------------------------------------------

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#anonymous_enable=YES
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
#xferlog_enable=YES
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/xferlog
xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
#xferlog_std_format=YES
xferlog_std_format=NO
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES
#chroot_list_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=NO
#listen=YES
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES
#listen_ipv6=NO

#listen_address=
#listen_address6=

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# 追加設定 2016/09/06
use_localtime=YES
pasv_addr_resolve=YES
#pasv_address=XXXXXXXX.com
pasv_min_port=60000
pasv_max_port=60030
#ssl_enable=YES
#rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
#force_local_logins_ssl=NO
#force_local_data_ssl=NO
force_dot_files=YES
#reverse_lookup_enable=NO
seccomp_sandbox=NO
allow_writeable_chroot=YES

# ユーザー毎にアクセスディレクトリを変更するときの参照ディレクトリ
#user_config_dir=/etc/vsftpd/vsftpd_user_conf

------------------------------------------------------------------------

ポイントは
seccomp_sandbox=NO
allow_writeable_chroot=YES

でした。

投稿時間: 15:51

SpamAssassinのスレッド数

SpamAssassinのスレッドのスレッド数の調整は

/etc/sysconfig/spamassassin

のオプションで行うようです。

標準では

SPAMDOPTIONS="-d -m5 -v -u vpopmail --virtual-config-dir=/home/vpopmail/domains/%d/%l/.spamassassin"

こんな感じで、 -m5 となっているので、最大で5つまで起動出来るようです。 -> 多分^^; 

試しに

SPAMDOPTIONS="-d -m1 -v -u vpopmail --virtual-config-dir=/home/vpopmail/domains/%d/%l/.spamassassin"

として設定を行い、差を見てみた。

-m5 の時は

# ps axuwf | grep spamd
root 12294 88.4 2.5 60820 52688 ? Ss 16:47 0:28 /usr/bin/spamd -d -m5 -v -u vpopmail --virtual-config-dir=/home/vpopmail/domains/%d/%l/.spamassassin -r /var/run/spamd.pid
vpopmail 12324 0.0 2.4 60820 50524 ? S 16:47 0:00 \_ spamd child
vpopmail 12326 0.0 2.4 60820 50436 ? S 16:47 0:00 \_ spamd child


-m1 の時は

# ps axuwf | grep spamd
root 12439 88.6 2.5 60828 52676 ? Ss 16:48 0:29 /usr/bin/spamd -d -m1 -v -u vpopmail --virtual-config-dir=/home/vpopmail/domains/%d/%l/.spamassassin -r /var/run/spamd.pid
vpopmail 12475 0.0 2.4 60828 50520 ? S 16:49 0:00 \_ spamd child

これ以外に

--max-children 4  とか  あるみたいだけど、
-m4 と --max-children 4 は同じみたい

それと --max-conn-per-child=1  のオプションが有るみたい。


念のため、SpamAssassinのヘルプ
---------
# spamassassin -h
SpamAssassin version 3.3.1
running on Perl version 5.8.8

For more information read the spamassassin man page.

Usage:
spamassassin [options] [ < *mailmessage* | *path* ... ]

spamassassin -d [ < *mailmessage* | *path* ... ]

spamassassin -r [ < *mailmessage* | *path* ... ]

spamassassin -k [ < *mailmessage* | *path* ... ]

spamassassin -W|-R [ < *mailmessage* | *path* ... ]

Options:

-L, --local Local tests only (no online tests)
-r, --report Report message as spam
-k, --revoke Revoke message as spam
-d, --remove-markup Remove spam reports from a message
-C path, --configpath=path, --config-file=path
Path to standard configuration dir
-p prefs, --prefspath=file, --prefs-file=file
Set user preferences file
--siteconfigpath=path Path for site configs
(def: /etc/mail/spamassassin)
--cf='config line' Additional line of configuration
-x, --nocreate-prefs Don't create user preferences file
-e, --exit-code Exit with a non-zero exit code if the
tested message was spam
--mbox read in messages in mbox format
--mbx read in messages in UW mbx format
-t, --test-mode Pipe message through and add extra
report to the bottom
--lint Lint the rule set: report syntax errors
-W, --add-to-whitelist Add addresses in mail to persistent address whitelist
--add-to-blacklist Add addresses in mail to persistent address blacklist
-R, --remove-from-whitelist Remove all addresses found in mail from
persistent address list
--add-addr-to-whitelist=addr Add addr to persistent address whitelist
--add-addr-to-blacklist=addr Add addr to persistent address blacklist
--remove-addr-from-whitelist=addr Remove addr from persistent address list
--ipv4only, --ipv4-only, --ipv4 Disable attempted use of ipv6 for DNS
--progress Print progress bar
-D, --debug [area=n,...] Print debugging messages
-V, --version Print version
-h, --help Print usage message
---------

んで〜、SPAMDOPTIONSのオプションは
---------
spamd [options]

Options:

-l, --allow-tell Allow learning/reporting
-c, --create-prefs Create user preferences files
-C path, --configpath=path Path for default config files
--siteconfigpath=path Path for site configs
--cf='config line' Additional line of configuration
-d, --daemonize Daemonize
-h, --help Print usage message
-i [ipaddr], --listen-ip=ipaddr Listen on the IP ipaddr
--ipv4only, --ipv4-only, --ipv4 Disable attempted use of ipv6 for DNS
-p port, --port=port Listen on specified port
-m num, --max-children=num Allow maximum num children
--min-children=num Allow minimum num children
--min-spare=num Lower limit for number of spare children
--max-spare=num Upper limit for number of spare children
--max-conn-per-child=num Maximum connections accepted by child
before it is respawned
--round-robin Use traditional prefork algorithm
--timeout-tcp=secs Connection timeout for client headers
--timeout-child=secs Connection timeout for message checks
-q, --sql-config Enable SQL config (needs -x)
-Q, --setuid-with-sql Enable SQL config (needs -x,
enables use of -H)
--ldap-config Enable LDAP config (needs -x)
--setuid-with-ldap Enable LDAP config (needs -x,
enables use of -H)
--virtual-config-dir=dir Enable pattern based Virtual configs
(needs -x)
-r pidfile, --pidfile Write the process id to pidfile
-s facility, --syslog=facility Specify the syslog facility
--syslog-socket=type How to connect to syslogd
-u username, --username=username Run as username
-g groupname, --groupname=groupname Run as groupname
-v, --vpopmail Enable vpopmail config
-x, --nouser-config Disable user config files
--auth-ident Use ident to authenticate spamc user
--ident-timeout=timeout Timeout for ident connections
-A host,..., --allowed-ips=..,.. Limit ip addresses which can connect
-D, --debug[=areas] Print debugging messages (for areas)
-L, --local Use local tests only (no DNS)
-P, --paranoid Die upon user errors
-H [dir], --helper-home-dir[=dir] Specify a different HOME directory
--ssl Run an SSL server
--ssl-port port Listen on port for SSL connections
--ssl-version sslversion Specify SSL protocol version to use
--server-key keyfile Specify an SSL keyfile
--server-cert certfile Specify an SSL certificate
--socketpath=path Listen on given UNIX domain socket
--socketowner=name Set UNIX domain socket file's owner
--socketgroup=name Set UNIX domain socket file's group
--socketmode=mode Set UNIX domain socket file's mode
-V, --version Print version and exit
---------

投稿時間: 11:16

旧Plesk(8.x とか 11.0.x ・・・)でのSHA-2版SSLサーバ証明書発行

古いPleskを未だに利用しているケースが多々有りますが、SSL証明書のバージョン
がSHA-1版SSLサーバ証明書からSHA-2版SSLサーバ証明書に切り替わりましたが、
そのままでは旧タイプのSHA-1で生成されてしまいます。

そこで、メーカーからの情報を元に、SHA-2版のCSRがPleskの操作で生成出来る
ようにしたいと思います。

先ず・・・
ホストにSSH等で接続して

/usr/local/psa/admin/conf/openssl.cnf をゴニョゴニョします。

---------------
[ req ]
attributes=req_attributes
distinguished_name=req_distinguished_name

↓ ↓ ↓

[ req ]
attributes=req_attributes
distinguished_name=req_distinguished_name

default_bits = 2048
default_md = sha256
---------------

追加項目は
default_bits = 2048
default_md = sha256
だけです。

その後Pleskを再起動(/etc/rc.d/init.d/psa restart)で準備完了!!

あとは、そのままPleskでSSL証明書(CSR)の発行を行うだけ。

投稿時間: 11:26

treeコマンドでディレクトリ構成・所有者・パーミッション確認

ls -la では所有者とかパーミッションを見ることができるが、一緒にディレクトリ構成も
見たい時ってありませんか?

そんなときは


# tree -fpug ./

こんな感じで表示される。
浅い階層で実施すると、とんでもなく大量に表示されるので、見たいところに降りてから
実施ねw

投稿時間: 12:37

CentOS 4.x系をどうしても使い続けたいぃ〜

既にサポートが終了しているCentOS4.x系
現在yumは使えなくなってるが、yumの設定をチョットだけ変更すると、
4.9まではアップデート可能。

/etc/yum.repos.d/CentOS-Base.rpeo の

[base]
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://vault.centos.org/4.9/os/$basearch

[update]
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://vault.centos.org/4.9/updates/$basearch/

[addons]
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
baseurl=http://vault.centos.org/4.9/addons/$basearch/

[extras]
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://vault.centos.org/4.9/extras/$basearch/

[centosplus]
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
baseurl=http://vault.centos.org/4.9/centosplus/$basearch/

[contrib]
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://vault.centos.org/4.9/contrib/$basearch/


mirrorlist をコメントアウトしてbaseurlを追加する。
設定後に一旦 yum clean all して
yum update すれば、一覧が出てくる!!


しかし、1点注意が

CentOS4系のBindをアップデートすると、既存のnamed.confがnamed.conf.rpmsave
にリネームされデフォルトのname.confに入れ替わってしまう場合が有る。
その場合は、named.conf.rpmsaveの内容を確認してからnamed.confへ上書きコピー、
その後BINDを再起動すれば元に戻る。
Bindを動かしている場合は、name.confのバックアップを取ってから実行することが吉!!

って、言っても4.x系を未だに使っているところは少ないと思いますけどねw

投稿時間: 23:29

CentOS等々でシステムのタイムゾーンの設定

CentOSを扱っていると、特に海外系のVPSやクラウドは、現地のタイムゾーン
に設定されていることがほとんど・・・・

そこで、変更する際の手順 ※いつも忘れて都度調べるので・・・・

# vi /etc/sysconfig/clock
# 例として東京に変更

ZONE="Asia/Tokyo"
UTC=false


# source /etc/sysconfig/clock
# 変更を反映
# タイムゾーンファイルを上書きコピー

# cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
cp: overwrite `/etc/localtime'? y


こんな感じ・・・・・

投稿時間: 13:28

デカイDBのインポート(MySQL)のエラー回避

デカイDBデータをphpMyAdminとかでインポートすると500番エラーとか出て、イライラしますよね。
分割するのも面倒だし・・・

そんな時、簡単に一括インポート出来るツールが有ります。

http://www.ozerov.de/bigdump/


エラー無しで、素早くインポート出来ますよw

投稿時間: 10:25

vsftpd のちょいネタ

vsftpdを使っていると、ちょいちょい不具合が出る場合がある。
そんな時のちょいネタ

■.htaccess がFTPツールで見えない時
一般的には、FTPツール側で設定できるのだが、場合によってはvsftpd側でも設定が必要な場合があるようです。

「vsftpd.conf」内に「force_dot_files=YES」を追加。


■FTP接続するも、表示されるまでに時間が掛かる
vsftpdにてソースIPの名前解決と行っているため時間が掛かっているようです。

「vsftpd.conf」内に「reverse_lookup_enable=NO」を追加。


続きを読む "vsftpd のちょいネタ" »

投稿時間: 15:36

DNSサーバーへのDDoS攻撃

久々に個人利用のサーバーが落ちた。
原因を調査したらmessagesに大量に 'isc.org/ANY/IN' denied が記述されていた。
再帰的問い合わせは受け付けていないが、何故か影響を受けたらしい。

iptablesでも対応できるが、Bindにて対応させるのが良いだろうと言うことで、下記
の様に設定してみた。

●blackholeの設定

# vi named.conf

options {
(省略)
blackhole {
XXX.XXX.XXX.XXX; ←ホスト指定
XXX.XXX.XXX.0/24; ←ネットワーク指定
(省略)
};
(省略)
};


こんな感じでblackholeを登録すると、messagesへの書き込みすら無くなる。
当然、問い合わせも弾いてくれる

とってもいい感じ(^^)

投稿時間: 23:42

CentOS6.5にGOOGLEの2段階認証を設定してみた。

まず、環境を整えるために開発環境をインストール。
すでにインストール済だったので、pam-develの追加インストールを行なった。

作業するディレクトリに移動して、google-authenticatorをダウンロード

# /usr/local/src
# wget http://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
# tar jxvf libpam-google-authenticator-1.0-source.tar.bz2
# cd libpam-google-authenticator-1.0
# make && make install

インストールまで完了したら、google-authenticatorを実行

# google-authenticator
# google-authenticator

Do you want authentication tokens to be time-based (y/n) y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@DOMAINNAME%3Fsecret%3D■■■■■■■■■■■■■■■■■
Your new secret key is: ■■■■■■■■■■■■■■■■■
Your verification code is XXXXXXXXX
Your emergency scratch codes are:
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
↑「バックアップコード」らしい・・・
 ※一部文字を伏せています。

Do you want me to update your "/root/.google_authenticator" file (y/n) y
↑ ~/.google_authenticator ファイルを作成または更新します。更新した場合、QR コードの読み込みを再度行う。
これを何度か繰り返して、ログイン出来ずに煮詰まりました。

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
↑ 同じ認証コードを 2 回以上使えないようにします (中間者攻撃やリプレイ攻撃を防ぐため)。認証コードは 30 秒間同じものを使うため、30 秒以内に再度ログインすることはできなくなります。推奨値は y。

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y
↑ サーバとクライアントの時間のズレの許容値を、90 秒から 240 秒に増やします。時間がズレやすいホストの場合は y。通常の推奨値は n。

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
↑ 30 秒間に試行できるログインを 3 回までに制限します。推奨値は y。


これだけで基本設定は完了。

携帯に認証のAPPをインストールし、上記の
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@DOMAINNAME%3Fsecret%3D■■■■■■■■■■■■■■■■■
PCのプラウザでアクセスし、読み込ませる。


その後、サーバー側でSSHの設定を変更

/etc/ssh/sshd_config を変更

PasswordAuthentication yes
ChallengeResponseAuthentication yes
#ChallengeResponseAuthentication no
UsePAM yes


/etc/pam.d/sshd を変更

一番上に
auth required pam_google_authenticator.so
を追加。
そしてsshdをrestart

これで行けるはず。


投稿時間: 15:06

spamassassinの添付データ問題

特定のメールがたまに届かないと言う現象が発生している。
色々調査するとログに

skipped message, greater than max message size (512000 bytes)

となっている。

ググってみると、spamassassinのバグ? 仕様?
とにかく、対策を打たなければならない


mv /usr/bin/spamc /usr/bin/spamcs  ←  メインのspamcの名前を変更
vi /usr/bin/spamc  ←  実行ファイルspamcの作成

#spamcの内容

#!/bin/sh
/usr/bin/spamcs --max-size=20971520  ←  容量は任意 今回は20MB

chmod +x /usr/bin/spamc  ←  作成したspamcに実行権を与える
chown root:root /usr/bin/spamc  ←  所有権変更


これで、行けるらしい・・・・・

投稿時間: 15:49

uptime

サーバにアクセスして何となくtopコマンド打ってみてビックリ!!


top - 10:23:28 up 2245 days, 14:01, 0 users, load average: 1.94, 2.01, 1.99
Tasks: 211 total, 2 running, 208 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.7% us, 22.9% sy, 0.0% ni, 72.4% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 4139312k total, 4025020k used, 114292k free, 430076k buffers
Swap: 8393952k total, 592k used, 8393360k free, 2541984k cached


6年超えてるし・・・w

投稿時間: 20:05

Virtuozzoでコンテナの再起動時のエラー

先日管理しているVirtuozzoのコンテナのメンテナンスを行いコンテナを再起動してみた。
すると・・・・

# vzctl restart 101
Restart VE
Starting VE ...
VE is mounted
vz-start ERROR: TOTALRATE not configured for class 1
VE is unmounted
VE start failed


何じゃコレ! 起動しないぃ〜〜〜〜
慌てずググってみると・・・

vz のサービスを shaperrestart すれば良いらしい・・・
ところでshaperとはなんぞや?
 ※http://ejje.weblio.jp/content/shaper

形削り機とか出てくる。

コンテナでのshaperrestartではどんな意味が有るのかマニュアルで調べると、
「コンテナのネットワーク帯域幅管理」と言う項目でHITした。
そういえば、通信帯域の設定を1G、100M、10Mの設定が選択できるのだが、
この部分を数日前に変更した記憶が有る・・・
もしかすると、コレが影響有ったのかも!!

って事で、早速shaperrestartを実行

# /etc/init.d/vz shaperrestart
Starting Virtuozzo shaping: [ OK ]
Set shaping on running VE: [ OK ]

なんか行けそうな気がする・・・・

# vzctl start 101
Starting VE ...
VE is mounted
Setting devperms 20002 dev 0x7f00
Adding IP address(es): 192.168.0.101
arpsend: 192.168.0.101 is detected on another computer : xx:xx:yy:yy:zz:zz
vz-net_add WARNING: arpsend -c 1 -w 1 -D -e 192.168.0.101 eth0 FAILED
Hostname for VE set: vz101.xxxxxx.jp
File resolv.conf was modified
VE start in progress...
 ※一部IPやホスト名、MACアドレスを変えています。


おー 行けた行けた。
多分レートの設定が不完全だったのかもしれない・・・

投稿時間: 01:10

ポート番号からの追跡

忘れないうちに・・・・

起動しているプロセスから追跡する場合、基本的には

# ps alx

 として詳細表示させることで確認できるが、通信しているPort番号から追跡する場合は?
たまにしか使わないので、その都度調べていたw

例えば80(http)から調べたいときは、こんな感じ

# lsof -i :80

サービス名から実行する場合は

# lsof -i :http

複数指定は

# lsof -i :80,443 とか lsof -i :http,https

listenしてるポートを出力や指定したポートのみ表示する場合は

# lsof -i @192.168.0.1   ※ interface指定
# lsof -i @192.168.0.1:80 ※ interfaceとポート指定

共有サーバ等で、急激にアクセスが増えた場合、どのDomainに対してアクセスが増えた
のか即時確認できる。

それ以外に、lsofの便利な利用方法として

# lsof -c http     ※プロセス名指定
# lsof -p 12345    ※プロセスID指定
# lsof -u hogehoge  ※ユーザー指定

こんな感じだな

続きを読む "ポート番号からの追跡" »

投稿時間: 09:56

owncloudのバージョンアップ後に「maintenance mode」と出てしまう。

個人的なテスト用にownCloudを導入していますが、最近バージョン5が出てきた。
早速バージョンアップしてみた。

ところが、バージョンアップ後にログイン画面には「maintenance mode」が出ていてログイン出来ない状態。
色々調べたら、メンテナンスモードになっているらしい・・・

/config/config.php の 'maintenance' => true, を 'maintenance' => false, に変更すれば良いらしい。

これだけで直った。

投稿時間: 13:48

トラフィック増加の原因と対策

先日から急激にトラフィックが増えていた件だが、原因が判明した。
やはりDNSの問い合わせが異常発生した為で有った。

先ず、tcpdumpでUDPパケットだけを拾ってみた。
# tcpdump -n -vvv -X udp -s1500 -i eth0
     ※ tcpdump -nX udp -i eth0 でも良さそうだけど・・・

00:21:14.646304 IP (tos 0x0, ttl 234, id 20378, offset 0, flags [none], proto: UDP (17), length: 56) 195.137.101.202.hp-managed-node > XXX.XXX.XXX.XXX.domain: [no cksum] 18592+ [1au] ANY? . ar: . OPT UDPsize=9000 (28)
0x0000: 4500 0038 4f9a 0000 ea11 87ed c389 65ca E..8O.........e.
0x0010: b630 19a9 017e 0035 0024 0000 48a0 0100 .0...~.5.$..H...
0x0020: 0001 0000 0000 0001 0000 ff00 0100 0029 ...............)
0x0030: 2328 0000 0000 0000 #(......

00:22:30.392590 IP (tos 0x0, ttl 238, id 27531, offset 0, flags [none], proto: UDP (17), length: 56) 85.92.53.200.62365 > XXX.XXX.XXX.XXX.domain: [no cksum] 46128+ [1au] ANY? . ar: . OPT UDPsize=9000 (28)
0x0000: 4500 0038 6b8b 0000 ee11 062a 555c 35c8 E..8k......*U\5.
0x0010: b630 19ab f39d 0035 0024 0000 b430 0100 .0.....5.$...0..
0x0020: 0001 0000 0000 0001 0000 ff00 0100 0029 ...............)
0x0030: 2328 0000 0000 0000 #(......

こんな感じで多数のアクセスが来ている
ザッと見た感じ、1秒間に50回から100回のアクセスが・・・

こんなんで80M近くのトラフィックが出るんだ・・・・
怖い怖い。

ってことで、対策が有るか調査してみた。
不正と思われる通信パケットには共通して
[1au] ANY? . ar: . OPT UDPsize=9000 (28)
が有る。

これでググってみると、同じようなことで悩んでいる人がいましたョ。

http://www.lancard.com/blog/2012/08/31/dns%E3%82%B5%E3%83%BC%E3%83%90%E3%81%B8%E3%81%AEany-%E3%81%AA%E9%80%A3%E7%B6%9A%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E5%AF%BE%E5%BF%9C/
※勝手にリンクはって申し訳ないです。

この方が行った対策は、iptablesで特定の文字列が有った場合にドロップする仕組みである。
最初は全てのソースIPを登録しようと考えていたがきりがないですね。

対策としては、上記のtcpdumpデータで30byte目以降のパターンを吸い上げて一致したらドロップする仕組みらしい。
これは、効き目がありそうだw

私の環境ではこのように設定してみた。
iptables -t raw -I PREROUTING -p udp --destination-port 53 -m string --algo kmp --from 30 --hex-string "|010000010000000000010000ff00010000292328000000000000|" -j DROP

設定直後、一気にトラフィックが減った。

それにしても、なんで ANY?  なんて言う問い合わせが来るんだ?
それも、1秒に50回以上も・・・
これは、攻撃の一種ですかね?

投稿時間: 00:17

dstat を試してみた

管理しているサーバのトラフィックが急激に増えてきた。
常時50M程度のトラフィックが発生。
でも何にこんなにトラフィックが発生しているのかが分からない。
そこで、簡単に通信量が目視出来るTOOLを探していた所、dstatと言うものがあるらしい。
通信以外にも、CPUやメモリ。 そしてDISK IOも見られるらしい・・・

CentOS5の場合、サクッとyumでインストール出来る

# yum install dstat

インストールが完了したら下記のコマンドで通信部分だけチェック

# dstat -n 5

ここで5と入れたのは、5秒ごとの表示ですね。

# dstat -n 5
-net/total-
recv send
0 0
462k 9415k
427k 9445k
517k 9579k
491k 8954k
434k 10M
493k 9878k
424k 8970k
474k 8813k
506k 9.8M
486k 8726k
484k 9677k
488k 9414k

瞬間的に80Mを超えている時も有る。
netstatでチェックしてもTCPでの通信が発生しているわけでは無い。
UDPで外部に対して公開しているのはDNSサービスのみ。

そこで、namedを一旦停止してdstatでチェック

# dstat -n 5
-net/total-
recv send
0 0
459k 18k
418k 35k
445k 33k
428k 21k
404k 19k

予想通りであるが、DNSの問い合わせで80Mも超えることって有るの?
至急原因を調査せねば・・・・

ちなみに・・・・
# dstat -Tclmdn 5

で出力すると、色々出てくるw

Terminal width too small, trimming output.
--epoch--- ----total-cpu-usage---- ---load-avg--- ------memory-usage----- -dsk/total->
epoch |usr sys idl wai hiq siq| 1m 5m 15m | used buff cach free| read writ>
1362201773| 20 4 70 5 0 1| 1.1 1.3 1.3|1129M 388M 5654M 803M|2853k 8963k>
1362201778| 1 0 98 0 0 0| 1 1.3 1.3|1129M 388M 5654M 804M| 0 139k>
1362201783| 1 0 98 0 0 0| 0.9 1.2 1.3|1126M 388M 5654M 806M| 0 218k>
1362201788| 21 5 73 0 0 1| 1.2 1.3 1.3|1124M 388M 5654M 808M| 0 6894k>
1362201790| 28 6 63 2 0 1| 1.2 1.3 1.3|1125M 388M 5654M 808M| 0 18M>

CSVとかで吐き出すことも可能なので、色々使い道がありそうだな。

投稿時間: 14:11

Dovecotの接続制限について

お客様から受信ができないよ〜〜〜 との、怒りの連絡が来た!
SWATCHで不正認証が有った場合、IPTABLESに10分間アクセスを禁止するルールを設けている。
もしかしてIPTABLESの問題かと色々調査したが、該当IPがロックされていない。

では、何故メールの受信が出来ないのか?

お客様に連絡をとり、送信の確認やWebの閲覧(該当サーバに設置しているコンテンツ)が出来るかをチェックしてもらうと問題ない。
ってことは、IPTABLESの問題ではないとの判断。
 ※不正認証が出ると、ソースIPからのアクセスを全て遮断する。

該当サーバに設定している確認用のドメインで送受信しても、こちらでは問題なく出来る。
っと言うことは、特定の環境でのみ発生する現象化も??

お客様に、他のドメインでの障害は無いか確認するが問題ない。
お客様の環境に依存(例えばPCやルーター等々)では無いことが解る。

では、何故???

色々調べたら、Dovecotでは1つのIPからのセッションを制限する機能が有るみたい。
初期状態では下記の通り・・・

■IMAPの場合は以下の通り、10が初期状態の制限値
#mail_max_userip_connections = 10

■POPの場合は以下の通り、3が初期状態の制限値
#mail_max_userip_connections = 3

これでは、数台PCがあると一発で駄目になる。
POPの場合、受信完了するとセッションを切るが、IMAPではセッションを掴んだまま・・・

っということで、IMAPに関してのみ対策を行うことにした。

dovecot.confに
mail_max_userip_connections = 30

とすることで、今までの3倍セッションを張ることが出来るようにしてみた。

これで、様子をみてもらうしか無いな・・・・

投稿時間: 19:09

Raspberry Pi のredsleeve

先日RaspberryPiにRedHat互換のredsleeveをインストールし、基本的な設定まで完了
していたが、死活監視サーバ(Nagios)として設定を行おうと思ったら、gccやらccが用意
されていない・・・
クロスコンパイルしか方法が無いのかな〜〜
嗚呼、めんどくえー

投稿時間: 19:03

もう1台の Raspberry Pi が到着

ModMyPiに注文したRaspberry Piが到着した。
先に購入したRaspberry PiはNagiosサーバにする予定だが、こちらはどうやって調理しようか・・・・

投稿時間: 01:12

redsleeveが起動した。

redsleeveを起動させたくて何度もDLしてみた。
WinでDLしたり、MacでDLしたり。
LinuxでwgetでDLも試みたが、全て起動しない現象が生じている。
もしかして、SDカードへのDD方法が悪いわけでも無く、DLが悪いわけでも無く、単純に配布しているarchiveが壊れているような気がしてならない・・・・。
そこで、起動するFedoraとRedsleeveのboot部分を見比べてみた。
おおよそ同じ感じたが、若干構成が異なるような気がする。
バイナリデータもあるので、比べようがない。
そこで、Fedoraに存在し、Redsleeveにあるものを差し替えてやってみた。

一番怪しいのは、bootcode.bin
Fedoraからbootcode.binを抜き出し、Redsleeveに入れてみた。
 ※Redsleeveのbootcode.binは念のためリネームしておいた。

差し替え完了後、SDカードをセットして電源OK!

ビンゴ!

このためだけに、数日間悩みに悩んだ。

でも、起動出来ている人たちと何が違うのだろうか???

投稿時間: 23:01

どうしてもredsleeveを動かしたくて〜

もう1台購入したことを考えると、慣れているRedhat系を安定稼働させてみたい。
Fedora17でも良いけれど、systemctlに慣れない・・・・

そこで、現在の構成(SDカードでboot、USBHDDにその他の領域)でUSBHDDだけを
redsleeveに入れ替えて(実際には異なるUSBメモリに入れてみた)起動してみた。

エラーは出るが起動した。
それもredsleeve 6.1 として表示されている。

って事は、redsleeveのboot部分に問題が有るようだ。

もしかしたら、なんとかなるかもしれないぞ!!

投稿時間: 00:54

衝動的に Raspberry Pi をもう1台注文

突然、2台目のRaspberry Piが欲しくなった。
今回はModMyPiにて注文。

ついでに「pIO - Raspberry Pi microSD Card Adaptor」も2枚注文。

本当はpIO - Raspberry Pi microSD Card Adaptorだけの予定だったが、Raspberry Piも一緒に購入してしまった。
どちらが本命か分からない・・・・w

投稿時間: 12:02

MK808を衝動買い

先日Raspberry Piの調査をするためNetを徘徊していたら、MK808と言うデバイスを見つけてしまった。
これは、Android端末になるらしく、HDMI接続で遊べるらしい。
MK802の存在は知っていたが、最近ではOSを入れ替えて使っている人たちが多いらしい。

こんな情報を知ってしまったら、買わないわけがない!!

迷わずAmazonで購入手配。

それは、昨晩届いていたが封を開けずにそのまま放置。

先ずはRaspberry Piを安定的に利用できるようにチューニングしなければ。。。

投稿時間: 01:03

Raspberry PiでBootのみSDカード

Raspberry PiにFedora17をインストールしたのだが、色々ネットで検索していると、SDカードのトラブルが多いらしい。
この端末は遊び用というよりは、低電力の死活監視サーバにしようと考えている。
※Nagiosをインストール予定

監視対象が増えればログの書き込みも増えるし、死活監視以外にもSSHの踏み台等々にしたいので、安定して利用出来る環境が欲しい。
SDカードでの運用では、いつ壊れるか分からない・・・・

そこで、BootのみSDカードに担当させ、その他はUSBのHDDにやらせることにしてみた。

/boot の中身を見てみると
arm128_start.elf
arm192_start.elf
arm224_start.elf
arm240_start.elf
bootcode.bin
cmdline.txt
config-3.2.27-1.20120926git9245b4c.rpfr17
config.txt
config.txt.hdmi_nooverscan
config.txt.hdmi_overscan
config.txt.ntsc_japan
config.txt.ntsc_northamerica
config.txt.pal
config.txt.pal_brazil
grub
kernel.img
start.elf
start.elf.desc

こんな感じ。

適当に中身を覗いてみると cmdline.txt にroot=/dev/mmcblk0p2 と言う記述が有る。
この部分を USBHDDに合わせてあげれば起動出来るはず。

そこで、現在のイメージをDDを使ってバックアップする。
dd if=/dev/disk1 of=fedora17-20121105.img bs=8m

こんな感じでバックアップして、USBHDDにDDで展開する。
dd if=edora17-20121105.img of=/dev/disk1 bs=8m

展開できたら、USBHDDを接続してSDカードで普通に起動してみる。
起動できたら、dmesgにてUSBHDDがどのように認識しているか確認する。

今回の例では /dev/sda2 で認識しているので、先程の cmdline.txt の root=/dev/mmcblk0p2 を
root=/dev/sda2 に書き換えてreboot

これで、bootのみSDカードに担当させ常に書き込みが実行される/boot以外の部分はUSBHDDで運用出来る。
但し、Raspberry PiのUSBは500mA程度の出力しか無いらしいので、別でバスパワーを供給出来る環境が必要らしい。

投稿時間: 01:01

Raspberry Pi の調理方法

Raspberry Piでは幾つかのLinuxをインストールすることが出来るらしい。
Raspberry Piで用意している「Raspbian」
チューニングを施しているので、GUIも速いらしい。
しかし、ベースがDebian。
ちょっと苦手なんだよね。

慣れているRedhat系で探していると、Fedora14や17。 そして、RedhatのARM版としてredsleeveなるものが有る。
試しにredsleeveを焼いてみるが、起動しない。
方法を変えたり、SDカードもいくつか試したがNG!

諦めてFedoraにしようとするが、17ではserviceが廃止になりsystemctlに切り替わっている。
今まで作成してきたスクリプトも書きなおさなければならないが、今後Redhat系OS(CentOS含む)
もこの内容に切り替わっていくのだろう!!
って事は、今のうちに慣れるしか無いな・・・・

ってことで、ARM版で最新のrpfr-17-xfce-RC3.zipをDLしてきてSDに焼いてみた。

一発で起動!

何を入れて遊ぼうかな・・・・

※でも、なんでredsleeveが起動しないのだろう??

投稿時間: 19:07

Raspberry Pi (Type B)    

6月30日に注文したRaspberry Pi (Type B)が昨晩(10月23日)に届いた。

DSC_1314.JPG

どうやって料理するかな・・・。

投稿時間: 23:56

Apacheのエラー(child pid XXXX exit signal Segmentation fault (11))未だに回避できていない

半年以上前からこの「child pid XXXX exit signal Segmentation fault (11)」エラーで悩まされている。
coredump取っても手がかりが掴めない。
唯一解っているのはapr_password_validateが問題らしい。

共有サーバで300程度のドメインを管理しているサーバなのだが、Logを調査しても問題となりそうな記述は残っていない。
apr_password_validateはUSER認証系なので、ベーシック認証を行っているところが問題となっているらしいのだが、.htpasswdが存在するドメインのアクセス及びエラーLogを見ても、怪しい記述が無い。

粗毎日、AM7~AM8の間でエラーが出ているので、もしかするとロボットの巡回でトラブルが出るのかも??
現在は、SWATCHでLogを監視し、「Segmentation fault (11)」が発生したらApacheを再起動する方法で対処している。
でも、たまに正常起動できないときがあるんだよな~

投稿時間: 14:11

Linode(VPS)で時間がズレる 其の2

やっぱりズレる
なにかのタイミングでズレる。

色々調べていたら、/etc/sysconfig/clock の表記がUSになっているぞ!
犯人はこれか?
ZONE="Asia/Tokyo" に書き換えてやったぜぇ〜

投稿時間: 17:19

PEARのインストール状況を確認する方法

PEARのインストール状況は一般的に

# pear list

にて行うが、細かい情報を見る場合は、Webから見ると便利だと思います。
そこで、色々調べたら簡単に出来るらしい。

先ず、

# pear install PEAR_Info

にて、モジュールのインストール。
そして、Webからアクセス出来る領域に

# vi install_info.php
<?php
date_default_timezone_set("Asia/Tokyo"); → 新しめのPHPの場合は必須
require_once('PEAR/Info.php');
$info =& new PEAR_Info();
$info->show();
?>

これで、幸せになれます。

 ※<>は<>に読み替えて下さい。

投稿時間: 16:03

MT-4.27-jaでCrypt::DSAが有効にならない。

最近、サーバーのReplace(CentOS6.2)を行った環境に古めのMTの移植をお願いされることが多い。
CentOS6.2の場合、yumでインストールすると「perl-Crypt-DSA-1.17-1.el6.noarch」が入る。
でも、認識しない。
Google先生に確認してみると、MTで標準で持っているBigInt.pmが読み込まれてしまうらしく、無効となってしまうようだ。
そこで、ディレクトリごと削除すれば良いのだが、ちょっと怖いのでリネーム

# mv Math _Math_

または、BigInt.pmのリネーム

# Math/BigInt.pm Math/_BigInt.pm_

再度mt-check.cgiを確認すると、無事認識!

でも、なぜ標準で無効になるような設定になっているのだろうか・・・

投稿時間: 20:38

メール転送方法 其の1 Postfix(Maildir)

今更ながら、メールの転送方法を書くつもりは無かったが、お客様が大きな間違いをしていて、転送さきにしかメールが届かないとクレームが来たので、とりあえず書いておこう!!
※俺のお客様が見ていたらちょっと困るけど・・・w

今回はPostfixの転送の仕方。
PostfixはSendmail互換MTAなので、Sendmailで使われていた[ .forward ] が使われている。
現在MTAを構築するにあたり、全てMaildir型式にしているため、[ .forward ] の記述の方法が異なる。

例として、USER名をhogehogeとして説明。

先ず、USERのディレクトリまで降りる
# cd /home/hogehone
# ls
Maildir

同一階層に下記コマンドで[ .forward ] を作成
# touch .forward  →  作成
# chown hogehoge:hogehoge .forward  →  所有権をUSERにする
# chmod 600 .forward  →  パーミッションを他人が利用できないようにおまじない!

出来上がった、.forwardに転送設定を行うのだが、方法が2つ。
転送のみ行うのであれば、転送するメールアドレスを記述
# vi .forward
hogehoge2@example.com

この1行を記載するのみ。
しかし、これではhogehoge2@example.comに転送されるだけで、hogehogeのMailBoxにはメールが残らない。
そこで、メールを残しつつ、転送する方法は以下のとおり。
# vi .forward
hogehoge
hogehoge2@example.com

この2行だけで、対応出来る。
非常に簡単ですね。

しか〜〜〜し
今回問題となった転送方法は[ .forward ] を使わずに転送していた。
詳しく説明すると、aliasesを使って転送を行っていたため、転送は行うものの本人には一切メールが届かない。
aliasesに下記の記述があった・・・
hogehoge:hogehoge2@example.com

これでは、転送しか出来ないよね。
でも、ネットで調べてもaliasesの編集方法よりも、[ .forward ] の設定のほうが圧倒的に多いはずなのに・・・

次回は、qmailの転送方法を説明します。
いつになるかは未定ですw

投稿時間: 13:42

Apacheの接続数を増やす

初歩的な件であるが、念のため書いておく・・・・

CentOSでyumにてhttpsをインストールした時のデフォルトが


StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

の様になっている。

例えば、同時接続を512まで引き上げる場合、[MaxClients]を変更すれば良いのだが、そのままでは下記のエラーが出る

# /etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: WARNING: MaxClients of 512 exceeds ServerLimit value of 256 servers,
lowering MaxClients to 256. To increase, please see the ServerLimit
directive.
[ OK ]

合わせて[ServerLimit]も同数に設定することで、エラー無しで起動します。


StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 512
MaxClients 512
MaxRequestsPerChild 4000

まー [StartServers] [MinSpareServers] [MaxSpareServers]も多少変更することで、レスポンスも良くなるが、増やし過ぎるとメモリ食いつぶして落ちてしまうかもしれないので、要注意です。

投稿時間: 17:35

最近のPostfixやDovecotは・・・

ここのところCentOS6.2でのサーバー構築が増えてきたが、設定するたびに仕様が異なっているような気がしている。
今回の現象は、WindowsXPのOutlookExpress6で送信は問題ないが、受信の際にパスワードを要求され受信が出来ない現象。
他のメーラーでは問題ないが、何故かOutlookExpress6では出てしまう。

PostfixやDovecotの設定を確認しても、今までCentOS5.xで設定してきた環境とさほど変わりない。
Logを確認すると、下記のログが多発している。

Disconnected (tried to use disabled plaintext auth):

plaintextのパスワードでは認証出来ないとなってるが、今までこのようなログが出たことは無いし、現象も出たことが無い。
Google先生に聞いてみると、CentOS6.xで使われるDovecotではデフォルトではplaintextは使えない仕様になっているらしい。

確かに、セキュリティを考えるとplaintextの認証は非常に危険な行為。
でも、plaintextを使わなくてはならない場合も多いはず(多分!)

って事で、サクッと対応。

/etc/dovecot/dovecot.conf に

disable_plaintext_auth = no

を付け足すだけで、スルスルと認証できた。

最近は、SSL証明書も安くなってきてるし、証明書を購入しなくとも独自証明書(勝手証明書)でも利用できるので、最近はSSL対応で構築していたので気にならなかったが、改めてSSL認証抜きでメールサーバを構築してみると色々を変わってきていることに気がつく。

でも、皆はどの様にメールサーバの構築を行なっているのだろうか?
SSL認証は標準で設定しているのかしら・・・  

投稿時間: 00:35

Plesk10.4(Postfix)で587ポートでTLS通信になってしまう件

先日、Plesk10.4を触る機会が有ったのですが、MTAにPostfixが設定されている環境。
PleskでSubmission対応にチェックを入れるも、TLS通信になってしまう。

master.cfを除いてみると、標準でTLS通信になっている。
PleskでSSL/TLSのコントロール出来ないのかよ!!

って事で、サクッと設定変更。

【変更前】
[root@plesk10 ~]# grep smtpd_tls_security_level /etc/postfix/master.cf
submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_proxy_filter=127.0.0.1:10025

【変更後】
[root@plesk10 ~]# grep smtpd_tls_security_level /etc/postfix/master.cf
submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_proxy_filter=127.0.0.1:10025

変更箇所は「smtpd_tls_security_level=encrypt」から「smtpd_tls_security_level=may」に変更

Postfixのrestartを行えば、TLS無しで通信可能となる。

投稿時間: 11:22

ディレクトリの容量確認

いつもながら、コマンドを忘れるため都度調べている・・・・w
常に使うものではないためGoogle先生に聞いていたw

ディレクトリの容量確認

du -hx --max-depth=1 <パス名>

こんな感じで簡単に出来る。

続きを読む "ディレクトリの容量確認" »

投稿時間: 19:01

CentOS6.2でMySQL5.5&PHP5.3を使いたい

最近CentOS5.x設定する場合は、MySQLとPHPは標準パッケージではなく、remiを使っているのだが、そういえばCentOS6.2では標準のまま使っていたな〜   っと言うことで、パッケージで入れられる最新版を入れてみた。


手順はCentOS5.xと略同じ
epel-release-6-5.noarch.rpm と  remi-release-6.rpm をGoogle先生で検索して適当にGET
そしてインストール。

ここまで行けたら、
yum -y install httpd httpd-server
yum -y install --enablerepo=remi php-mysqlnd
yum -y install --enablerepo=remi mysql mysql-server
yum -y install --enablerepo=remi php
yum -y install --enablerepo=remi php-pecl-mysqlnd*

こんな感じで、インストール完了っす。

phpinfoに関しては、PHP5.3から以下のようにする必要が有るらしい〜〜

<?php
date_default_timezone_set("Asia/Tokyo");
phpinfo();
?>
 ※<>は<>に読み替えて下さい。

続きを読む "CentOS6.2でMySQL5.5&PHP5.3を使いたい" »

投稿時間: 18:03

Linode(VPS)で時間がズレる

TEST環境で借りたLinodeのVPSですが、何度localtimeを設定してもデフォルトに戻ってします。
今まではこんな感じ

# rm /etc/localtime ← 一旦削除
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime ← シンボリックリンクを張り直す

でも、何かのタイミングで戻ってしまう。
理由は不明・・・

そこで、Linodeのドキュメントサイトで検索すると
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

これでやってみろとの事!

しばらく様子見ですな。

投稿時間: 17:50

Linode(VPS)でiptablesを使うとsecurity raw nat mangle filter[FAILED]になる件

知り合いからLinodeのVPSを借りるので、TESTして欲しいとの要望が有った。
初めて利用するVPSなので戸惑いも有ったが、XenベースのVPSなので問題ないと軽く見ていたが、iptablesの設定でハマってしまった。

ガッツリiptablesを組むと、下記のerrorが出る。

Setting chains to policy ACCEPT: raw nat mangle fi[FAILED]

ルールの間違いと思い何度も見直すが問題ない。
もしかして、VPSなだけにある程度制限を掛けている可能性も有るのかな?
Kernelの問題も有るそうなので、Kernelも色々入れ替えてみたりしても全くダメ〜

Google先生に聞いても、有力なサイトがHITしない。

調査すること数時間!

避けていた中国語のサイトをなんとなく見てみると、
「Linode出现security raw nat mangle filter[FAILED]解决方案」 こんな表題

http://www.daiweihu.com/article/Linuxfuwuqipeizhi/2012/0207/3.html

/etc/init.d/iptables の設定を変更(追加)することで、解決する感じ。
中国語はわからないが、なんとなく感でやってみた。
今回の環境では142行目の
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
case "$i" in
raw)
$IPTABLES -t raw -P PREROUTING $policy \
&& $IPTABLES -t raw -P OUTPUT $policy \
|| let ret+=1
;;
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
となっている所を、
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
case "$i" in
security)
$IPTABLES -t security -P INPUT $policy \
&& $IPTABLES -t security -P OUTPUT $policy \
&& $IPTABLES -t security -P FORWARD $policy \
|| let ret+=1
;;
raw)
$IPTABLES -t raw -P PREROUTING $policy \
&& $IPTABLES -t raw -P OUTPUT $policy \
|| let ret+=1
;;
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

こんなふうに付け足してみたら、あっさりと解決。
恐るべし中国www

投稿時間: 19:34

tcp_wrappersの応用設定

いつも設定していながらも、忘れてしまい過去に設定を行ったサーバに接続して内容を確認していたが、面倒になったのでメモ!
 ※ドキュメントに記載しているが、探すのが面倒・・・w

何をしたいかというと、アクセスが有った際に管理者に通知が届くようにしたい。
不正アクセスの把握にも役立つので、設定は必須。

どの様に設定を行えばよいかというと、通常の設定ではhosts.allowに

sshd :xxx.xxx.xxx.xxx ← 実際にはアクセスさせるIPアドレスを記述

こんな感じでアクセスを許可させるが、設定した内容でアクセスが有った場合、管理者へメール通知することが出来る。

具体的にはこんな感じ

sshd :xxx.xxx.xxx.xxx :spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/Mail account@hogehoge.jp -s "[tcpd] Access from %h to %s") &

こんな感じで記述すると、アクセスが有るたびに、access元のIPが記載されたメールが飛んでくる・・・

意外と、便利!!

投稿時間: 11:11

FirefoxとThunderbirdのアドオン

最近Mozilla系のUPDATEが頻繁にあり、アドオンが使えない状況になる場合が多い。
そこで、非対応のアドオンでも利用できるように裏技が有るらしい。


例えば・・・Thunderbirdの場合。

[ツール]→[オプション]を押すとオプションダイアログが起動。
[詳細]→[一般]→[高度な設定]→[設定エディタ]を押す。
[細心の注意を払って使用する]を押す。
リスト内の何もない部分で右クリック→[新規作成]→[真偽値]を押す。
設定名に「extensions.checkCompatibility.バージョン」を入力。
今回はThunderbird10.1なので、「extensions.checkCompatibility.10.1」に設定。
真偽値に「false」を選択。
全てのダイアログを閉じて、Thunderbirdを再起動。

これで立ち上がってくると、全てのアドオンが使えるようになっているはず・・・・

投稿時間: 10:36

Linuxの起動スクリプト

ここ最近、オリジナルのデーモンを動かすことが多くなってきた。
サーバの再起動は行わないが、念のため起動スクリプトを作ってみた。

今までも、起動スクリプトは作成していたが、都度作成していたので、応用の利きそうなものを作成してみた。


++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/sh
#
# デーモン名
#
# chkconfig: 345 99 01  ← 用途や依存関係に気をつけて値を決める
# processname: デーモンName
# description: 適当に・・・w

PROG=/usr/local/bin/XXXXXXXX
PROGNAME=XXXXXXXX
LOCKFILE=/var/lock/subsys/$PROGNAME

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
if [ ${NETWORKING} = "no" ]
then
exit 0
fi

start() {
echo -n "Starting $PROGNAME services: "
daemon $PROG -p 1022 &
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $LOCKFILE
return $RETVAL
}

stop() {
echo -n "Stopping $PROGNAME services: "
killproc $PROGNAME
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $LOCKFILE
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $PROGNAME
;;
restart|reload)
stop
start
;;
*)
echo "Usage: $PROGNAME {start|stop|status|restart}"
exit 1

esac

exit $RETVAL
++++++++++++++++++++++++++++++++++++++++++++++++

これをフォーマットにすれば、余計な時間を取られずに済むな・・・・

投稿時間: 16:20

コマンドでSSLのバインドを構成する

またまたWindowsのSSL証明書ネタw

最近15サイト分のワイルドカード形式のSSL証明書を申請した。
枯渇しているIPを消費させない一つの方法です。
申請は*.hogehoge.jp等の様に、1つのドメインに対してのワイルドカードで有って、異なるドメインで使えるものではありません。(※念のため・・・)
しかし、良い面だけでは有りません。
古めのブラウザ(IE6)や携帯端末では認識しない場合も有るようです。

IISの場合、非常に簡単で、1つ目のサイトは普通にバインドさせる。
2つ目以降のサイトに関してはコマンドにて設定していくのだが、覚えてしまえば非常に簡単。
でも、覚えの悪い俺はメモることにしたw

参考サイト
http://cspssl.jp/support/install_iis7_bind_cui.html

上記サイトの例ではIPを指定していないが、実際にはIPを入れて設定することになる。

先ず、現在の設定を確認

c:\Windows\System32\inetsrv>appcmd list site
SITE "Default Web Site" (id:1,bindings:http/192.168.0.11:80:www.hogehoge.jp,https/192.168.0.11:443:cspssl.com,state
:Started)
SITE "www2" (id:2,bindings:http/192.168.0.11:80:www2hogehoge.jp,state:Started) ← ここ(www2)にはSSL証明書が割当たっていない。

コマンドで、強制的にバインドさせる

c:\Windows\System32\inetsrv>appcmd set site /site.name:"www2" /+bindings.[protoco
l='https',bindingInformation='192.168.0.11:443:www2.hogehoge.jp']
SITE オブジェクト "contact" は変更されました

再度バインドの状態を確認

c:\Windows\System32\inetsrv>appcmd list site
SITE "Default Web Site" (id:1,bindings:http/192.168.0.11:80:www.hogehoge.jp,https/192.168.0.11:443:www.hogehoge.jp,state
:Started)
SITE "www2" (id:2,bindings:http/192.168.0.11:80:www2.hogehoge.jp,https/192.168.0.11:443:www2.hogehoge.jp,state:Started)

これで出来上がり!

同一ドメインで複数サイトがある場合は、これを繰り返すだけ。

投稿時間: 12:17

SSL証明書の4階層クロスルート方式

最近Windowsを触る機会が多いのだが、覚える気が全くない俺はやったことを直ぐに忘れてしまうので、メモって置くことにした。

お客様でSSL証明書にVeriSignやCybertrustを利用していたが、コスト削減のため、安い証明書を好むような傾向が有る。
しかし、スマートフォンの普及によりダメダメな証明書では使い物にならない。

最近はRapidSSLを申請する機会が置いのだが、古い携帯端末でも新しい携帯端末でも利用出来るような複数の証明書(中間証明書)を入れることが出来るようだ。

やり方は簡単で、2つの中間証明書を1つのファイルでまとめてサーバに読み込ませるだけ!
方法は割愛するが、下記のサイトに詳細が出ている。
http://valuessl.net/support/etc/rapidsslre_cross/index.php

設定したら、正常に動作しているかをチェッカーでチェックすることをオススメする!

http://valuessl.net/support/checker.php

投稿時間: 12:00

EC-CUBEのエラー

先日、EC-CUBEをインストールした際にエラーが出た!

Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /var/www /html/eccube/data/class/util/GC_Utils.php on line 221

こんな感じのエラーだったが、Google先生に確認すると、直ぐに対策が解った。

今回のサーバでは、CentOS5.7+PHP5.3.8の構成でエラーが出た。
php.iniに細工をすると直るらしい。

修正箇所は以下のとおり。

php.ini の [Date] セクションにtimezoneを設定するだけ。

[Date]
date.timezone = Asia/Tokyo

そしてApache再起動!

php5.1とかではこんな設定したことなかったけど、EC-CUBE側の仕様変更なのかな???

投稿時間: 11:53

OpenSSL(Linux)で作成したSSL証明書を変換してIISへ

Linux(Apache)からWindows(IIS)に乗り換えたお客様が居る。
今時Windowsなんて使ってもね〜〜っと思いながらも、お客様の依頼なので仕方がない。

コンテンツ(Linuxで動いていたPHP+PostgreSQLをWindows版PHP+MSSQLに焼き直し)を再構築して、やっと動くようになった。
無理にWindows版PHPに焼かずに.netで再構築すれば良いと思うのだが、俺の周りには.netに詳しいプログラマーがいないw
やってやれないことは無いが、PHP同士の移植の方が簡単で工数も少なく、トラブルも少ないとの結論に至った。

ま〜 ここまでは、俺の担当では無いので詳細は割愛!!

本題のSSL証明書の変換だが、Google先生に聞いてみると意外に情報が少ない。
しかし、方法は一発のコマンドで変換できてしまう。

忘れないように、また同じような事はあった時の為にメモ!

Linuxの場合は、keyとcrtの2段構えで構成されている。
Windowsの場合はPKCS#12 形式。

コマンドでサクッと変換してみましょ。

OpenSSLがインストールされたLinuxで下記を実行

# openssl pkcs12 -export -in DOMAIN.crt -inkey DOMAIN.key -out DOMAIN.p12

これだけで変換完了。
出来たPKCS#12 形式をWindowsへ転送して、読みこませれば完了!


■参考にしたサイト
 http://support.citrix.com/article/CTX108031

投稿時間: 11:38

Apacheのエラー6

本日連続してsignal Bus error (7)の為Apacheが再起動された。
コンテンツは問題無く表示(稼働)しているが、なんか気持ち悪い・・・・

バーチャルドメインのログを見ても、それらしきものは残っていない〜

coreが吐かれていたので、内容を確認したが以前と同じ・・・
(gdb) where
#0 0xb7bca697 in memset () from /lib/libc.so.6
#1 0xb7e987ab in apr_password_validate () from /usr/lib/libaprutil-1.so.0
#2 0xb7843bda in __cxa_finalize () from /etc/httpd/modules/mod_authn_file.so
#3 0xb7f11c6e in __cxa_finalize () from /etc/httpd/modules/mod_auth_basic.so
#4 0xb7f52a0d in ap_run_check_user_id ()
#5 0xb7f53d17 in ap_process_request_internal ()
#6 0xb7f6763b in ap_process_request ()
#7 0xb7f643ef in ?? ()
#8 0xb7f5fa0d in ap_run_process_connection ()
#9 0xb7f5fb0c in ap_process_connection ()
#10 0xb7f6c694 in ?? ()
#11 0xb7f6c9a1 in ?? ()
#12 0xb7f6d3a3 in ap_mpm_run ()
#13 0xb7f43157 in main ()


怪しいのは
mod_auth_basic.so
mod_authn_file.so


ここのところ、phpMyAdminに対しもログが残っている。
phpMyAdminのディレクトリにはベーシック認証を施している。
もしかすると、ベーシック認証を破る攻撃がなされば場合にApacheに不具合が出るのかもしれない。
しかし、ググッてもそれらしき情報が無いため、対策が打てない!
地道に攻撃元IPをブラック化(iptablesで破棄)するしか無いだろうな〜〜

投稿時間: 17:56

Apacheのエラー5

昨晩、下記のログを吐いていた。

[Tue Nov 08 02:08:31 2011] [notice] child pid 27500 exit signal Segmentation fault (11)

しかし、swatchで感知しないw
設定ファイルには watchfor /signal Bus error (7)|signal Segmentation fault (11)/ のように記述しているが。。。。
何か、問題でも??

って事で、watchfor /signal Bus error|signal Segmentation fault/ こんな感じにしてみた。

それと、昔NICが死んでしまう現象があり、その時にお対策を行った事が有ったが、logrotateする際に、古いLogDATAを読み続けてしまう現象が有った。
今回のLogはApacheのログなので、logrotateした後にswatchを再起動するようにして、logrotateした後の新しいLogを参照するように追記してみた。

------------------------------------------------------------------------------------------
/var/log/httpd/*log {
weekly
rotate 13
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
------------------------------------------------------------------------------------------
↓ ↓ ↓
------------------------------------------------------------------------------------------
/var/log/httpd/*log {
weekly
rotate 13
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
/etc/rc.d/init.d/swatch restart  ← ここ
endscript
}
------------------------------------------------------------------------------------------

これで、再度様子みてみようか・・・

投稿時間: 13:24

Apacheのエラー4

その後、何故かわからないが不具合が出ない・・・w
良いことではあるが、せっかくswatchを仕掛けたのに〜〜

ちょっと時間が有ったので、ここ最近追加したドメインの配下を見てみたら、htdocsの下にcoreが吐かれてる。
findで検索すると、他のドメインでもcoreが吐かれてるドメインが有る。

今度、エラーが出てSwatchでApacheが再起動すればメールが飛んでくる。
そのタイミングで、各ドメイン配下にcoreが有るか確認すれば、追求出来るかも!!
※ドメイン配下に有ったcoreは調査する前に削除していたので、次回発生しないと調べられないw

投稿時間: 00:11

Apacheのエラー3

その後、何度かcoreを吐くが、全く原因が掴めず。
このままでは、相当やばい!

って事で、
child pid XXXX exit signal Segmentation fault (11)
とか
child pid XXXX exit signal Bus error (7)
を吐いたら、Apacheを再起動するようにしてみた。

早速、swatchを導入。
通常 /root/.swatchrc に記述するようになっているが、これでは管理しにくいので、 /etc/swatch に設定ファイルを置いて動くようにしてみた。

# mkdir /etc/swatch
# cd /etc/swatch
# vi error_log.conf
----------------------------------------------------------------------------------------
#logfile: /var/log/httpd/error_log

watchfor /signal Bus error (7)|signal Segmentation fault (11)/
echo
mail admin@hogehoge.jp,subject=[Alert] Apache Restart!!
exec /etc/rc.d/init.d/httpd restart
----------------------------------------------------------------------------------------

こんな感じで設定。
swatchは標準で起動スクリプトが用意されていないので、色々調べてこんな感じで作ってみた。

----------------------------------------------------------------------------------------
#!/bin/sh
#
# Swatch
#
# chkconfig: 345 90 35
# description: swatch log monitoring
#

SWATCH=/usr/bin/swatch
LOCKFILE=/var/lock/subsys/swatch
CONFPATH=/etc/swatch
PROCFILE_PATH=/var/run
CONFFILE=*.conf
WORKPATH=/tmp
LOGFILE=/var/log/swatch/swatch.log

. /etc/rc.d/init.d/functions

start()
{
RESULT_CODE=0

if [ -f ${LOCKFILE} ]; then

echo "Swatch is already running."
exit 1

else

touch ${LOCKFILE}

fi

PROCCOUNT=0

for CONFIGFILE in ${CONFPATH}/${CONFFILE}
do
if [ -f ${CONFIGFILE} ]; then

PROCCOUNT=`expr ${PROCCOUNT} + 1`

TARGET_LOG=`head -1 ${CONFIGFILE} | awk 'BEGIN { FS = ":" }; { sub(/([ \t]+$|^[ \t]+)/, "", $2); print $2 }'`

echo -n "Starting swatch: ${TARGET_LOG}: "

daemon ${SWATCH} \
--config-file ${CONFIGFILE} \
--tail-file ${TARGET_LOG} \
--script-dir=${WORKPATH} \
--awk-field-syntax \
--daemon \
--pid-file ${PROCFILE_PATH}/swatch.${PROCCOUNT}.pid \
2>> ${LOGFILE}

RETVAL=$?
echo

if [ ${RETVAL} != 0 ]; then

RESULT_CODE=${RETVAL};

fi

else

RESULT_CODE=7

fi

done

return ${RESULT_CODE}
}

stop()
{
if [ -f ${LOCKFILE} ]; then

for PID in ${PROCFILE_PATH}/swatch.*.pid
do
if [ -f ${PID} ]; then

PID_NUMBER=`cat ${PID}`

echo -n "Shutting down swatch (pid ${PID_NUMBER}): "

killproc -p ${PID}
RETVAL=$?

rm -f ${PID}

echo

else

RETVAL=7

fi

done
fi

rm -f ${LOCKFILE}
rm -f ${WORKPATH}/.swatch_script.*

return ${RETVAL}
}

status()
{
if [ -f ${LOCKFILE} ]; then

echo -n "Swatch (pid :"

for PID in ${PROCFILE_PATH}/swatch.*.pid
do
if [ -f ${PID} ]; then

echo -n " `cat ${PID}`"

fi

done

echo ") is running."

else

echo "Swatch is stopped."

fi

return 0
}

case "$1" in

start)
start
RETVAL=$?
;;

stop)
stop
RETVAL=$?
;;

restart)
stop
start
RETVAL=$?
;;

status)
status
RETVAL=$?
;;

*)
echo "Usage: swatch {start|stop|restart|status}"
exit 1
esac

exit ${RETVAL}
----------------------------------------------------------------------------------------

これを
chkconfig --add swatch
して
service swatch start
して
chkconfig swatch on
こんな感じ!

これで、ちょっと様子見だな。

投稿時間: 01:08

Apacheのエラー2

coreを吐かせても、解決策が分からない。
ましてや、どのドメインが問題なのかも分からない。

coreを吐いた時刻付近のログを調べたいが、150以上のドメインのログを見ていくのは辛い。
そこで、何か良い案は無いかと、知恵を絞ってみた。

 grepコマンドで絞れそうな気がしてきた

現在、バーチャルドメインのディレクトリは /home/virtualdomain/ドメイン名 としている。 その配下にlogsを作成し、ドメインごとのログを取っている。
ターゲットは/home/virtualdomain/ドメイン名/logs/error.log だ!

多分こんな感じで行けるのかな?? と、やってみたら簡単に抽出できた。

grep "Wed Nov 02 06:52" /home/virtualdomain/*/logs/error.log

コンソールにはズラズラズラと出るが、分かり難い

そこで、抽出したデータを/tmp/error.dumpに書きだしてみる。

grep "Wed Nov 02 06:52" /home/virtualdomain/*/logs/error.log > /tmp/error.dump

すべてのドメインの error.log から、"Wed Nov 02 06:52"にHITするものが一目で見られるが、それらしきエラーは無い!
時間を変更して抽出しても、怪しい書き込みが無い・・・・

あらら。。。 お手上げだ〜〜〜

投稿時間: 23:18

Apacheのエラー1

最近
child pid XXXX exit signal Segmentation fault (11)
とか
child pid XXXX exit signal Bus error (7)
のエラーを吐いて、静的データは動いても、動的データでエラーが出るようになった。

複数のドメインを管理しているため、ログは各ドメイン配下に書き込まれる。
大元のログには、上記内容のみの記述しか書き込まれない・・・・

頻繁に発生するので、coreを吐かせるように設定してみた。

先ずは、ulimit設定確認

# ulimit -a
core file size (blocks, -c) 0  ← ここ
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 143360
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 143360
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited


これでは、ダメなので /etc/profile の値を書き換えて、無制限にしてみた。

# ulimit -a
core file size (blocks, -c) unlimited ← ここ
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 143360
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 143360
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited


apacheの設定に下記の記述を追加
CoreDumpDirectory /tmp

そして、Apache再起動
これで、準備OK!!


数日経ったある日、Apacheが死にやがった!
/tmpにはcore.XXXXが複数存在する。

このデータは生の状態では見られないので、gdbコマンドで見る必要が有る。

gdbコマンドはこんな感じで実行する。

gdb -c <(core)file>

それでは、実際に見てみよう
gdb /usr/sbin/httpd -c /tmp/core.28778

ずらずらずら〜〜〜っと出てきて、意味不明w
そこで where と打ってみると、見やすくなるらしい

(gdb) where
#0 0xb7b8f697 in memset () from /lib/libc.so.6
#1 0xb7e5d7ab in apr_password_validate () from
/usr/lib/libaprutil-1.so.0
#2 0xb7808bda in __cxa_finalize () from
/etc/httpd/modules/mod_authn_file.so
#3 0xb7ed5c6e in __cxa_finalize () from
/etc/httpd/modules/mod_auth_basic.so
#4 0xb7f17a0d in ap_run_check_user_id ()
#5 0xb7f18d17 in ap_process_request_internal ()
#6 0xb7f2c63b in ap_process_request ()
#7 0xb7f293ef in ?? ()
#8 0xb7f24a0d in ap_run_process_connection ()
#9 0xb7f24b0c in ap_process_connection ()
#10 0xb7f31694 in ?? ()
#11 0xb7f319a1 in ?? ()
#12 0xb7f323a3 in ap_mpm_run ()


意味はわからないが、ベーシック認証系のエラーっぽい。
確かに、動的データが死んだ時は、ベーシンク認証でID&PASSが通らない。

何故、こんなエラーがでるんだ??

投稿時間: 20:00

ARTiGOのOS入れ替え+OpenVZ再設定

しばらくCentOS5.xを利用してきたが、そろそろ最新のOSを試したくなってきた。
virtualOSで最新を使えば、事は足りるのだがなんとなくHWのOSも最新にしたくなったw

Fedoraの最新版でも良いのだが、サーバとして使うには、ちぃと面倒有る。
なので、RHEL6系のOSを選択したいのだが、最近では「Scientific Linux6」を使う人が増えているようだが、今回も「CentOS6」をインストールしてみよう。

既存の環境から適当にバックアップを取り、玄箱PROのFileServerへ保存。

そして、ARTiGOにモニタ・キーボード・マウスを接続して再インストール!

続きは後ほど・・・

投稿時間: 23:21

scpの転送速度に付いて、何となくメモ!

ホスト間のデータコピーで、scpを利用する機会が多いが、ssh通信ということで大きなデータは非常に時間が掛かる。
急いでいるときはftpを使ったりするが、ftpを開けていないホストも多い。

非常にイライラするときが有る。。。

そこで、sshで暗号化を掛けながら、高速に通信が出来ないか調べてみた。

sshの暗号化は下記の7個利用できるらしい。

3des-cbc     ← デフォルト?
blowfish-cbc
cast128-cbc
arcfour
aes128-cbc
aes192-cbc
aes256-cbc

通常

# scp data名 user名@host名(IP):/copyするディレクトリ名
  例> scp backup.tar user1@122.220.242.19:/tmp

と、するところを

# scp -c blowfish-cbc data名 user名@host名(IP):/copyするディレクトリ名

# scp -c aes128-cbc data名 user名@host名(IP):/copyするディレクトリ名
と、することで暗号化を変えられる。

全部を試した訳ではないが「arcfour」が速そうな感じ。
感覚的にはftpと変わらない速度が出るようだ。

どの程度の暗号化かも解らず、ちょっと怖い気もするが、ftpよりは安全だろうぅ

投稿時間: 19:45

FON2405E 入手

業務委託を受けている会社のスタッフから
「これ〜 いりますか? iPhone買ったら貰ったんですけど、自宅に無線ルーターあるので〜」

って事で、遠慮無く貰いましたw

さて、どうやって遊びましょうか〜

投稿時間: 23:59

SheevaPlugが起動しない・・・ その後

Sheevaplugが起動しないと解ってから、暇を見つけては色々やってみた

Win機からUSBのシリアル接続が出来ない(認識しない)ので、MacのバーチャルでVineを立ち上げ、openocdやらscreenで接続。

openocdは使いこなしていないが、screenでsheevaplugの状況が確認できた。
持っているWin機との相性の問題なのかな〜

って事で、SD BOOTでFedora12を使ってみたいので、u-bootの更新やKernelの更新をコツコツやってます。

投稿時間: 23:49

SheevaPlugが起動しない・・・

レポートは記載していなかったが、影でSheevaPlugをいじくりまわしていた。
しかし、やっていたのは届いてから2週間程度。

気がついたら、奥のほうにしまいこんでました。

仕事の時に、小型アプライアンス機器を検索していたら、玄柴やOpenBloks600などがHit!!
そういえば、SheevaPlugを所有していたことを思い出し、引っ張り出してきた。

電源を入れて、LED点灯。

Winマシンに関連ドライバーを入れるも、SheevaPlugを認識しない。

色々調べるとデフォルトのファームウェアは色々と問題を抱えていて、起動出来なくなるバグが有るらしい。

完全にレンガ状態になったと諦めていたら、OpenOCDを利用すると、問題有りのファームを直接書き換えられるらしい〜

Fedora13(12でも可能らしい)では、yumでインストール出来るらしく、簡単に環境整備が出来るらしいが、余ってるマシンが無い・・・・w

あっ! Fedora12をインストールした玄箱HGは使えないかな?

投稿時間: 13:14

MZK-W04NUのOpen-WRT化 其の4

OpenWRTのファームに入れ替えて数日経過したが、Wi-Fiが頻繁に切れる。
標準ファームでも切れるとの評判を聞いていたが、カスタムファームでも切れている。

これって、ファームの問題では無くて、チップ(ボード)その物の問題かもね。

導入したファームよりも新しいファームが出ていたので、時間が有るときにでも入れ替えてみよう。
ファームの不具合なら改善の余地はあるが、機器その物の問題ならどうにもならないね。

投稿時間: 00:30

玄箱PRO Fedora12化 其の3

sambaも無事動いたので、iTunesサーバ(daapd)を入れるのだが、Fedoraではrpmが容易されている。
今まで使っていたバージョンとは若干異なるが、動けば何でも構わない。

って事で、サクッとrpmをインストール。
前に使っていたconfigを参考に、設定を行えばすぐに使えるようになった。

rpmは簡単で良いね~

投稿時間: 23:59

玄箱PROもFedora12化 其の2

先日、玄箱PROをFedora12化し、samba等々をソースからインストールしたが、OSの再起動
をしたら、sambaが起動しなくなってしまった。
ログやconfigを確認しても、原因解らず・・・・

本来、原因を追及すべきだが自宅のFileServerなので、調べるよりも再インストールの方が早そう!
って事で、ディスクを綺麗にして再度Fedora12化を行った。

手順は前回同様だが、今回はインストール済みのsambaを使ってみることにした。

smb.configを設定し、sambaを起動!!
問題無く起動し、データの閲覧も可能。

sambaを停止・起動・再起動を繰り返しても、問題無く動く。
念の為、ハードの再起動を行っても、正常にsambaは起動される。

もしかしてソースから作った事による不具合が有ったのかもしれない。

まー 最新のsambaで無ければならない訳では無いので、これでも良いかも。
rpmでインストールされてれば、管理も簡単だし~

投稿時間: 00:40

玄箱PROもFedora12化

やっと玄箱PROもFedora8のデータバックアップが出来たので、Fedora12に入れ替えてみた。
入れ替えはココのソースを利用させてもらいました。

手順も表記の通り事項で、簡単にインストール完了。

インストール後、開発環境をインストールして、sambaのインストールを行う。

今回インストールするのは最新の安定版の「samba-3.5.4.tar.gz」

# tar zxvf samba-3.5.4.tar.gz
# cd samba-3.5.4/source3

標準の環境に近づけるため、沢山オプションを食わせてみる。※下記は1行で記述。
# ./configure --prefix=/usr/local --localstatedir=/var --with-configdir=/etc/samba --with-modulesdir=/usr/local/lib/samba --with-pammodulesdir=/lib/security --with-lockdir=/var/lib/samba --with-logfilebase=/var/log/samba --with-piddir=/var/run --with-privatedir=/etc/samba --with-swatdir=/usr/local/share/swat --with-shared-modules=idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2 --with-automount --with-fhs --with-pam --with-pam_smbpass --with-libsmbclient --with-libsmbsharemodes --with-quotas --with-syslog

※何度やってもエラーが出るので、今回は「--with-dnsupdate」のオプションを外して実行した。

configureは終わったら、念の為レイアウト確認
# make showlayout
Samba will be installed into:
prefix: /usr/local
bindir: /usr/local/bin
sbindir: /usr/local/sbin
libdir: /usr/local/lib
modulesdir: /usr/local/lib/samba
vardir: /var
mandir: /usr/local/share/man
privatedir: /etc/samba
configdir: /etc/samba
lockdir: /var/lib/samba
statedir: /var/lib/samba
cachedir: /var/lib/samba
piddir: /var/run
swatdir: /usr/local/share/swat
datadir: /usr/local/share
codepagedir: /usr/local/lib/samba

# make ← めちゃくちゃ時間が掛かるので、終わるまで放置。
# make install

インストールまで終わったら、sambaの環境を整える
# cd ../packaging/RHEL/setup
# cp samba.log /etc/logrotate.d/samba
# cp samba.pamd /etc/pam.d/samba
# cp samba.sysconfig /etc/sysconfig/samba
# cp {smb.conf,smbprint,smbusers} /etc/samba
# cp smb.init /etc/rc.d/init.d/smb
# cp swat /etc/xinet.d
# cp winbind.init /etc/rc.d/init.d/winbind

# echo /usr/local/lib >> /etc/ld.so.conf.d/usrlocal.conf
# ldconfig
# ldconfig -p | grep smb

# /etc/samba/smb.conf 自分の環境に合わせて設定。 今回は割愛します。

# vi /etc/rc.d/init.d/smb
chkconfig: - 91 35
 ↓ 変更
chkconfig: 235 91 35


PATH=$PATH:/usr/local/sbin:/usr/local/bin  ← 追加
RETVAL=0

start() {


ここまで来れば起動するのみ!
# chmod 755 /etc/rc.d/init.d/smb
# service smb start
# chkconfig --add smb
# chkconfig smb on


これで、問題無く動くはず!

投稿時間: 17:37

MZK-W04NUのOpen-WRT化 其の3

先日注文した「FT232RL USBシリアル変換モジュール」が届いたので早速ファームウェアの書き換えを行ってみた。

~~が! しかし、認識しないでは無いか!
元々手元にあった「Buffalo BHC-US01/GP」と現象が同じ!
もしかして? っと思い、基盤に半田付けした再度コネクタを確認して、再度半田付けしてみたら、あっさりと動作~w

接触不良だったのね~

って事で、ファームの流し込みをしてみた。

ar7100> setenv ipaddr 192.168.1.1
ar7100> setenv serverip 192.168.1.2
ar7100> erase 0xbf0500000 +0x770000
ar7100> tftp 0xa0800000 openwrt-ar71xx-mzk-w04nu-squashfs.bin
ar7100> cp.b 0xa0800000 0xbf050000 0x770000
ar7100> reset

これだけで、書き換え完了。

シリアル変換モジュールの問題ではなく、半田付けの甘さで時間のロス&散財!
無駄な金と時間を消費してしまった

投稿時間: 01:10

玄箱PROもFedora12化したい

先日玄箱HGをFedora12化したが、ネットで調べていたら、玄箱PROもFedora12化出来るらしい。
現在玄箱PROは2TBのHDDを入れて、宅内FileServerにしているが、Fedora8にて運用している。
別に困るわけでは無いが、古いOSよりも新しいOSが良いはず。

データが約400GBあるので、玄箱・玄箱HGとARTiGOに分散させてバックアップ中。

バックアップが完了したら、Fedora12の実行だが、バックアップの転送速度がメチャメチャ遅い。
連休中には無理だな。

投稿時間: 00:28

玄箱HGへFerora12の再インストール

玄箱HGをTESTサーバとかで使っているのだが、「/」の領域が1GBしか無い事に気がついたw
初期設定時に10GBにしたはずだったのだが、間違えたのだろう。

「MZK-W04NU」のOpen-WRT化も出来ないので、3連休の工作として再度Fedora化を行ってみた。
利用したキットは http://iroironantoka.jp/ を使わせて頂いた。

いつもながら、簡単に構築ができてしまう。

作者に感謝ですm(_ _)m

投稿時間: 00:00

MZK-W04NUのOpen-WRT化 其の2

昨晩よりMZK-W04NUのOpen-WRT化を行っているが、どうにもWi-Fiが使えない(認識しない)。
opkgコマンドで、色々upgradeして再起動してたら、kernel Panic。

白いレンガになってしまった(T_T)

シリアルが使えれば、すぐにでも復旧出来るのだが、文字化けやキーボードを受け付けなかったりで、利用出来ない。
現在使ってるケーブル「Buffalo BHC-US01/GP」がダメなのか、ボードが壊れてるのか、意味解らん

日経Linux8月号では、秋月電子通商で販売している「FT232RL USBシリアル変換モジュール
」を使っている。
このままでは、アンテナ3本のオブジェになってしまうので、通販で購入手配。

また、無駄な物に金を使ってしまった・・・・・

投稿時間: 12:18

MZK-W04NUのOpen-WRT化

本体のカバー外しに時間が掛かった!

jtagにコネクタを取り付け、玄箱の時に作成したシリアルケーブルを取り付け、TeraTermで接続してみたが、文字化けやらキーボードが利かなかったりで、使えない・・・・

標準のファームのWeb 管理ToolからOpen-WRTのファームが焼ける物があるらしい。

http://backfire.openwrt.org/10.03/ar71xx/openwrt-ar71xx-mzk-w04nu-squashfs.bin
これをダウンロードして、突っ込んでみた。

問題無く焼けたようなので、SSHで接続するが、rootのパスワードが分からない~
※標準のIPは192.168.1.1に設定されている

仕方が無いので、telnetで一端接続してみる。

いきなり、ログインできた。
rootのパスワードを変更して

改めてsshで接続。

おー できた!

# vi /etc/config/network

に、自宅のIP帯を設定して、reboot

snapshot版にファームを入れ替えたり、下記のコマンドで必要なパッケージをインストールしてみた。
※http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-mzk-w04nu-squashfs-factory.bin

# opkg update
# opkg install luci
# opkg install luci-i18n-japanese
# opkg upgrade hostapd
# opkg upgrade wpa-supplicant
# opkg upgrade kmod-ath9k
# opkg upgrade kmod-madwifi

しかし、管理Toolから無線が見えない。

どうやら、無線のモジュールを認識してないらしい~
シリアル接続でファームのインストールを行わないと正常に設定出来ないってことか?
でも、正常にシリアルを認識しないし~ 困った!


投稿時間: 23:50

MZK-W04NUが届いたが・・・・

MZK-W04NUが届いた。
しかし、時間が無い~~

今週末は3連休。
「MZK-W04NUのOpenWRT化」と「KURO-BOX PROのFedora12化」
忙しい休日になりそうだ!

投稿時間: 23:47

自宅のWi-Fi環境

久々の更新w

自宅のWi-Fi環境はバッファローの「WLI-TX4-G54HP」をDD-WRT化したものを使っている。
現状でも、不満は無いが4-5MBしか出ないので、重たいデータには時間が掛かる・・・。

そこで、そろそろルーターを新調しようと、ネットで色々探してみると、mimoが使える高速無線ルーターが主流になってきているようだ。

価格も、1万円を切っている。
これは安い!

しかし、素のままで使うつもりは無いので、何かしらのカスタマイズを行いたい。

今月号の日経LinuxにルーターのLinux化が出ていた。
その記事では、Planexの「CQW-MR1000」をカスタムしていた。
しかし、「MZK-W04NU」も、同一の機器でファームが違うだけらしい。(メーカー終了品)

どうせカスタムするなら、安い方が良いに決まってる!!

更に調べると、箱開封済みが「3,500円」で売られてる。

3,500円なら、ファームに書き込み失敗しても、痛くないよね? っと自分に言い聞かせ、早速注文。

届くのが待ち遠しい・・・・・・

投稿時間: 20:12

玄箱PROでsamba!

自宅のFileサーバとして、玄箱HGを利用していたが、動画データや業務のデータが増えているため
容量不足になってきた。
最近、テラクラスのHDDも安くなったので、この際再構築を行うことにした。

今回用意したHDDは「WESTERN DIGITAL 2TB 5400rpm WD20EADS」
ネットで調べると、低電圧で発熱も少ないらしい。

玄箱HGには「kuro-sata」を利用しているためSATAのHDDも利用出来る。
早速、HDDの交換とFerora化を行うが、HDDを認識しない。
何度やっても、HDDを認識しない。
調査すると、このHDDは3Gbit対応で、玄箱で利用するにはジャンパにて1.5Gbitにしなければなら
ないらしいが、この設定を行っても認識しない。

我が家には、しばらく電源の入っていない玄箱PROがある。
2.5インチのHDDを入れたまま放置していた。

玄箱HGで悩むより、玄箱PROを活用することにした。

以前、玄箱PROwpFedora8化した方法で環境設定。
問題無くHDDを認識。

しかし、sambaを起動してもwindowsでアクセス出来ない。
「配列の範囲が無効です。」みないたエラーがでてログイン出来ない。

そこで、Google先生に聞いてみたところ、玄箱PRO+SAMBAで不具合が出ているらしい。
コレは、OSに依存するものなのか?は不明だが、ソースからビルドすればOKらしい。

面倒だが、最新のソースを持ってきて作ることにした。

今回用意したソースは最新版の「samba-3.4.5.tar.gz」


先ずは、ビルドに必要な環境をインストール
# yum -y pam-devel readline-devel fileutils libacl-devel openldap-devel krb5-devel cups-devel

環境が整ったところで、
# tar zxvf samba-3.4.5.tar.gz
# cd samba-3.4.5/source3

標準の環境に近づけるため、沢山オプションを食わせてみる。※下記は1行で記述。
# ./configure --prefix=/usr/local --localstatedir=/var --with-configdir=/etc/samba --with-modulesdir=/usr/local/lib/samba --with-pammodulesdir=/lib/security --with-lockdir=/var/lib/samba --with-logfilebase=/var/log/samba --with-piddir=/var/run --with-privatedir=/etc/samba --with-swatdir=/usr/local/share/swat --with-shared-modules=idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2 --with-automount --with-fhs --with-pam --with-pam_smbpass --with-libsmbclient --with-libsmbsharemodes --with-quotas --with-syslog --with-dnsupdate

終わったら、「make showlayout」でレイアウトのチェックを行い確認すべきだが、今回忘れた・・・

# make ← めちゃくちゃ時間が掛かるので、終わるまで放置。
# make install

インストールまで終わったら、sambaの環境を整える
# cd ../packaging/RHEL/setup
# cp samba.log /etc/logrotate.d/samba
# cp samba.pamd /etc/pam.d/samba
# cp samba.sysconfig /etc/sysconfig/samba
# cp {smb.conf,smbprint,smbusers} /etc/samba
# cp smb.init /etc/rc.d/init.d/smb
# cp swat /etc/xinet.d
# cp winbind.init /etc/rc.d/init.d/winbind

# echo /usr/local/lib >> /etc/ld.so.conf.d/usrlocal.conf
# ldconfig
# ldconfig -p | grep smb

# /etc/samba/smb.conf 自分の環境に合わせて設定。 今回は割愛します。

# vi /etc/rc.d/init.d/smb
chkconfig: - 91 35
 ↓ 変更
chkconfig: 235 91 35


PATH=$PATH:/usr/local/sbin:/usr/local/bin  ← 追加
RETVAL=0

start() {


ここまで来れば起動するのみ!
# chmod 755 /etc/rc.d/init.d/smb
# service smb start
# chkconfig --add smb
# chkconfig smb on

問題無く起動し、アクセスも出来るようになった。
しかし、swatがrootにてログイン出来ない。
何かが足らないのか、設定が間違ってるのかで繋がらない。

ま~ 滅多にUSERの追加も無いし、コレでいいかな~

投稿時間: 11:41

玄箱HGのFerora11化

気がつけば、数ヶ月更新してない・・・

ふと、玄箱関連のサイトを閲覧してると、HGが簡単にFedora11化出来るらしい。
いろいろやってみよう、何とかやってみよう!

以前、Fedora6化やFedora7化でお世話になったサイトのリニューアル版

今回も非常に簡単にインストール完了。

投稿時間: 11:58

SheevaPlugが届いた

4週間の予定が、7週間強。
掛かりすぎじゃね?

多分、日経Linuxを見て同時期に注文した人が多かったんでしょうね~

夏季休暇にじっくりと遊ぶつもりだったが、用事が入ってしまった為、しばらくお預けかな~

投稿時間: 20:58

LHD-NASWをGETだぜ!

知り合いの所で、Logtec製LHD-NASWを使っていたが、OS(WindowsStrageServer2003)が飛んでしまった。

LHD-NASW.jpg

本体をばらして、HDDを抜き出し、デスクトップPCに直結しデータ救済作戦。
暗号化してあったデータは救済できなかったが、大半のデータは救うことが出来た。

基盤を見てみると所々コンデンサがパンク気味。
OSのクラッシュとは関係ないが、結構ヤバイ状況。

データが復旧できれば本体は必要ないとの事で、頂くことになった。

これで、おもちゃが増えた(^^♪

投稿時間: 12:16

FON LA FONERA 2.0  (ラ・フォネラ2.0)  買ってしまった!

FONからメールが来てた。
2.0が6月25日に発売になるらしい。
期間限定で、割引にもなるらしい。
USBがついて、プラグインで色々な事が出来るらしい~
これは、欲しい!

SheevaPlugがまだ届かないというのに、amazonでぷちっ!

あ~ぁ また散財

※FONは合計4台目 w

投稿時間: 02:38

SheevaPlugを購入してしまった・・・

日経Linuxを見ていたら「電源プラグ型のLinuxサーバを作る」と言う特集が載っていた。
小型PCフェチの俺としては見逃せない記事だ。

ググって見ると、結構沢山情報がある。
大型の電源アダプタ程度の大きさだ。

SheevaPlug

標準ではUbuntuらしいが、Fedora10 も動くらしい。

「欲しい・・・。」


過去に小さい機器を買いあさって来た。

OpenBlockS 266 → 監視用
玄箱         → 監視用
玄箱HG       → 自宅Fileサーバ
玄箱PRO      → 遊び用?
FON2100E     → 自宅ワイヤレス
FON2100E     → 遊び用 (SDカード取り付け済み)
FON2200      → Fonアクセスポイント用
ARTiGO       → OpenVZ用(主に開発用)

何れも、自宅や会社で稼動している。

小型機器は性能に限界があるので、負荷のかかるサービスには不向き。
でも、このSheevaPlugは「ARM1.2GHz」でMEMも512MB らしい。
すげー魅力的。

「すげーー 欲しい・・・。」

しかし、国内では購入できず海外サイトで購入する必要がある。

数時間悩んだが、結局ポチッと押してしまった。
もしかして、病気かもw

届くのが4週間後らしい・・・

※本体$99.00 + 送料$33.23(FedEx) = $132.23

投稿時間: 03:02

ARTiGOのOSを入れ替えたので、apcupsdのインストール(RPM版)

ARTiGOにCentOS5.3+OpenVZを入れた為、以前インストールしたUPS監視TOOL「apcupsd」をインストールしなければならない。
前回は、tarでインストールしたが、今回はrpmパッケージで挑戦してみよう。

前回よりバージョンがチョット上がって「apcupsd-3.14.6」
ここから、該当のパッケージをもらってきてインストール。

# wget http://ncu.dl.sourceforge.net/sourceforge/apcupsd/apcupsd-3.14.6-1.el5.i386.rpm
# rpm -ivh apcupsd-3.14.6-1.el5.i386.rpm

インストールが終えたら、初期設定を行う。

# vi /etc/apcupsd/apcupsd.conf

環境に応じて変更を行うのだが、我が家の環境ではデフォルトのままで動きました。

動作確認は以下のコマンドで確認出来ます。

# apcaccess status
APC : 001,035,0890
DATE : Tue Jun 09 14:42:07 JST 2009
HOSTNAME : hogehoge.example.jp
VERSION : 3.14.6 (16 May 2009) redhat
UPSNAME : APC-ES500
CABLE : USB Cable
MODEL : APC ES 500
UPSMODE : Stand Alone
STARTTIME: Tue Jun 09 14:05:47 JST 2009
STATUS : ONLINE
LINEV : 098.0 Volts
LOADPCT : 13.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 48.5 Minutes
MBATTCHG : 10 Percent
MINTIMEL : 5 Minutes
MAXTIME : 0 Seconds
SENSE : High
LOTRANS : 090.0 Volts
HITRANS : 110.0 Volts
ALARMDEL : Always
BATTV : 13.5 Volts
LASTXFER : Automatic or explicit self test
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
STATFLAG : 0x07000008 Status Flag
MANDATE : 2008-08-13
SERIALNO : 3B0828X34600
BATTDATE : 2000-00-00
NOMINV : 100 Volts
NOMBATTV : 12.0 Volts
FIRMWARE : 803.p6.A USB FW:p6
APCMODEL : APC ES 500
END APC : Tue Jun 09 14:42:17 JST 2009

このままでは辛いので、webから閲覧出来るようにしたい。
そんなときは以下のパッケージをGetしてインストール。

# wget http://ncu.dl.sourceforge.net/sourceforge/apcupsd/apcupsd-multimon-3.14.6-1.el5.i386.rpm
# rpm -ivh apcupsd-multimon-3.14.6-1.el5.i386.rpm

デフォルトでは、「var/www/cgi-bin」配下にインストールされてしまう。
アクセス制限を掛けたいのと、何となく違うディレクトリに入れたかったので、「/var/www/apcupsd」を作成し、cgi-binは以下にインストールされた物を移動。

そして、Apacheの設定ファイルを作成する
# vi /etc/httpd/conf.d/apcupsd.conf
ScriptAlias /apcupsd /var/www/apcupsd

Options ExecCGI
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from XXX.XXX.XXX.XXX ← アクセスを許可するIPを記述する

ここまで出来たら、apacheを再起動または、リロード。

これで、OK。

投稿時間: 14:32

OpenVZでクローンとか、バックアップとか・・・

商用版のVirtuozzoでは、様々なToolが用意されているが、OpenVZでは便利なToolが揃っていません。
そこで、簡単にバックアップを取る方法を試したいと思います。

Virtuozzoの場合、「vzmlocal」と言うコマンドで、簡単にクローンを作ることができる。
しかし、OpenVZには用意されていない。
またバックアップを取るにしても、コンテナの入ってるディレクトリを圧縮したりしてバックアップを取るしかない。
Virtuozzoとまでは言わないまでも、比較的簡単に作業を行いたい。
そこで、こんなTOOLを見つけた。
「vzdump」

http://download.openvz.org/contrib/utils/vzdump/ からGetする事ができる。
早速、作業してみよう。

# wget http://download.openvz.org/contrib/utils/vzdump/vzdump-1.0-2.noarch.rpm

これだけでは、インストール出来ないので、「cstream」を探し、一緒にインストール。
CentOS5.3の場合は、el5用のパッケージで対応出来る。

# wget http://packages.sw.be/cstream/cstream-2.7.4-3.el5.rf.i386.rpm

Getしたパッケージをそれぞれインストールすれば、vzdumpが使えるようになる。

それでは、早速バックアップを取ってみよう。

普通にバックアップする場合は
# vzdump 101

バックアップは「/vz/dump」配下に保存されます。

確実にバックアップを取りたい場合は、一度サスペンドさせると差分が発生しないため、確実にバックアップを取ることが出来る。
# vzdump -suspend 101

任意のディレクトリにバックアップを行う場合は
# vzdump -dumpdir /home/vzbackup -compress 101

バックアップは「/home/vzbackup」に圧縮されて保存されます。

バックアップを利用して、コンテナを作成する場合は
vzdump -restore vzdump-200.tgz 102

コマンド一発でクローン化は出来ないものの、OpenVZでも簡単に100%クローンのコンテナを作ることが出来ます。
しかし、このままでは、IPやホスト名も同一になってしまうので、環境に合わせて変更する必要が有ります。

投稿時間: 18:29

検証サーバで自宅サーバにOpenVZをインストールしてみる

検証用サーバで様々な環境を作る機会が発生する。
しかし、その都度新規インストールでは時間がもったいない。
そんな時は、仮想サーバで構築すれば、時間も稼げる。

仕事ではVirtuozzoを使っているので、使い勝手の解ってるOpenVZをチョイスしてみた。

ホストOSはCentOS5.3

以下、インストールの履歴。

# cd /etc/yum.repos.d/
# curl -OL http://download.openvz.org/openvz.repo
# rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
# yum update

専用カーネルのインストール
# yum install ovzkernel

次にsysctl.confを編集
# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

この設定が完了したら、再起動。

起動したら、必要なパッケージをインストール

# yum install vzctl*.rpm vzquota*.rpm vzpkg*.rpm vzyum*.rpm vzrpm*.rpm

これで、インストールは完了。

全てコマンドで管理することも出来るが、怠け者はFreeで利用出来る管理Toolをインストールしてみた。

これが無いと、インストール途中でコケるので、予めインストールしておく。
# yum install vzpkg expect

# cd /tmp
# wget http://mesh.dl.sourceforge.net/sourceforge/vtonf/vtonfinstaller.1.0-beta1.tar.gz
# tar xvfz vtonfinstaller.1.0-beta1.tar.gz
# cd vtonfinstaller.1.0-beta1
# ./install

これが終えたら、日本語化!

# cd /usr/local/vtonf/vtonf/doc/lang
# wget http://daemon.plala.jp/~meke/files/lang_ja
# cd /usr/local/vtonf/vtonf/
# wget http://daemon.plala.jp/~meke/files/vtonf-beta1-japanese.patch
# patch -p2 < vtonf-beta1-japanese.patch

ログインするときにJapaneseを選択する事で、簡単ではあるが日本語化出来る。

最新のテンプレートを使う場合は、http://download.openvz.org/contrib/template/precreated/ から
Getして/vz/template/cache/に入れれば完了。

※今回OpenVZに使用したHWは、去年購入したARTiGOです。
 非力ながらも、意外と動いてしまいます。

投稿時間: 19:24

PHPのアクセラレータのapcを導入

phpのアクセラレータは様々な種類が存在するが、比較的管理が簡単なapcを選択してみた。

早速インストール

apcをインストールするには「php-pear」「php-devel」「httpd-devel」その他開発系の「gcc」が必要なので予めインストールしておくこと。

環境が整った状態で、以下のコマンド1行

# pecl install APC

指示に従ってインストールすればOK

php.iniに設定を書き加える必要が有るが、今回は「apc.ini」を作成して管理しやすいようにした。

# echo extension=apc.so > /etc/php.d/apc.ini

あとは、apacheを再起動または再読込を行えば有効になる・・・
非常に簡単だ!


投稿時間: 21:58

MySQLのサーバ移管で文字化け

このBLOGが使ってるサーバに不具合が有ったので、一時的に他のサーバに移すことになった。
コンテンツはtarで固めて転送&展開で簡単に終わった。
DBもちょちょいのちょいでDUMPしてインポートするが文字化け。

何回やっても文字化け。

DBを調べてみると、既存のDBは「lain1のDBにUTF-8」で保存されていた。
これじゃ、新しいサーバにインポートしようと思っても、utf8のDBでは文字化ける。

lain1でDBを作っても良いのだが、何かと問題が起こりそうなので変換してみた。

手順は以下の通り。

# mysqldump --default-character-set=latin1 -u[USERNAME] -p[PASSWORD] DATABASE > FILENAME.mysql

1行で打ち込んで、エクスポートされた「FILENAME.mysql」をそのまま取り込めば問題無いはずだが、
中身を見てみると、所々に「lain1」が・・・・

# perl -pi -e 's/latin1/utf8/' FILENAME.mysql

で、一括置換を行い、移行先のDBにインポート。

無事、完了!

意外と簡単なのね~

それにしても、このサーバ速いな(^^)/

投稿時間: 21:40

PHPの標準ライブラリPEARのインストール手順

久々の書き込み。

なかなか時間が取れませんね~
忘れないうちに、メモっておこう

CentOS5.3でPHPの標準ライブラリPEARのインストールを行う案件が有った。
手順は以下の通り

# yum -y install php-pear 

# pear upgrade-all

WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
と出たので

# pear channel-update pear.php.net を実行

現在のリストを確認

# pear list

足らない物を以下のコマンドでインストール

# pear install Mail

こんな感じ~

投稿時間: 18:34

A90のリカバリ

他の仕事を行いながら、届いたDVDドライブで、Winのインストール。
SSDが32GBなので、半分Win・半分Macにする計画。

パーティション切って、先頭パーティションにWinインストール予定。
フォーマットはNTFSよりFAT32が良いとの情報が多かったため、迷わずFAT32にてフォーマット。
OSリカバリ&各種ドライバのインストールで、帰宅時間になりました~

これで、週末はMacのインストールに専念出来るぞ!

投稿時間: 21:02

あきらめていたDVDドライブが届いたヨ!

DVDドライブが届かなければ週末のインストール大会は中止だな~
USBをドライブにするネタがあちらこちらに情報が有ったので、情報収集を行っていたら。

会社に宅急便が来た。

俺には関係ないと思っていたら、amazonの箱。

おぉ~ キターーーー。

投稿時間: 18:54

DVDドライブ、未だに発送されてないし・・・

昨日注文したDVDドライブが未だに発送されていない。

Amazonのプライムと言う、速達のようなものを利用してみた。
1ヶ月はお試しで無料らしい。
これを使えば、本日届く予定だった!

でも、「まもなく発送される商品」となっていて、配送先の変更が出来ない・・・・

あ~ぁ 週末インストール大会できないじゃん!

どうしよう~~

投稿時間: 11:42

DVDドライブ購入

A90が当選したことにより、知らず知らずに散財しています~

SSDを別途購入したので再インストールが必要だ!
標準のWindows意外に、遊び用でMacOSも使いたい。

っとなると、インストール用ドライブが必要になる。
手持ちでは、USBドライブを持ち合わせていない~

また、購入かよ!

って事で、Amazonでプチリ!
http://buffalo.jp/products/catalog/storage/dvsm-p58u2_b/
A90の本体が黒なので、ドライブも黒を購入。

明日届けば、週末はインストール大会です!

投稿時間: 12:55

DELL Vostro A90(Inspiron Mini 9同等)が抽選で当たった? No3

ようやく届きましたよ~
Dell Vostro A90 が!

仕様は以下の通り
・WindowsXP Home Edition SP3
・SSD 8GB
・1GBメモリ
・その他、Wi-Fi,Bluetooth,Webカメラ30万画素・・・

予想通りのSSDとメモリ
先行して購入して損はなかったヨ

早速記念撮影会です。

■上から
A90上から

■液晶を開けたところ  右がiPhoneです。A90の小ささが解りますね~
A90前から1

■革ケースを付けたところ
A90前から2

■革ケースを付けて閉じたところ
A90革ケース

これで、役者が揃った・・・・ っと思ったら、インストール用のドライブが無い!!
また出費かよ~

投稿時間: 12:50

DELL Vostro A90(Inspiron Mini 9同等)が抽選で当たった? No2

先日、A90が当選したと連絡が有ったものの、未だに届かない。
そろそろ到着するだろうと勝手に判断し、必要な拡張パーツを調達してみた。

1,メモリ Transcend JM800QSU-2G (SODIMM DDR2 PC2-6400 2GB)
2,SSD  バッファロー SHD-DI9M32G
3,ケース サンワダイレクトでWEB限定で販売していた革ケース

画像はこちら
購入部品

積める限りのパーツを組み込んで、さて何をしようか・・・

Windows? Linux? それとも、巷で噂のMac?
仕事用と遊び用で、デュアルブートも良いですね。
もちろんWindows&Mac!

って、夢がふくらんではいるものの、物が届かなければ何にもならない・・・

投稿時間: 18:32

無停電電源装置 APC ES500JP の設置と管理TOOL

購入してから、だいぶ時間が経ってしまったが、ようやく時間が取れたので設置及び管理TOOLの設定を行ってみた。

APCの無停電電源装置で管理TOOL(pcupsd)は使ったことが有ったが、設定方法を忘れてしまったので、再度ネットで調査してみた。

まず、核になる「pcupsd」をゲットする。

# wget http://downloads.sourceforge.net/apcupsd/apcupsd-3.14.5.tar.gz

展開する。

# tar zxvf apcupsd-3.14.5.tar.gz

CGIが使いたいのと、今回はUSB接続なので、Configureの際オプションを設定する。

# cd apcupsd-3.14.5
# ./configure --enable-cgi --with-cgi-bin=/etc/apcupsd/cgi --enable-usb
# make
# make install

makeで必要なパッケージが足らないと怒られたので、yumでインストールし、再度make。

設定は以下のFireのみ

# vi /etc/apcupsd/apcupsd.conf

UPSNAME APC-ES500
UPSCABLE usb
UPSTYPE usb
#DEVICE /dev/usb/hiddev0 ← 他のサイトではこのように設定していたが、この設定にすると起動しなかったので、今回は特別設定は入れなかった。
BATTERYLEVEL 10 ← バッテリー残量が10%を切ったらシャットダウン開始
MINUTES 5      ← 残り5分を切ったらシャットダウン開始
TIMEOUT 0      ← ES500では使えないっぽいので「0」

# chkconfig apcupsd on  ← 自動起動ON
# chkconfig --list apcupsd ← 確認
apcupsd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

# /etc/rc.d/init.d/apcupsd start
Starting UPS monitoring: [ OK ]

# apcaccess status  ← ステータス確認
APC : 001,036,0897
DATE : Mon Jan 19 11:46:51 JST 2009
HOSTNAME : hoge.hogehoge.com  ← 実際には、ホスト名が表示されます。
RELEASE : 3.14.5
VERSION : 3.14.5 (10 January 2009) redhat
UPSNAME : APC-ES500
CABLE : USB Cable
MODEL : APC ES 500
UPSMODE : Stand Alone
STARTTIME: Mon Jan 19 11:46:49 JST 2009
STATUS : ONLINE
LINEV : 100.0 Volts
LOADPCT : 7.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 64.2 Minutes
MBATTCHG : 10 Percent
MINTIMEL : 5 Minutes
MAXTIME : 300 Seconds
SENSE : High
LOTRANS : 090.0 Volts
HITRANS : 110.0 Volts
ALARMDEL : Always
BATTV : 13.5 Volts
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
STATFLAG : 0x07000008 Status Flag
MANDATE : 2008-08-13
SERIALNO : 3B0828X34600
BATTDATE : 2000-00-00
NOMINV : 100 Volts
NOMBATTV : 12.0 Volts
FIRMWARE : 803.p6.A USB FW:p6
APCMODEL : APC ES 500
END APC : Mon Jan 19 11:47:33 JST 2009

ここまで来れば、略終了。
残りは、Webから監視できるようにapacheの設定を施す。

# vi /etc/httpd/conf.d/apcupsd.conf
ScriptAlias /apcupsd/ "/etc/apcupsd/cgi/"

Options ExecCGI
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from XXXX.XXXX.XXXX.XXXX ← 閲覧可能なネットワークを設定。

# /etc/rc.d/init.d/httpd reload  ← 設定を読み込み
httpd を再読み込み中: [ OK ]

上記の設定が完了したら「http://ServerHost/apcupsd/multimon.cgi」にアクセスすると
APC1画像

さらに「http://ServerHost/apcupsd/upsstats.cgi」へアクセスすると
APC2画像

これで、停電になっても落ちることは無いし、変化があったときはメールで知らせてくれる。


※apcupsd.confの設定項目の説明は以下のとおり
APCUPSの設置項目

投稿時間: 11:32

MT-4.1からMT-4.23にUPDATEしてみた

MT-4.23をGetして解凍。
その上で、サーバにアップロード。
 ※念のためバックアップは取っておく。

何の加工もせず、UPDATE完了。

なんか、つまらない・・・・ (笑

投稿時間: 18:37

FONにSDを読み込ませる

新年明けましておめでとうございます。

今年も波乱の1年になるような気もしますが、気を抜かずがんばって行きましょう!!


新年1発目の書き込みは「FON」ネタです。

先日新しいファームをインストールしたが、イマイチ動作がおかしい。
使えるはずのコマンドが使えなかったり・・・
もしかしてインストールの失敗???

慣れるまでは情報の多い古いファームウェア7.09を使ってみるということで、再インストールを行いSDカードを認識させた。
すべて日経Linux12月号を参考に構築した。
SDカードの配線に一部誤記があるようだが、他のサイトで情報入手済みだったので、スムーズに作業が出来ました。

自宅のメインマシン(CentOS5.2)でクロスコンパイルしOpenWrtの再ビルド成功。
マイクロSDの1GBの容量をroot領域として使えるようにもなった。

でも、このマシンを何に使うか決めていない~(^^ゞ

※ビルドしたイメージです。
openwrt-atheros-2.6-root.squashfs
openwrt-atheros-2.6-vmlinux.lzma

投稿時間: 21:36

OpenWrt 8.09_RC1 がまともに動かない!!

年の瀬と言うのに、暇つぶしにFONいじり
先日8.09_RC1 とインストールして色々試してみたが、使えないコマンドがあるようだ。
UPDATEを行うための「ipkg」すらも使えない・・・^^;

とりあえず、古いファームで遊んでみよう

投稿時間: 17:34

LA FONERA 2100のOpenWrt化 8.09_RC1

調子にのって「8.09_RC1」にしてみた。

覚えてしまえば簡単なもの・・・

投稿時間: 09:12

LA FONERA 2100のOpenWrt化

日経Linux12月号に出ていた方法でOpenWrt化を行ってみた。

2100なので、作業はシリアルケーブルにて行う必要がある。
玄箱Proの時に作成していたので、簡単に接続できた。
※玄箱ProとLA FONERA 2100では接続順番が違うので、配線を若干変えて使った。

以下、シリアル接続での作業内容。

==============================================================
+PHY ID is 0022:5521
Ethernet eth0: MAC address 00:18:84:28:c8:24
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: ap51
RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 1.000 seconds - enter ^C to abort
^C ← [Ctrl]+[c]
RedBoot>
RedBoot> ip_address -l 192.168.1.1/24 -h 192.168.1.2
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.2
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> load -r -b 0x80041000 openwrt-atheros-2.6-root.squashfs
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x80160fff, assumed entry at 0x80041000
RedBoot> fis create -l 0x06F0000 rootfs
... Erase from 0xa8030000-0xa8720000: ...............................................................................................................
... Program from 0x80041000-0x80161000 at 0xa8030000: ..................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> load -r -b 0x80041000 openwrt-atheros-2.6-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x80100fff, assumed entry at 0x80041000
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
... Erase from 0xa8720000-0xa87e0000: ............
... Program from 0x80041000-0x80101000 at 0xa8720000: ............
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> fconfig
Run script at boot: true
Boot script:
.. fis load -l vmlinux.bin.l7
.. exec
Enter script, terminate with empty line
>> ← エンター
Boot script timeout (1000ms resolution): 1
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address:
Local IP address mask: 255.255.255.255
Default server IP address:
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)?
RedBoot> reset
+PHY ID is 0022:5521
Ethernet eth0: MAC address 00:18:84:28:c8:24
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: ap51
RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 1.000 seconds - enter ^C to abort
RedBoot> fis load -l vmlinux.bin.l7
Image loaded from 0x80041000-0x80290085
RedBoot> exec
Now booting linux kernel:
Base address 0x80030000 Entry 0x80041000
Cmdline :
Linux version 2.6.21.5 (nbd@ds10) (gcc version 4.1.2) #2 Sun Sep 30 20:16:16 CEST 2007
CPU revision is: 00019064
Determined physical RAM map:
memory: 01000000 @ 00000000 (usable)
Initrd not found or empty - disabling initrd
Built 1 zonelists. Total pages: 4064
Kernel command line: console=ttyS0,9600 rootfstype=squashfs,jffs2 init=/etc/preinit
Primary instruction cache 16kB, physically tagged, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, linesize 16 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
PID hash table entries: 64 (order: 6, 256 bytes)
Using 92.000 MHz high precision timer.
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13504k/16384k available (1955k kernel code, 2880k reserved, 292k data, 116k init, 0k highmem)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
Radio config found at offset 0xf8(0x1f8)
Time: MIPS clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0xb1100003 (irq = 37) is a 16550A
eth0: Dropping NETIF_F_SG since no checksum feature.
eth0: Atheros AR231x: 00:18:84:28:c8:24, irq 4
cmdlinepart partition parsing not available
Searching for RedBoot partition table in spiflash at offset 0x7d0000
Searching for RedBoot partition table in spiflash at offset 0x7e0000
5 RedBoot partitions found on MTD device spiflash
Creating 5 MTD partitions on "spiflash":
0x00000000-0x00030000 : "RedBoot"
0x00030000-0x00720000 : "rootfs"
0x00130000-0x00720000 : "rootfs_data"
0x00720000-0x007e0000 : "vmlinux.bin.l7"
0x007e0000-0x007ef000 : "FIS directory"
0x007ef000-0x007f0000 : "RedBoot config"
nf_conntrack version 0.5.0 (128 buckets, 1024 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP vegas registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear
All bugs added by David S. Miller
VFS: Mounted root (squashfs filesystem) readonly.
Freeing unused kernel memory: 116k freed
eth0: Configuring MAC for full duplex
Warning: unable to open an initial console.
Algorithmics/MIPS FPU Emulator v1.5
- preinit -
jffs2 not ready yet; using ramdisk
mini_fo: using base directory: /
mini_fo: using storage directory: /tmp/root
- init -
init started: BusyBox v1.4.2 (2007-09-29 07:21:40 CEST) multi-call binary

Please press Enter to activate this console. device eth0 entered promiscuous mode
br-lan: port 1(eth0) entering learning state
br-lan: topology change detected, propagating
br-lan: port 1(eth0) entering forwarding state
PPP generic driver version 2.4.2
wlan: 0.8.4.2 (svn r2568)
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.30.13 (AR5212, AR5312, RF2316, TX_DESC_SWAP)
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (svn r2568)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
wlan: mac acl policy registered
ath_ahb: 0.9.4.5 (svn r2568)
ath_pci: switching rfkill capability off
ath_pci: switching per-packet transmit power control off
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: H/W encryption support: WEP AES AES_CCM TKIP
wifi0: mac 11.0 phy 4.8 radio 7.0
wifi0: Use hw queue 1 for WME_AC_BE traffic
wifi0: Use hw queue 0 for WME_AC_BK traffic
wifi0: Use hw queue 2 for WME_AC_VI traffic
wifi0: Use hw queue 3 for WME_AC_VO traffic
wifi0: Use hw queue 8 for CAB traffic
wifi0: Use hw queue 9 for beacons
wifi0: Atheros 2315 WiSoC: mem=0xb0000000, irq=3
jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
jffs2_build_filesystem(): unlocking the mtd device... done.
jffs2_build_filesystem(): erasing all blocks after the end marker... done.
mini_fo: using base directory: /
mini_fo: using storage directory: /jffs

BusyBox v1.4.2 (2007-09-29 07:21:40 CEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
KAMIKAZE (7.09) -----------------------------------
* 10 oz Vodka Shake well with ice and strain
* 10 oz Triple sec mixture into 10 shot glasses.
* 10 oz lime juice Salute!
---------------------------------------------------
root@OpenWrt:/#
==============================================================

上記のログで太文字部分だけ打ち込んだだけ・・・・

簡単だね。

投稿時間: 22:46

LA FONERA 2100 の購入

本日、仕事の帰りに、秋葉のヨドバシで LA FONERA 2100 を調達した。

もちろん冬の工作のOpenWrt+SDカードの準備です。

投稿時間: 23:43

FONが増えてね~?

最近思うのだが、FONユーザーが増えてるように思う。

都内の喫茶店に入れば、ほとんどFONにつなげられる。
これは非常に便利。

ライブドアの無線LANも使えるので非常に助かりますね。

ところで、最近FONにSDカードを取り付けるカスタマイズが流行ってる?らしい・・・
我が家で持っているFONERA+では難しいらしく、ノーマル版のFONERAが良いらしい。

2,000円弱で購入できるのも魅力。

簡単なWEBサーバに使えれば、無音サーバとして使える。

ん~ 冬休みの工作に挑戦してみようかな~

投稿時間: 23:59

日本語ドメイン対応

日本語ドメインを取得したので、我が家のサーバに割り当ててみた。

必要なのは「libidn」と言うパッケージ。

メインマシンのCentOS5には入っていた。

んで、どんなものか試してみる。

# idn ほげほげ ← 実際には違うドメインを取ってますが、試験的に・・・・
libidn 0.6.5
Copyright 2002, 2003, 2004, 2005 Simon Josefsson.
GNU Libidn comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Libidn under the terms of
the GNU Lesser General Public License. For more information
about these matters, see the file named COPYING.LIB.
xn--18ja5jb  ← ここ

一番最後に出てきた「xn--18ja5jb」が変換元の状態

このASCII文字列をドメインとして登録。

DNSやらHTTPDやらを設定。

ブラウザから「http://www.ほげほげ.jp」にアクセスすると、ブラウザが自動変換してサーバにアクセスするらしい・・・・・

そんなに難しい技術ではなかったyo!

投稿時間: 19:40

玄箱HGのiTunesServerが動かない

以前作成したiTunesServer。
Fedora8のときに作成したままで、Fedora10には対応してないっぽい。

ってことで、Fedora10用に再構築。

http://nightlies.fireflymediaserver.org/ から必要なソースを持ってくる。

# wget http://nightlies.fireflymediaserver.org/nightlies/svn-1586/mt-daapd-svn-1586.tar.gz ← GET

# tar zxvf mt-daapd-svn-1586.tar.gz ← 展開

# cd mt-daapd-svn-1586 ← 展開先へ移動

# ./configure --enable-sqlite3 && make && make install ← インストール

# cp contrib/init.d/mt-daapd-fedora /etc/rc.d/init.d/mt-daapd ← 起動スクリプトを所定のディレクトリへコピー

# cp contrib/mt-daapd.conf /usr/local/etc/ ← 設定ファイルを所定のディレクトリへコピー

# chown nobody:nobody /usr/local/etc/mt-daapd.conf ← 設定ファイル所有者変更

# cd ← 展開先ディレクトリを抜ける

# vi /usr/local/etc/mt-daapd.conf ← 設定ファイル編集
admin_pw = xxxxxxxx ← 管理ページアクセスするために任意のパスワードを指定

db_type = sqlite

db_type = sqlite3 ← DBタイプとしてsqlite3を指定

mp3_dir /mnt/mp3

mp3_dir /home/mp3 ← MP3ファイル格納フォルダを指定※後述の「■Samba設定」参照

rescan_interval 300 ← 行頭の#を削除してコメント解除(MP3ファイル格納フォルダを5分間隔で再読込みする)

Sambaの設定

# vi /etc/samba/smb.conf ← Samba設定ファイル編集
以下を最終行へ追加
[mp3]
comment = Music Box
path = /home/mp3
public = yes
writable = yes
only guest = yes

# mkdir /home/mp3 ← MP3ファイル格納ディレクトリ作成

# chown nobody:nobody /home/mp3/ ← MP3ファイル格納ディレクトリ所有者変更

# /etc/rc.d/init.d/smb reload ← Samba設定反映
smb.conf ファイルを再読み込み中: [ OK ]

Firefly起動

# vi /etc/rc.d/init.d/mt-daapd ← Firefly起動スクリプト編集
#killall -INT mt-daapd ← 行頭に#を追加してコメントアウト(再起動不可対処)
killproc mt-daapd ← 行頭の#を削除してコメント解除(再起動不可対処)

# /etc/rc.d/init.d/mt-daapd start ← Firefly起動
DAAP サーバーを起動中: [ OK ]

# chkconfig mt-daapd on ← Firefly自動起動設定

これでいけるはず!


※構築参照サイト
  http://fedorasrv.com/firefly.shtml

投稿時間: 16:29

玄箱HG Fedora10 いけたよ!

事務所からこっそりUPGRADEしていましたが、Fedora8からFedora10へ一気に行けました。

調子に乗って玄箱(ノーマル)もUPGRADE
若干環境が違うが、こちらも無事UPGRADEできた。
でも、死活監視のNAGIOSがおかしい・・・

再度、NAGIOSのコンパイルを行い、無事動作。

これで、玄箱も延命できた。

投稿時間: 02:17

玄箱HG Fedora10 なんか、いけそう~

今、こっそり事務所からリモート操作! w

Fedora8からFedora10へUPGRADE中
なんか、いけそうな気がする・・・・。

投稿時間: 13:55

玄箱HGのFedora9&10化 その2

玄箱HGをFedora8からFedora9にUPGRADEしようとしたが、依存関係が多すぎて、UPGRADE出来ない感じ・・・

バックアップを取っていきなりFedora10に挑戦してみよう!

投稿時間: 13:52

玄箱HGのFedora9&10化

昼休みに遠隔からFedora8からFedora9へのUPGRADEを行ってみた。
依存関係が多すぎて、素直に出来そうに無い。

バックアップを取って、再インストールかな~

投稿時間: 19:15

気がつけば・・・

気がつけば、Fedoraもバージョン「10」ですか・・・・  早くね?

今「8」だからな~
kernelもUPしたし、そろそろ「9」「10」にしたいところ・・・

でも、以前「9」に挑戦して玉砕してるしな~~

投稿時間: 12:56

玄箱のKernel再構築

現在使っているKernelが古いので、出来る限り新しいKernelに入れ替えようと思う。

サイトを巡回していたら、こんなサイトを見つけた。

簡単にKernelをコンパイルできそうだ!。

手順に従いコンパイル。
今回利用したのは、「2.6.25.20」

そのままではつまらないので、iptableが使えるようにNetfilteのオプションとext4のオプションを指定してみた。

何の問題も無くコンパイル終了。
新kernelで起動確認&iptable動作確認。

でも、ext4の動作確認が出来ない。

どうやって確認しようか~~


※玄箱+玄箱HG 両方ともUPしました。


投稿時間: 12:49

ARTiGOの外付けHDDがマウントされない

ふと、ARTiGOを見ていたら、外付けHDDがマウントされていない。
手動でマウントしようと思っても、エラーが出てマウントできない。

# mount /dev/sda1 /vz
mount: wrong fs type, bad option, bad superblock on /dev/sda1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

こんなときはGoogle先生に聞いてみる。

すると、ext3のjournal が壊れてるみたい。

早速復旧に取り掛かる。

# tune2fs -O ^has_journal /dev/sda1

途中色々と聞かれるが、全て「y」にて返す。
完了後、念のためチェック。

# e2fsck /dev/sda1

journal file を作り直す。

# tune2fs -j /dev/sda1

終了したら、マウントしてみる。

# mount -t ext3 /dev/sda1 /vz

コレで復帰した。

投稿時間: 11:47

LA FONERA+のDD-WRT化

DELL SC420の不具合で、LA FONERA+を触ることが出来なかった~
やっと落ち着いたので、LA FONERA+のDD-WRT化することにした。

先日発売された「日経Linux」に「無線LANルーター改造法」が出ていた。(旬だね~w)

早速購入して、書き換え開始。

「日経Linux」の記事によると、ちょっとした準備で数行のコマンドを打ち込むだけでDD-WRT化が出来ると書いてある。
コレはいいね~
ハードの改造なしで、DD-WRT化できれば、こんな楽なことは無い。
早速手順どおりに作業する。

FON用のDD-WRTファームを取ってきて、作業PCの環境も整える。

記事通りに作業するが、コマンドを打ち込むところで止まってしまい応答が無い。
以下、作業内容。

=========================================================
RedBoot> ip_address -l 192.168.1.1/24 -h 192.168.1.2 「エンター」
RedBoot> fis init 「エンター」
 :
 :
About to initialize [format] FLASH image system continue (y/n) y 「エンター」
RedBoot> load -r -v -b 0x80041000 linux.bin 「エンター」
 :
 :
 :
RedBoot> fis create linux 「エンター」  ← ここで止まって、応答なし。
=========================================================

何度やっても、同じところで止まってしまう。
ここは、Google先生に調べてもらおう~

何々・・・・ 途中で反応が無くても、じっくり我慢。
       反応が返ってくるまで触らず、じっと我慢の子で居てほしい~~ なんて事が書いてある。

人によっては「5分」とか「10分」とか・・・・
場合によっては「20分」と書いてあるところもあった。

コレは待つしかないな~
再度作業してみる。

=========================================================
RedBoot> ip_address -l 192.168.1.1/24 -h 192.168.1.2 「エンター」
RedBoot> fis init 「エンター」
 :
 :
About to initialize [format] FLASH image system continue (y/n) y 「エンター」
RedBoot> load -r -v -b 0x80041000 linux.bin 「エンター」
 :
 :
 :
RedBoot> fis create linux 「エンター」
 :
 :
 :
5分経過~
 :
 :
 :
10分経過~
 :
 : イラ・・・
 :
15分経過~
 :
 : イライラ・・・
 :
20分経過~
 :
 : イライライラ・・・
 :
もう我慢できない!
っとエンターを押すと、セッションが切れて落ちやがる。
=========================================================

何度やっても、駄目。
もしかして、壊してしまったのか?
糞~ 意地でも入れてやる!

=========================================================
RedBoot> ip_address -l 192.168.1.1/24 -h 192.168.1.2 「エンター」
RedBoot> fis init 「エンター」
 :
 :
About to initialize [format] FLASH image system continue (y/n) y 「エンター」
RedBoot> load -r -v -b 0x80041000 linux.bin 「エンター」
 :
 :
 :
RedBoot> fis create linux 「エンター」
 :
 :
 :
5分経過~
 :
 :
 :
10分経過~
 :
 : イラ・・・
 :
15分経過~
 :
 : イライラ・・・
 :
20分経過~
 :
 : イライライラ・・・
 :
25分経過~
 :
 : 駄目なのか?
 :
30分経過~
 :
RedBoot>  ← キタ~~~。
=========================================================

お~ 30分ちょっと経過したところで「RedBoot> 」が出てきた!
何処にも30分待てとは書いてないぞ!
こんなに待つのであれば、どこかに書いてあるだろう~
なんで?

って思いながら、作業の継続。

=========================================================
RedBoot> fconfig 「エンター」
 :
 : 次の行が出るまでエンターを押しまくる
 :
>> fis load -l linux 「エンター」
>> exec 「エンター」
>>  「エンター」
 :
 : 次の行が出るまでエンターを押しまくる
 :
Update RedBoot non-volatile configuration - continue (y/n)? y
RedBoot> reset
=========================================================

「reset」を打ち込んだところで、作業は終了。
本体のLEDが消灯・点灯を繰り返す。

しばらくしたら「http://192.168.1.1」へブラウザでアクセス。

お~~ 念願のDD-WRTの画面がキターーーーーー。

投稿時間: 16:45

DELL SC420 の復活(OpenVZ化)

駄目になったDELL SC420にUSBブートでCenOS5.2を入れてみた。
メモリも2GBに増やしたし、色々と遊べそう。

テストや遊び用として使えるように、OpenVZを入れてみた。
VZの商用版である「Virtuozzo」は仕事でも使っているので慣れている。

勉強の為、ZENやVMware・ZENベースのORACLEVMでも良いのだが、今回は見送り~

なれた手付きで、OpenVZをインストールして、適当にVEを作ってみた。
以外にレスポンスも良い。

コレで、遊べるぞ!

投稿時間: 23:55

DELL SC420 不具合の続き・・・ 復旧ならず。

本日(土曜日)に、ネットで購入したメモリが届いた。
昨晩確認する予定だったSC420だが、メモリも256MBだし、コンテンツも復旧してるし・・・・ と言うことで、何も作業をしなかった。
※内容を確認するのが怖かった~ ってのが、本音です(笑

折角、メモリも届いているので、重たい腰を持ち上げ作業に取り掛かった。

「・・・・・・・・・。」

「何も言えね~」

/dev/md2 でエラー多発。
RAIDの再構築の形跡があるが、途中で止まってる。
kernel panic を起こしてるし・・・・

起動ディスクで起動させてメンテナンスも出来ないわけでは無いが、チト面倒。

HDDを取り外し、HDDをUSB接続に転換する機器で、ARTiGOに接続。
念のため、全バックアップを取った。

復旧させず、CentOS5.2+OpenVZでも入れてバーチャルOSの勉強でもしてみようぅ~

投稿時間: 18:22

DELL SC420 不具合の続き・・・

昨晩は、DELL SC420 のメモリエラーで大変だった。
一段落着いたな~ っと思っていたら、メールが受信できないぃ~~

遠隔よりSSHでログインして、サーバの状況を確認すると、なんだかおかしい。
qmailの再起動を行うとエラーがでる。
httpdは?
webへのアクセスも出来ない。

コレはおかしい・・・・

繋がっているうちに、大切なデータをバックアップ!

数時間かけてバックアップを取った。(遠隔からのバックアップなので、相当な時間が掛かったyo!)

んで、サーバ再起動

 :
 :
 :
 :

pingで応答みても、全く帰ってこないし・・・・

そのまま放置する訳に行かないので、DELL SC420 に有ったコンテンツやらを「ARTiGO」に移植。
httpやメール、DNSのプライマリとしても使っていたので、コレも移植。

「ARTiGO」にDELL SC420で使っていたIPをエイリアスで追加して移植完了。

遠隔からでは起動しない原因が解らない~
とりあえず、コンテンツは復旧できたのでクレームにはならないだろう。

夜、ゆっくり確認してみよ!

投稿時間: 14:11

DELL SC420 がエラーを吐いて止まってやがる!!

帰宅途中の電車の中で、携帯にアラートが飛んできた。
アラートは、自宅にあるメインサーバのDELL SC420 のpingが通らないとの通知。

イーモバイルでアクセスしても繋がらない。
何をやっても駄目。

仕方が無いので、自宅に着くまでガマン。

 :
 :
 :
 :

自宅に着いたところで、早速確認。

Uhhuh. NMI received for unknown reason 30 on CPU 0.
Do you have a strange power saving mode enabled?

こんなエラーが出ていた。

強制的に電源を切り、起動。
やはり同じエラーを吐きまくる・・・・

ネットで検索すると、どうやらメモリやボードの不具合が考えられるらしい~~

とりあえず、メモリのチェック。
BIOSで見るか限り、認識している。

256MBのメモリが2枚挿しなので、1枚ごとに起動チェックを行うと、2番目のメモリを外したときは正常に起動。
何度か再起動を繰り返したが、問題ない。

念のため、不具合の出ていたメモリをつけてみると、起動不能。
原因はコレだ!

現在は256MBで稼働中。
重たい処理を行うサービスは無いので、このままでも良いのだが、メモリも安くなってきているので1GB ×2 の購入を検討。

ネットで探すと、純正と同等のメモリはなかなか入手できないらしい。
DELLの純正は高い~

他のユーザー事例を検索すると、代替メモリで動作してる感じ。

早速、ネットで購入してみよう!

投稿時間: 00:01

2代目のLA FONERA+とラ・フォンテナが届いた。

今日、2代目のLA FONERA+とラ・フォンテナが届いた。
時間の関係で、DD-WRT化することが出来ない。
しばらくは手を出せない感じ・・・・・。

ところで、今回新調したラ・フォンテナ(指向性アンテナ)だが、箱を開けてみてビックリ。
思った以上にデカイ!

笑ってしまった~

投稿時間: 14:03

もう一台FON(LA FONERA+)を購入

馬鹿だと言われても、買ってしまったものは仕方がない・・・
最初に購入したLA FONERA+は「素」のまま利用。

今回購入したLA FONERA+は「お遊び用」で「DD-WRT」をインストールする予定。
ついでに、指向性のアンテナ「ラ・フォンテナ」も合わせて購入。

そんなにルータばかり持っていても仕方が無いが、遊び&学習用と言うことで~

投稿時間: 00:36

寺駅のカスタム

先日から寺駅のカスタムを行っているが、うまく動かない。
Buffalo Extraの「Useful Packages」の「Binaries」を全部入れると、rootでログインできなくなる。

原因は追究していないが、「tgz」のパッケージを入れると駄目っぽい。

先ずは、ファームの入れ換えと「zip」のパッケージのみUPDATEして様子を見てみることにした。
そのためには、初期化を行わなければ~~

初期化が終わるのに、すげ~時間が掛かるんだよね~

投稿時間: 19:42

寺駅(TS-TGL)の入手

バッファローの寺駅を入手した。
旧モデル(TS-TGL1.6)だが、容量は1TBを越えてるし、RAID5をサポートしているので、何かと使い道はありそうだ。

しかし、デフォルトの状態で使うには勿体無い・・・w
丸ごとOSを入れ替えないまでも、多少のカスタマイズは行ってみたい。

早速ググって見ると、シリアルコンソール化を行えば簡単にrootを乗っ取れるみたい。
しかし、今回は標準の機能を残しつつ、軽めのカスタマイズ。
HWの改造は控えたい。

そんなところに、こんなサイトを見つけた。

http://homepage.ntlworld.com/itimpi/

ココには、telnetやSSHを使えるようにカスタマイズしたファームウェアが落ちているようだ。
早速、ここ(http://homepage.ntlworld.com/itimpi/buffalo.htm)から対象のarchiveをGetする。

先ずは、terapro_112a.zipをGetする。
場所はBuffalo ExtraのFirmware releases without AD supportにあるterapro_112a.zip
※たまにサーバが落ちていることも有るので、時間をかけてDLすべし!

解凍しファームウェアをUPDATE
2-3回再起動が行われる。

ファームウェアのUPDATEが完了したら、関連パッケージをGetする。
場所は、Buffalo Extraの上のほうの「Useful Packages」から「Binaries」を全部。
※たまにサーバが落ちていることも有るので、時間をかけてDLすべし!

Zipは解凍して、tgzはそのまま 共有フォルダへコピー。

先程のファームウェアUPDATEでTELNETは開放されているので、ログインできる。
myrootのPW無し。

その後は、サイトの説明にしたがってUPDATE
先ずは、busybox_1.5.0_ppc_v6のディレクトリに移動して「./Update_Busybox.sh」を実行。
この作業と同様に他のパッケージもUPDATE。

これで、基本的な作業は終了。


投稿時間: 14:52

LA FONERA+ と WLI-TX4-G54HP(子機)の接続

「LA FONERA+ 」のファームは標準のままで「WLI-TX4-G54HP」に接続してみた。
何の問題も無く接続完了。
※やはり、宅内のルータ「Planex BRC-W14VG-BT」とは相性の問題らしい・・・

家の端と端に設置した状態でも、平均10Mは出る。
電波も安定していて、非常に快適だ。

PCの無線で接続するより安定しているかも~
コレなら、安定してSONYブラビアF1(40)もネットに接続できるようになるな。

次は、「LA FONERA+」をDD-WRTのファームに書き換えて遊んでみよう。

投稿時間: 20:57

LA FONERA+ が届いた

本日、商品が届いた。

早速設定に入りたいが、先ずは素のままで設定してみた。
この「LA FONERA+ 」は無線信号が2つあるらしい。
1つは、ローカル用。
もう一つは、Wi-Fiコミュニティ用に公開される無線。
Fonの会員同士が、Wi-Fiを共有しあい、何処でもネット環境を提供しあうものらしい。

っと言うことで、先ずは会員登録。

これは、比較的簡単に登録する事が出来た。

この情報を元にFONの設定を行う。

設定が完了すると、「MyPlace」と「FON_AP」の無線が使えるようになった。

暗号化された「MyPlace」がローカル用。
暗号化なしの「FON_AP」はパブリック用。

それぞれに接続してみたが、ローカルとパブリックが交わることは無い。
DHCPで割り振られるIPも全く違うIPになる。

コレであれば、安全にWi-Fiを皆に提供できますね。
便利な時代になりましたね~
 

投稿時間: 10:39

LA FONERA+ を購入

自宅のTVが駄目になったので、SONYブラビアF1を購入した。
このブラビアF1はDLNAに対応しているため、ネットワーク上のデータを再生できるらしい。
しかし、ブラビアのDLNAは完全ではないらしく、ちょっとしたカスタマイズを行わないと動画は再生できないらしい。

その前に、宅内ネットワークとブラビアを繋ぐ必要がある。
しかし、宅内ネットワークとTVは離れているため、LANケーブルで繋ぐには無理がある。

そこで、以前知り合いから頂いた「Buffalo WLI-TX4-G54HP」なるイーサネットコンバータ(子機)があった。
コレを、既存で使ってる無線ルータ「Planex BRC-W14VG-BT」に接続を行ってみたが、何をやっても繋がらない。
相性の問題なのだろうか?
それとも、メーカーが意図的に接続できないようにしているのだろうか?

そこで、安く購入できる機器を探してみた。
イーサネットコンバータでも無線LANでも、どちらでも構わない。
安ければよいし、繋がればOK。

そこで、Planex製のイーサネットコンバータを検討してみたが、気が進まない・・・・

そこで、既存の宅内ネットワークとは別に、無線LANネットワークを構築するプランを立ててみた。

そこで、浮上したものが「LA FONERA
現在キャンペーン中で送料は無料になるらしい。
 
それに、機器自体が安い。
失敗しても後悔しない金額だろう。

ネットで「LA FONERA」を調べてみると、面白い記事を見つけた。
ファームウェアを書き換えて、カスタマイズ満載のルータが構築できるらしい。
※Linuxベースのファームウェア

「LA FONERA」はOpenソースの「OpenWRT」をベースに開発されているらしいが、「OpenWRT」はコマンドベースの設定になる。

そこで、登場するのが「DD-WRT」。
コレは、「OpenWRT」のGUI強化版らしく、色々と遊べるらしい。

っと言うことで、早速購入してみた。

今回購入した機器は、「LA FONERA+」と言って、WANとLANと無線LANがつかえるタイプ。
安い「LA FONERA」でも良いのだが、ネットの情報によると無線の電波出力が若干強いらしい。

来るのが待ち遠しい~~

投稿時間: 12:34

proxyサーバ構築

squidとSFSでproxyサーバ構築を構築してみた。

参考サイトは
http://www.iajapan.org/rating/
http://ugawalab.miyakyo-u.ac.jp/f6/suzuki/
http://linux-security.jp/index.php?id=33
http://cri.univ-tlse1.fr/blacklists/

時間が無くて、詳細書けず~
でも、構築方法は上記URLを参考にしただけです。

SFSは日本語サイトのDBを持っているので、以外に引っかかりますね。
お子様の居る家庭では、使えるかも!

投稿時間: 13:23

TeraTermで使えるSSHの共有鍵の作成

最近SSHの無差別アクセスが増えている。
我が家のサーバも例外ではない!

今までは、hosts.allowで制限を掛けていたが、モバイル環境でのアクセスが出来ないため特定のサーバに鍵をセットしてみた。

SSHには2種類存在する。
最近はSSH2が主流だが、SSH1の鍵作成も試験的に行ってみた。

■SSH1
# su - test ← testは例ですので間違わないように!

$ ssh-keygen -t rsa1 ← 鍵の作成
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/test/.ssh/identity):> ← ENTER
/home/yosi/.ssh/identity already exists.
Enter passphrase (empty for no passphrase): パスワードを入力
Enter same passphrase again: 再度パスワードを入力(確認)

$ ls -al .ssh/ ← 鍵ペアの確認
total 20
drwxr-xr-x 2 test test 4096 Aug 11 21:22 .
drwxr-xr-x 9 root root 4096 Aug 6 12:27 ..
-rw------- 1 test test 532 Aug 11 21:22 identity ← 秘密鍵
-rw-r--r-- 1 test test 336 Aug 11 21:22 identity.pub ← 公開鍵

$ cd /home/test/.ssh/ ← yosiの部分は各自の環境に

$ cp identity.pub authorized_keys ← 公開鍵をauthorized_keysに出力

$ rm -f /home/test/.ssh/identity.pub ← 元の公開鍵を削除

$ chmod 600 /home/test/.ssh/authorized_keys ← 公開鍵のパーミッションを自分のみアクセス可能に変更

※rootで作成した場合は、chownでユーザーに権限を変更しておく!


DLしたら

# rm -f /home/yosi/.ssh/identit を削除


■SSH2
$ ssh-keygen -t rsa ← 鍵の作成
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa): ← ENTER
Enter passphrase (empty for no passphrase): パスワードを入力
Enter same passphrase again: 再度パスワードを入力(確認)
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx hoge@hoge.com


上記のコマンドで出来た、id_rsa が秘密鍵、id_rsa.pub が公開鍵。

$ cp identity.pub authorized_keys ← 公開鍵をauthorized_keysに出力

$ chmod 600 /home/test/.ssh/authorized_keys
         ← 公開鍵のパーミッションを自分のみアクセス可能に変更

# rm -f /home/yosi/.ssh/id_rsa を削除


こんな感じかな~

投稿時間: 11:36

CentOS5.2にrpmでPostgreSQL8.3を入れてみる。

暇なときにネットで色々見ていたら、PostgreSQL8.3の動作が速いとの情報が出ていた。
試験も兼ねて、我が家のサーバにインストールしてみた。

インストールは、先日購入したばかりのartigo。
どうせインストールするのであれば、管理しやすいRPMで入れてみた。

# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-4.noarch.rpm
# rpm -ivh pgdg-centos-8.3-4.noarch.rpm
準備中... ########################################### [100%]
1:pgdg-centos ########################################### [100%]

専用のrepoが入ったので、元々は入っているrepoが競合しないように修正を加える。
# vi /etc/yum.repos.d/CentOS-Base.repo

[base]
exclude=postgresql* ← 追加

[updates]
exclude=postgresql* ← 追加

環境が整ったので
# yum install postgresql-server
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
postgresql-server i386 8.3.3-1PGDG.rhel5 pgdg83 4.6 M
Installing for dependencies:
libxslt i386 1.1.17-2.el5_1.1 updates 485 k
postgresql i386 8.3.3-1PGDG.rhel5 pgdg83 1.7 M
postgresql-libs i386 8.3.3-1PGDG.rhel5 pgdg83 204 k

データベースを初期化
# su - postgres
$ initdb -E UTF-8 --no-local

起動
# /etc/init.d/postgresql start

問題なくインストールと起動が出来た。

このマシンで、どれほどのパフォーマンスがでるのやら・・・・・

投稿時間: 18:36

ARTiGOは初期不良だった。

昨日、ARTiGOが戻ってきた。
早速、OSのセットアップ。

今回は途中で電源が落ちることは無いようだ・・・・。
USBからbootinstallを行い、なんとかインストール完了。

マザーボードは交換されたので問題は無いが、メモリやHDDのチェックを行うことにした。
メモリのチェック・・・・
BIOSで正常認識しているし、OSのインストールも問題なかったので不具合は無いだろう!!
※メモリをチェックする方法は他にあるのだろうか?

次にHDDのチェック。
SMARTにてチェックを行ってみた。

# smartctl -a /dev/hda を実行

んにゃ? エラーが出てるんですけど~
どうやら、セクタのエラーらしいけど、これも不良品か?

とりあえず、ハードディスクのセルフチェックを行ってみた。

# smartctl -a -t long /dev/hda を実行。

今日はココでタイムアップ。

投稿時間: 00:04

ARTiGOの初期不良

昨日色々と手を尽くし作業していたが、インストールできず、途中で電源が切れてしまう。
購入した店からメールが届いていた。
「初期不良の可能性があるので、一旦返却して欲しいとの事」

面倒だが、綺麗に梱包しなおし、送る準備。

めんどうくせ~

投稿時間: 15:30

ARTiGOがきた~

昨日注文した「ARTiGO」が届いた。
早速「夏の工作」を開始。

今回購入したのは「ARTiGO」と1Gのメモリ、そして160GB のSATA(7200rpm)の3点。

組み立ては非常に簡単。
こんな感じで、組み上げる。

この機器には、CDROMドライブが付いていない。
わざわざ購入するのも馬鹿らしい。
今回は、netinstallを行うのだが、usbbootで作業してみることにした。

usbbootを行うためググって見ると、比較的簡単にboot出来るらしい。
今回インストールするのはCentOS5.2

近くのFTPサイトより「diskboot.img」をDLし、USBメモリに書き込む。
そのままコピーではつかえない。
ddコマンドでコピーする必要があるが、今回は「DDWin_Ver099」を使い、WinPCにて作成してみた。

準備が出来たところで、早速usbboot。

ん?
電源を入れるも、数秒で電源が切れる。
何度やっても、電源が切れる。

もしや、メモリとの相性問題?

BIOSを起動し各種確認。
HDDもメモリも認識している。

あれ?
BIOSを起動した状態でも、電源が切れるぞ!!

NotePCのメモリと規格が同じなので、差し替えて挑戦してみる。
やはり、現象は同じだ。

何度やっても駄目。
こりゃ~初期不良かな?

時間も遅いので、購入した店にメールして対応を待つとしよう!

投稿時間: 12:16

ARTiGOの購入

我が家には[DELL SC420]をメインサーバとして、玄箱3機種の計4台のサーバが稼動している。
夏のせいか、DELL SC420のFANの音が大きく感じる。
寝室に置いてあるので、夜間はエアコンで冷えているので、音はさほど気にならないが、日中の暑い時間帯は、轟音をたてている w

以前より狙っていた「ARTiGO」がリビジョンアップし、SATAのHDDが利用可能になった。
ARTiGOはPicoITXのEPIA-PX10000Gに5インチベイの取り付け可能なケースがセットになったKITです。

IDEの時から欲しかったのだが、購入に踏み切れなかった。
しかし、何気にkakaku.comを閲覧していると「B1」が付いた「ARTiGO」が出回っている。

「ほしい!」

価格も安定しているようなので、今回購入に踏み切った。
本日中に注文すれば、明日には届きそうw

夏季休暇の「夏の工作」に間に合いそうだ!

投稿時間: 13:04

LinuxでNIC Bonding

データセンタの運用を行っていると、様々なトラブルに遭遇することが多い。

今回は、NICの障害。

HWには2枚のNICが搭載されている。
しかし、2つのNICそれぞれ役割を持っているため、NICの2重化までは行っていなかった。

そこで、今回総数4つのNICを利用し、冗長化を行うことにした。

先ずはGoogleでググって見ると、Bondingで対応できるらしい。
設定関連を確認すると、比較的簡単だ。

1、bondingモジュールの読み込み
今回は、耐障害性と負荷バランシングのmode=0で定義してみた。

# vi /etc/modprobe.d/bonding
alias bond0 bonding
options bonding mode=0 miimon=200
alias bond1 bonding
options bonding mode=0 miimon=200

※オプションは以下の通り
mode=0 ラウンドロビン(デフォルト)
mode=1 アクティブバックアップ
miimon=0 MIIを使用しない(デフォルト)
miimon=100 MIIを使用してLinkのモニタを行う


2、 bondingインターフェースの定義
基本的には、ifcfg-ethXと同様の設定の為、eth0をコピーして設定してみた。

# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-bond0
# vi ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
BROADCAST=192.168.100.255
IPADDR=192.168.100.1
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.100.0
ONBOOT=yes

# vi ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# vi ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes


# cp ifcfg-bond0 ifcfg-bond1
# vi ifcfg-bond1
DEVICE=bond1
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.1
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes

# vi ifcfg-eth2
DEVICE=eth2
BOOTPROTO=static
ONBOOT=yes
MASTER=bond1
SLAVE=yes

# vi ifcfg-eth3
DEVICE=eth3
BOOTPROTO=static
ONBOOT=yes
MASTER=bond1
SLAVE=yes

設定が完了したら、一度再起動し、確認を行う。

ifconfigにて以下の情報が出れば設定はOK。

bond0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
bond1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
eth1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
eth2 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
eth3 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
lo Link encap:Local Loopback
※一部省略

次に実際にLANケーブルを抜き差しして、正常に通信できるかを確認。

設定はコレだけ。
非常に簡単だ。


投稿時間: 11:45

玄箱PROにNagios-3 其の弐

先日、玄箱PROにNagiosを入れてテスト運用していたが、非常に重い。
アラートを飛ばすのに、MTAも動かしていたのだが、ついでと言うことでPOPも動かし、ウィルス・SPAM対策も施していた。
これが原因で、重くなっていたようだ・・・。
重いだけなら良いのだが、連続してメールを受信するとアラートのメールを送信できないくらいに重くなることもしばしば・・・
コレでは使い物にならない。

ってことで、ウィルス・SPAM駆除関連を外してみた。

コレで、様子を見てみよう~~

ARMでは重過ぎるのかな~

投稿時間: 14:37

玄箱PROにNagios-3

玄箱PROにNagios-3.0.1を入れてみた。

過去にNagios-1.2を使い、最近ではNagios-2.9を使っていた。
1.2から2.9の違いは感じたが、2.9から3の違いは、さほど感じない。

メジャーUPDATEなので、使いやすくなっているはずだが、違いが解らない・・・・・ w

しばらく遊んでみよう~

投稿時間: 01:06

玄箱ProFedora8でiptablesを設定してみる 其の弐

以前、玄箱ProFedora8にiptablesの設定を施していたが、再起動の都度「/sbin/modprobe iptable_filter」等々を行っていた。

毎回面倒なので、起動時に自動的にマウントするようにしてみた。

# cat /etc/rc.modules
# "そのようなファイルやディレクトリはありません"
# echo -n > /etc/rc.modules
# vi /etc/rc.modules
==============================
#!/bin/sh
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_state
/sbin/modprobe ipt_REJECT
/sbin/modprobe xt_multiport
==============================

# chmod o+x /etc/rc.modules

ココまで出来たところで再起動。

立ち上がったら、
# lsmod でモジュールがマウントされてることを確認
参考までに、我が家の玄箱Proでは
# lsmod
Module Size Used by
xt_multiport 3072 0
ipv6 240812 12
ipt_REJECT 3040 0
xt_state 2016 0
ipt_LOG 5632 0
ipt_MASQUERADE 3072 0
iptable_nat 5960 0
nf_nat 16598 2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4 14824 2 iptable_nat
nf_conntrack 58744 5 xt_state,ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4
iptable_filter 2624 0
ip_tables 10672 2 iptable_nat,iptable_filter
x_tables 13316 7 xt_multiport,ipt_REJECT,xt_state,ipt_LOG,ipt_MASQUERADE,iptable_nat,ip_tables

こんな感じになってます。

投稿時間: 00:59

ドコモのi-modeメールで「500 Line Too Long」のエラー

取引先より連絡が入った。
「携帯に(ドコモ)メールを送っても、送信できず戻ってきてしまう。」
との連絡。

戻ってきたメールを「添付」にて送ってもらうことにした。

届いたメールを確認すると、以下のようなメッセージがあった。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Hi. This is the qmail-send program at hogehoge.co.jp.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

:
203.138.181.240 failed after I sent the message.
Remote host said: 500 Line Too Long
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

メッセージの内容では「Remote host said: 500 Line Too Long 」
長いぞ!と怒っている様子。

この取引先はLinux+qmailの組み合わせで利用している。
先ずはメールサーバのログを確認してみた。

ドコモのメールサーバ側で拒否されているような感じ。

「Remote host said: 500 Line Too Long 」このメッセージをググって見ると、結構出てきますね。

大きく分けると2通りあるようす。

1、段落(区切り)なしで1行の長い文章のメールを送る。
2、容量制限を越えたメール。

そこで、送っていただいたメール本文をコピペしてテキストエディタで開いてみると、1行の文章で1040バイト分の文字
1文字を2バイト換算すると、520文字。
ヘッダー情報を含めると、結構大きなデータになる。

今回のエラーは1行の長い文章(500文字を超えていた)での障害だったようだ。

AUやソフトバンクではこのようなエラーは出ていないようなので、ドコモにも頑張っていただきたいところですね。

投稿時間: 00:41

玄箱をFedora9-Beta化?

ようやくFedora9-Betaが出たようです。
早速upgradeしてみようとFTPサイトを覗いてみた。

肝心のパッケージがFedora9-Alphaと同じまま・・・・。
・fedora-release
・fedora-release-notes

yum updateを行うと、新しいパッケージにupdateはされるみたい。

本当にBetaになっているかは不明。

それと、問題になっている時刻に関しては改善していない。
根本的にソースの手直しが必要なのかもネ。

投稿時間: 00:03

今回の成果物

今週、サーバ6台を横浜方面のデータセンタに納品してきました。
今回も全てLinuxです。
全てのサービスの設定は完了していませんが、ラックにマウントした段階で「パチリ」と記念撮影。

初期不良で1台のサーバに不具合が出てて、作業が進みません!!

serv.JPG

serv-b.JPG

※今回、設置したデータセンタは初めて行きましたが、サーバルームは結構「暑かった」です。
 日頃使ってるデータセンタのほうが良いですね。
 設備も新しいし、サーバにもやさしい環境だし・・・・。

投稿時間: 15:45

超簡単なバックアップスクリプト

NFSでマウントし、バックアップを行っているが、毎度FULLバックアップも出来ないので、以下のようなスケジュールでバックアップを取ることにした。

日 - 全てのバックアップの削除&Fullバックアップ。
月 - 日からの差分バックアップ
火 - 月からの差分バックアップ
水 - 火からの差分バックアップ
木 - 水からの差分バックアップ
金 - 木からの差分バックアップ
土 - 金からの差分バックアップ

これを実現するためには、簡単なshellを作らなければならない。
たいした知識も無いので、簡単なスクリプトで行ってみた。

作成したshellは2つ。

Fullバックアップを取るためのshell。
そして、差分のみを行うshell。

1つのshellで行うことも出来ると思うのだが、俺には無理っす。

んで、こんな感じで作成してみた。

# cd /root
# vi full-nfsbackup.sh
+++++++++++++++++++++++++++++++++++++++++++
#!/bin/bash

##### 日付算出する
## ※当日の日付
d0=`date "+%Y-%m-%d"`

##バックアップ先まで移動
cd /mnt/nfsclient/backup

##古いデータを一気にを削除
rm -f *-nfsbackup.tar

##バックアップ実行
tar cvf ${d0}_home01-full-nfsbackup.tar /mnt/share
+++++++++++++++++++++++++++++++++++++++++++

# vi diff-nfsbackup
+++++++++++++++++++++++++++++++++++++++++++
#!/bin/bash

##### 日付算出する
## ※当日の日付
d0=`date "+%Y-%m-%d"`

## ※前日の日付
d1=`date -d '1 day ago' "+%Y-%m-%d"`

##バックアップ先まで移動
cd /mnt/nfsclient/backup

##差分バックアップを前日のAM5時までに行われたもののみ実行
tar cvf ${d0}_home01-diff-nfsbackup.tar -N "${d1} 05:00:00" /mnt/share
+++++++++++++++++++++++++++++++++++++++++++

作成したshellの実行権与える。
#chmod 700 vi full-nfsbackup
#chmod 700 vi diff-nfsbackup
 ※念のため、rootのみ実行できるようにしておく

これをcronに登録する。

# crontab -e
0 5 * * 0 sh /root/full-nfsbackup.sh  ← 日曜日のAM5時に実行
0 5 * * 1-6 sh /root/diff-nfsbackup.sh ← 月~土曜日のAM5時に実行

これで、しばらく様子を見てみよう!

投稿時間: 00:01

バックアップが遅い。

先日、NFSマウントしてバックアップ環境を作成したが、アーカイブしているせいなのか、そもそもコピー速度が遅いのか、相当時間が掛かる。

単純にコピーすると以下のような結果が出た。

++++++++++++++++++
real 333m34.942s
user 0m48.028s
sys 51m3.300s
++++++++++++++++++

毎回、このような状態だと他の用途に使うことが出来ない。
そこで、差分をコピーする方法を考えてみた。

tarのオプションで有効と思われるものは次の通り・・・。

-d  アーカイブとファイルシステムとの差分を取る
-r  アーカイブの最後にファイルを追加
-u  アーカイブ内の同名のファイルより新しいものだけを追加
-N  指定した日付より新しいファイルだけ格納

shellを作成してcronにて回すことを考えると、「-N」が簡単そうな気がする。

そこで、こんな記述で実行してみた。
先ず通常にバックアップ
# tar cvf 2008032001_backup.tar /mnt/share

相当時間が掛かったが、確実にバックアップが取れた。
差分が発生するように、いくつか更新&新規データを格納する。

そして差分バックアップを実行。
# tar cvf 2008032002_backup.tar -N "2008-03-20 11:00:00" /mnt/share

取れたデータは以下の通り
-rw-r--r-- 1 root root 74891653120 2008-03-20 10:06 2008032001_backup.tar
-rw-r--r-- 1 root root 3466393600 2008-03-20 11:15 2008032002_backup.tar

確実に差分のみアーカイブされている。

これを、簡単なスクリプトで回せば玄箱の負荷を軽減できそう。

たとえば、こんな感じ。
日 - 全てのバックアップの削除&Fullバックアップ。
月 - 日からの差分バックアップ
火 - 月からの差分バックアップ
水 - 火からの差分バックアップ
木 - 水からの差分バックアップ
金 - 木からの差分バックアップ
土 - 金からの差分バックアップ

※本来はバックアップを取得した後に古いデータを削除したいが、HDDの容量が少ない為断念。

参考サイト:ミラクルリナックス

投稿時間: 11:34

WordPressを入れてみた。

最近「WordPress」と言う、Blogツールを見かける。
GoogleのTrend historyによると、「Movable Type」よりも 「WordPress」を使う人が多いらしい。
でも、日本では受け入れられないのだろうか?

って、事で試しにインストールしてみた。

非常に設定も簡単で、すごくシンプル。
無料のテンプレートもネットに落ちてるし・・・
SEOに特化したテンプレート(有償)もちらほらと・・・

簡単に引越しが出来ればな~~

投稿時間: 18:01

玄箱を玄箱HGでNFSマウント

日頃、玄箱HGをメディアサーバ(音楽・動画)の保存先として利用している。
ついでに、仕事のデータも保存。

出来る限り、クライアントPCには保存しないように心がけている。
しかし、保存しているデータが飛んでしまっては、話にならない・・・。
せっかく歴代の玄箱を所有しているのだから、うまく利用する必要がある。

玄箱PROは現在不安定な状態(一部のアプリケーションが動かない)なので、現在は"お遊びサーバ"になっている。

定期的にバックアップを行うのであれば、安定して動作する機器が良い。

そこで、余ってる(無駄に余ってる訳ではないが・・・)初代玄箱をバックアップサーバにすることにした。
テスト用のサーバにも使いたいのだが、頻繁にバックアップを取るわけではないので、問題ないでしょう!

そこで、こんな構成で組んでみた。

NFSサーバ    : 玄箱
NFSクライアント : 玄箱HG

NFSサーバになる玄箱に
# yum -y install nfs-utils

にてインストール。
※Fedora8の場合、rpcbindがマッピングさせるデーモンになるので、インストールされていなければ、インストールを行う。

各種設定Fileに必要事項を書き加え、NFSクライアントにてマウントさせる。

以外に簡単に構築できる。

では、実際にバックアップを行ってみたが、非常に遅い。
単純にコピーでも良かったが、今回はアーカイブして保存してみた。

夜中にバックアップさせることを考えれば、遅くても問題は無いでしょう!

投稿時間: 18:00

急ぎの仕事がやってきた! → とりあえず終了 っと思ったが・・・。

急ぎの仕事が、とりあえず一段落した。
 
 
 
っと思ったが、また新たに仕事が入りそうぅ。
結構睡眠不足でつらいかも。

そういえば・・・・
最近、玄箱いじってないな~

投稿時間: 18:36

急ぎの仕事がやってきた!

昔の仲間から連絡が入った。
「近日、サーバの設定をお願いしたい。」

内容を聞いてみると・・・・・
「Webサーバ2台、DBサーバ1台、テストサーバ1台。 Webサーバはロードバランスさせ、1台がコケた場合、テストサーバを代替」させたいらしい。
4台の構築は全く問題ないが、ロードバランスはどうなるの?って思っていたら、LVS(Linux Virtual Server)で冗長させるらしい・・・
LVSか~ 高負荷に耐えられるのだろうか~
きちんと冗長するのだろうか~~

色々試して遊んでみようっと!

投稿時間: 23:44

玄箱HG Fedora8化への道 №4 (玄箱HGのデータ引越し 其の七)

玄箱HGをリカバリする前にバックアップを取った。
そのバックアップデータを玄箱HGに戻さなければならない。

その為には、sambaとmt-daapdのサービスを立ち上げる必要がある。
昔、作業した内容のままではmt-daapdの構築が出来なかった。
玄箱HG Fedora6でiTunesServer ← 多分、Fedora6用に作成されたパッケージだからでしょう。

http://koji.fedoraproject.org/packages/mt-daapd/0.2.4.1/5.fc8/ppc/mt-daapd-0.2.4.1-5.fc8.ppc.rpm
からmt-daapdを持ってきて、インストール。
※依存関係で足らないパッケージを入れる必要がある。 メモるの忘れたし・・・

rebuildしない分、簡単に作業できた(^^♪

そして、先日バックアップを取ったUSBのHDDをマウントして、一気に解凍。
時間は掛かるが、確実に復旧できる。

投稿時間: 00:05

玄箱HG Fedora8化への道 №3 (玄箱HGのデータ引越し 其の六)

玄箱HGも基本的なFedora8環境が出来た。

少しずつ環境を整えていきましょう。

1、先ずは、WebminをインストールしてWebから簡単に管理できるようにしましょう。

Webminはwww.webmin.orgから最新版をGET
おっと・・・
その前に、SSL通信が出来るようにperl-Net-SSLeayを先にインストールしておく。
   # yum -y install perl-Net-SSLeay

完了したら、Webminの最新版をwgetしてインストールする。
これで、安心してアクセスできる。

2、コマンドでメールが遅れるようにmailxをインストール。
   # yum -y install mailx

3、cpanのperlモジュールを簡単にインストールできるようにする。
   (rpmパッケージ化してインストールさせる)

   # yum -y install perl-ExtUtils-MakeMaker ← インストールされて無い場合。
    ※cpan2rpmに必要なExtUtils::MakeMakerインストール。

   # yum -y install cpan2rpm
    ずらずらとインストールされる。

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
cpan2rpm noarch 2.028-2.fc8.1 fedora 60 k
Installing for dependencies:
perl-Compress-Raw-Zlib ppc 2.005-3.fc8 fedora 58 k
perl-Compress-Zlib noarch 2.005-2.fc8 fedora 34 k
perl-HTML-Parser ppc 3.56-2.fc8 fedora 113 k
perl-HTML-Tagset noarch 3.10-6.fc8 fedora 15 k
perl-IO-Compress-Base noarch 2.005-2.fc8 fedora 53 k
perl-IO-Compress-Zlib noarch 2.005-2.fc8 fedora 135 k
perl-libwww-perl noarch 5.808-3.fc8 fedora 373 k

Transaction Summary
=============================================================================
Install 8 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 841 k


4、crondが使えるように必要なパッケージをインストール
   # yum -y install vixie-cron

インストールが終わったら、時間合わせをcrondで行わせる。
※ntpdで同期させるまでの必要な無いでしょう??

   # crontab -e
   1 1 * * * /usr/sbin/ntpdate ntp.dnsbalance.ring.gr.jp
   2 1 * * * /usr/sbin/hwclock -w

投稿時間: 21:50

玄箱HG Fedora8化への道 №2 (玄箱HGのデータ引越し 其の五)

無事Fedora7化できたら、次はFedora8へのupgradeの準備。

参考サイトはこれ

1、yumの不具合を修正(Fedora7 PPC版のyumで不具合が出ている為。)
   /usr/lib/python2.5/site-packages/yum/packages.py の
   30行目付近の"import Errors"の下に
   import md5
   を追加。

   658行目付近の"self.hdr[rpm.RPMTAG_SIGMD5]"下記の行の下に
   if not self.pkgid:
   self.pkgid = md5.new(str(self.hdr)).hexdigest()
   を追加。

   ※上記の内容で、正常に動かない場合は次のように変更すると動く場合がある。
   +++++++++++++++++++++++++++++++++++++++++++++++++
   self.pkgid = self.hdr[rpm.RPMTAG_SHA1HEADER] or \
      self.hdr[rpm.RPMTAG_SIGMD5]
   if not self.pkgid:
   self.pkgid = md5.new(str(self.hdr)).hexdigest()
   self.packagesize = self.hdr['size']
   self.__mode_cache = {}
   self.__prcoPopulated = False
   +++++++++++++++++++++++++++++++++++++++++++++++++
     ↓  ↓  ↓ 書き換え
   +++++++++++++++++++++++++++++++++++++++++++++++++
   self.pkgid = self.hdr[rpm.RPMTAG_SHA1HEADER]
   if not self.pkgid:
      self.pkgid = self.hdr[rpm.RPMTAG_SIGMD5]
   if not self.pkgid:
      self.pkgid = md5.new(str(self.hdr)).hexdigest()
   self.packagesize = self.hdr['size']
   self.__mode_cache = {}
   self.__prcoPopulated = False
   +++++++++++++++++++++++++++++++++++++++++++++++++

2、Fedora8の必要パッケージをGetする。
   Fedora8のPPCのサイトへ行き、次の2つをwget

  入手先
   http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/8/Fedora/ppc/os/Packages/
    や
   http://ftp.riken.jp/Linux/fedora/releases/8/Fedora/ppc/os/Packages/

   ・fedora-release-8-3.noarch.rpm
   ・fedora-release-notes-8.0.0-3.noarch.rpm

3、[2、]でwgetしたパッケージをインストール(UPDATE)
   # rpm -Uvh fedora-release-8-3.noarch.rpm fedora-release-notes-8.0.0-3.noarch.rpm

4、念のため掃除
   # yum clean all
    ※packages.pyの修正が成功していればエラーは出ない。


5、yumコマンドにて「yum」と「rpm」をFedora8のパッケージへupgradeする。
   # yum update rpm\* yum\*
    ※packages.pyの修正が成功していればエラーは出ない。
     エラーが出る場合は、何処かがおかしいはずw

6、一気にupgrade
   # yum -y upgrade

7、Base Groupをアップデート
   # yum groupupdate Base

8、一度、再起動。

9、Fedora8 になって公式から消えたパッケージ(rpm)を調べる。
   # yum install yum-utils  ← yumのユーティリティをインストール
   # package-cleanup --orphans
    Setting up yum
    kernel-2.6.21-1.3194.fc7.ppc

10、rpmデータベースの依存関係のチェック
   # package-cleanup --problems
   Setting up yum
   Reading local RPM database
   Processing all local requires
   No problems found

11、二重になっているパッケージの調査
   # package-cleanup --dupes
   Setting up yum

   重複パッケージが見つかったら、次のコマンドで消しておく。
   # package-cleanup --cleandupes

12、rpmdb の再構築
   # rm -f /var/lib/rpm/__* ; rpm --rebuilddb

13、必要であれば開発環境をインストール
   # yum groupinstall "Development Tools"
   Setting up Group Process
   Fedora-8-comps.xml 100% |=========================| 1.2 MB 00:00
   comps-f8.xml 100% |=========================| 1.2 MB 00:00
   Package gcc - 4.1.2-33.ppc already installed and latest version
   Package binutils - 2.17.50.0.18-1.ppc already installed and latest version
   Resolving Dependencies
   --> Running transaction check
   ---> Package diffstat.ppc 0:1.43-6.fc8 set to be updated
   ---> Package pstack.ppc 0:1.2-7.2.2 set to be updated
   ---> Package python-ldap.ppc 0:2.3.1-1.fc8 set to be updated
   ---> Package cvs.ppc 0:1.11.22-12.fc8 set to be updated
   ---> Package ccache.ppc 0:2.4-11.fc8 set to be updated
   ---> Package indent.ppc 0:2.2.9-16.fc7 set to be updated
    :
    :
    :
   perl-URI noarch 1.35-3.1 fedora 116 k
   qt ppc 1:3.3.8-9.fc8 fedora 3.8 M
   sudo ppc 1.6.9p4-3.fc8 updates 238 k
   systemtap-runtime ppc 0.5.14-1.fc8 fedora 34 k
   xorg-x11-filesystem noarch 7.1-2.fc6 fedora 5.5 k
   zip ppc 2.31-3.fc7 fedora 134 k

   Transaction Summary
   =========================================================================
   Install 75 Package(s)
   Update 0 Package(s)
   Remove 0 Package(s)

   Total download size: 56 M
   Is this ok [y/N]: y  ← [y]で一気にインストール

   その後、自動的に75個のパッケージがインストールされる。
   ※時期によってインストールされる数やパッケージが異なる場合があります。

14、Fedora8に適応したkernelに差し替えが出来れば、完璧ですね。
   今回は、Kernelの差し替えは無し・・・
   暇を見てkernelでも作りましょう。

投稿時間: 20:50

玄箱HG Fedora8化への道 №1 (玄箱HGのデータ引越し 其の四)

相当な時間を掛けて、玄箱HGのバックアップを取ることが出来た。
その他必要な設定Fileを探し、個別にバックアップ。

++++ その前に今回のハード構成 ++++++++++++++++++++++++++++++++++++++++
筐体  : 玄箱HG
HDD  : HITACHI Deskstar 164.7GB (Model:HDS722516VLSA80 SATA)
その他 : KURO-SATA
        ↑↑ これは、玄箱HGにSATAディスクを取り付ける為の変換基板。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

インストールを行う前に、事前準備を行う。

1、玄箱HGを「EMモード」に切換える。
 再起動し、「DISK FULL」点灯時に電源ボタンを一回押し。
 起動後、echo -n 'NGNG' > /dev/fl3 を投入。
 これで、EMモードで起動出来る。
 ※これは、Fedora6化を行っていた為、上記の作業が出来る。

2、既存データの削除。
 HDDを取り外し、HDDを初期化する。
 一度、全てのパーティションを削除し、1つのパーティションを切る。
 そして、NTFSにてフォーマット。 ← 非常に時間が掛かる。
 フォーマットが終わったら、上記で作成したパーティションを削除。
 ※パーティションが切られていると、インストール作業が出来ない為。

 色々な方法でHDDの初期化は出来るが、今回はHDDをUSB化させる「デジタルカウボーイの
 DC-ACHD1/B
 を利用した。
 これは、SATA・IDE(3.5&2.5)に対応していて非常に重宝。
 購入してしばらく経つが、2年前ほど前にヨドバシカメラで2,980円で購入。

《お勧め》
 その他に、もっとも簡単なHDD初期化は、EMモード時に「mfdisk -c /dev/hda」でも初期化は
 可能です。

3、HDDの取り付け
 初期化が終わったHDDを玄箱にセットする。
 KURO-SATAを使っているので、IDEケーブルの引き回しに苦労したw

4、Fedora7をインストール。
 ん? Fedora8じゃないの? って思いでしょうが、Fedora8化にいきなり出来るKITが無いため、
 とりあえずFedora7化。
 できる!玄箱 Fedora化!!(F-7対応)から、「F4K Install Kit」を入手。
 手順に従い、インストール。
 今回のパーティション構成はこんな感じで構築
  ・/dev/hda1  基本領域 ・・・ 512Mbyte
  ・/dev/hda2  swap領域 ・・・ 512Mbyte
  ・/dev/hda3  Fedora領域 ・・・ 20Gbyte ← こんなには必要ないですw 10Gbyteでも充分
  ・/dev/hda4  /mnt ・・・・・・・・ 残り全部

 インストールが終わると、自動的に電源が落ちる。
 ※再起動するも、一回目は正常に起動しないため、一度コンセントを抜いてしばらく待つ。
   そして、起動。 デフォルトのパスワードで無事起動

5、環境整備
 Fedora7化が済んだら、とりあえず宅内環境に合わせる。
 rootのパスワード変更
 ユーザー作成
  :
  :
  :

投稿時間: 16:30

玄箱HGのデータ引越し 其の三

玄箱HGはFireServerとiTunes(mt-daapd)のサーバも兼用していた。
リカバリ前に気がついて良かった^_^;

早速バックアップを取ってみようと思う。
そのままコピーでは時間が掛かるし、途中でエラーが出る場合があるので、ちょいと面倒。
余ってるUSBのHDDをマウントして、圧縮しながら移動させようと思う。

該当ディレクトリまで降りて

# tar cvf バックアップ名.bak ターゲットディレクトリ

↑こんな感じで圧縮実行。

全部で70GB程度のデータがあるので、何時間掛かるのやら・・・
やりっぱなしで、寝てしまおう。

明日には終わってるでしょう。

投稿時間: 00:11

玄箱HGのデータ引越し 其の二

玄箱HGからDellSC420に引越しを行うため、昨晩DNSの設定を一部変更していた。
時間的にそろそろOKでしょう。

では早速作業することにする。

先ずは、玄箱HG(FedoraCore6)に入っているコンテンツを我が家のメインサーバであるDellSC420(CentOS4.6)に引越しを行う。

1、DellSC420にバーチャルドメインの設定を行う。
2、DellSC420にバーチャルドメインのメールアカウントを作成。
3、玄箱HGのコンテンツをバックアップ(tar cvf で圧縮)。
4、玄箱HGの各DBのバックアップ。
5、玄箱HGのバックアップをDellSC420に転送し、解凍(tar xvf で解凍)。
6、玄箱HGのバックアップDBをDellSC420に入れる。
7、DNSの切替を行い、玄箱HGからDellSC420に向ける。
8、コーヒーを飲みながら、DNSが切り替わるのを待つ。

TTLを600に変更していたので、10分程度で切り替わるはす。
切り替わったであろう時間にMTの管理画面にログインする。
玄箱HGとDevvSC420ではコンテンツの配置ディレクトリが違うので、新環境に合わせる。
※[設定] → [公開] →[ サイト・パス]の変更

念のため再構築を実行。
その後、完全に移行できているかを確認。

無事切り替わり完了。

※この投稿は新環境(DellSC420)で実施してみた。
 問題なく書き込みも出来た。

投稿時間: 22:39

玄箱HGのデータ引越し 其の一

最近、玄箱HGの動作が遅く感じるようになった。
OSもFedora6だし・・・・ そろそろバージョンアップも含め、再構築でも行ってみようと思う。

先ずは、瞬時にDNSが切り替わるようにTTLを替えておく。

$TTL 86400

  ↓↓↓

$TTL 600

引越しの実行は明日に行うことにしよう!!

投稿時間: 20:57

最近、玄箱HGの動作が重い

最近、玄箱HGの動作が遅くなったように感じる。
そもそも、搭載メモリの少なさや、CPUのクロックが低い為、遅いのは仕方が無い。
でも、構築したばかりの時は、もっと軽快に動いていたように思う。

プロセスを確認すると、さまざまなサービスが立ち上がっている。
不要なプロセスを減らすことで、メモリ使用率を下げ快適に動くであろうと考えた!

先ずは、Apacheから手をつけてみよう。
httpd.confを一部設定を変えるだけで、プロセス数を下げることが出来る。

■1箇所目
++++++++++++++++++++++++++
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

↓ ↓ ↓

KeepAlive Off
#MaxKeepAliveRequests 100
#KeepAliveTimeout 15
++++++++++++++++++++++++++

■2箇所目
++++++++++++++++++++++++++
MinSpareServers 5
StartServers 8

↓ ↓ ↓

MinSpareServers 2
StartServers 2
++++++++++++++++++++++++++

設定変更後、Apacheの再起動。

これだけでも、6個のプロセス減。

投稿時間: 15:36

玄箱ProFedora8でiptablesを設定してみる

先日、玄箱ProFedora8arm版のupdateの際にnetfilterがモジュール化させていたはず。
折角なので、テストしてみましょう。

先ずはiptablesのインストール。
# yum -y install iptables
fedora 100% |=========================| 951 B 00:00
primary.xml.gz 100% |=========================| 2.7 MB 00:06
fedora : ################################################## 9363/9363
updates 100% |=========================| 951 B 00:00
primary.xml.gz 100% |=========================| 921 kB 00:03
updates : ################################################## 2773/2773
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package iptables.armv5tel 0:1.3.8-6.fc8 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
iptables armv5tel 1.3.8-6.fc8 updates 248 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 248 k
Downloading Packages:
(1/1): iptables-1.3.8-6.f 100% |=========================| 248 kB 00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: iptables ######################### [1/1]

Installed: iptables.armv5tel 0:1.3.8-6.fc8
Complete!

無事インストールできた。
次に、モジュールをロードしてみる。

# /sbin/modprobe iptable_nat
# /sbin/modprobe ipt_MASQUERADE
# /sbin/modprobe iptable_filter
# /sbin/modprobe ipt_LOG
# /sbin/modprobe ipt_state
# /sbin/modprobe ipt_REJECT

とりあえず、こんなもので良いかな・・・。

# lsmod
Module Size Used by
ipt_REJECT 3456 0
xt_state 2016 0
ipt_LOG 5664 0
ipt_MASQUERADE 3072 0
iptable_nat 6052 0
nf_nat 16726 2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4 14888 2 iptable_nat
nf_conntrack 60624 5 xt_state,ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4
iptable_filter 2304 0
ip_tables 10568 2 iptable_nat,iptable_filter
x_tables 11748 6 ipt_REJECT,xt_state,ipt_LOG,ipt_MASQUERADE,iptable_nat,ip_tables
ipv6 235660 18

よしよし・・・

# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

今は、Filter掛けてないから何も出ていないが、きちんと動きそう。
細かい設定は後ほど・・・

投稿時間: 17:03

DBのバックアップ

このBlogのDBにMySQLを使っている。
普段はPostgreSQL派の私だが、試験と勉強を兼ねてMySQLを使っている。

MySQLのバックアップの設定はWebminの「Backup Database」にて行っていた。
何気にバックアップのディレクトリを確認したらこんな感じだった。

# ls -l

-rw-r--r-- 1 root root 134 1月 24 00:33 DB1.sql
-rw-r--r-- 1 root root 134 1月 24 00:33 DB2.sql
-rw-r--r-- 1 root root 134 1月 24 00:34 DB3.sql

あら? 容量が全部「134」
なんで? って事でWebminの設定を再度見直してみたが解らない・・・・

Webminで出来ないなら、自分でスクリプトを書くしかないじゃん!

超簡単なスクリプトを書いてみた。
※こんなんでいいのか?

# vi mysql-backup.sh
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/sh

##### 日付を算出する#######
## ※前日の日付を取得
d1=`date -d '1 day ago' "+%Y%m%d"`

## ※保存期間を31日間とする
d2=`date -d '31 day ago' "+%Y%m%d"`

##保存するディレクトリまで降りて~
cd /home/backupdirectory/mysql

##バックアップ実行
mysqldump -a --user=ユーザー名 --password=パスワード DB名 > ${d1}_DB名.mysql

##古いDBを削除
rm -f ${d2}_mt-db.mysql

#複数ある場合は繰り返し「バックアップ実行」「古いDBを削除」を記述
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

このスクリプトに実行権を与えて~~
# chmod 700 mysql-backup.sh ← rootのみの権限を与える。
# ./mysql-backup.sh ← そして実行!!
# ls -l

-rw-r--r-- 1 root root 26005 1月 24 00:53 DB1.sql
-rw-r--r-- 1 root root 134 1月 24 00:33 DB2.sql
-rw-r--r-- 1 root root 134 1月 24 00:34 DB3.sql

できた。
でも、こんなんでいいの??

それにしてもWebminでバックアップが出来ないのはバグなのか?
再度、Webminの設定を眺めてみた。
 ・
 ・
 ・

わからん???
じゃ~ 一括バックアップが出来ないのであれば、個別バックアップの設定ではどうなのよ?
って事で、やってみた。

# ls -l

-rw-r--r-- 1 root root 26005 1月 24 00:53 DB1.sql
-rw-r--r-- 1 root root 553155 1月 23 23:49 DB2.sql
-rw-r--r-- 1 root root 134 1月 24 00:34 DB3.sql

個別ならできるのね~~

でも折角書いたスクリプト。
日別でバックアップできるし・・・・ しばらく使ってみようぅ~

投稿時間: 00:59

pscan2に犯された・・・

本業でサーバの管理を行っていることは以前にも書きましたが、その管理しているサーバがハッキングされていたようです。

私が管理しているのは、ネットワーク及びハードウェア迄。
OSに関してはお客様が管理することになっていた。
※俺が監視しているOSじゃなくて良かった。
  少しホッとしています(笑

このサーバはここ2ヶ月で3回もハッキングされている。

1度目は「./s」と言うディレクトリを作成され、外部のサーバに対して、SSHの攻撃を行う。
2度目はフィッシングサイトを作られた。
3度目は「1度目」と同様のスクリプトを埋め込まれた。

利用ユーザーにはOSの再インストールを促しているが、全く同意してもらえず、半ばあきらめてい所。
強制的に再インストールを予定していました。

その矢先、3度目がやってきた。

今回の現象は次の通りです。

1、共有ネットワークのトラフィック飽和のため、監視サーバよりアラートが飛んで来る。
2、調査により、該当サーバを突き止める。
3、該当サーバのプロセスを確認すると、CPUを100%占領しているプロセスを発見
  「pscan2」と言うプロセス。 見たことないぞ!!

そこで、ググってみると、次のサイトが引っかかった。
http://www.mcafee.com/japan/security/virPQ2004.asp?v=Linux/Portscan
http://tomocha.net/diary/?20050709

1度目同様の外部サーバに対してSSH攻撃を行うスクリプトらしいです。
killコマンドで切っても・切っても立ち上がってくる。
むかつく!

切っても起き上がってくるなら、根元から絶たないと駄目ですね。
findにて「pscan2」を検索してみた。

# find / -name pscan2 -print
/tmp/ /team2

team2の配下に「pscan2」があるらしい。
でも、なんか変?
/tmp/ /team2

# cd /tmp
# ls -la
何も無い???

隠しFile?

# cd ./\ \/
# ls -la
team2

やっと見えた!!!

念のため圧縮してディレクトリ毎削除。

# tar cvf team2.tar /team2
# ls -la
team2 team2.tar

# rm -Rf team2
# ls -la
team2.tar

topコマンドにてプロセス確認
ん? 「pscan2」が生きている。
ディレクトリ毎を消しても、一度立ち上がったスクリプトは死なないらしい・・・
じゃ~強制的にkill
# kill -KILL [プロセス番号]
# top

該当プロセスが無い事を確認。





それにしても、最近のハッキングは凝ってますね~
隠しディレクトリ作って・・・
そこまでして、何がしたいの? って感じです。

この内容を、提供先のユーザーに連絡して、近々でOSの再インストールさせよう~~っと。

投稿時間: 00:57

組込Linux

最近、組込Linuxが気になっている。

armadillo白木印「生」・・・

組込み系のボードで使われているCPUは一般的にARM互換CPUが多いようだ。
Fedora6のARM版があると言うことは、組み込める可能性もある。

っと思い、価格的にもスペック的にも魅力ある白木印「生」の購入を決断。
早速購入しようと思ったが、品切れらしい・・・
入荷予定の確認を行うため、サポートへmailしてみたら、入荷は11月20日予定。
今までサービスで付いていたシリアルキットは付かないらしい・・・
また、価格改正があるらしい。

再度、サイトを確認すると5000円値上げ?

そりゃ無いよ~白木さ~~~ん(*_*;

投稿時間: 19:29

PCI Express x1

玄箱PROにはPCI Express x1が付いている。
本気で使うつもりは無いが、グラボを付けて小型Linuxデスクトップを作ってみたいと思っている。
PCI Express x1のグラボを探すが、適当なものがない・・・

何気に玄人志向を見ていたら「KRHK-PCIEX16toX1」なる、PCI Express x16からPCI Express x1に変換するものが出ていた。

KRHK-PCIEX16toX1 と 玄箱 でググって見ると、テストしている人たちが居た。
しかし、現状では動作しないようである・・・・。

自宅のメインサーバのDELL SC420にもPCI Express x1が付いている。
玄箱で駄目でも、SC420で使うことは可能だろう・・・。

買おうか・・・ 買うまいか・・・ 悩む。

投稿時間: 18:16

玄箱HG Fedora6でiTunesServer

23日(土)の朝に、頼んでいたい Pod touch が届いた。
早速WinPCにつないで見るが、ロックが掛かってしまい使えない。
発表と同時に予約してたのに・・・
自宅にはG4CubeのMacもあるが、OS10.2なので iPod touch に対応したいTunesが入らない。
仕方がないので、会社のMacG5でロックを解除した^^;

解除できたiPod touchは非常に快適。
無線LANにも繋がるし、YouTubeも楽しめる。

現在我が家にはiPodが2台。
1台は今回購入した iPod touch
もう1台は娘の iPod nano (初期のnano2GB)

娘はMacG4CubeでiTunesを使っている。
しかし、HDDはつるしのままなので、20GBのHDD
相当貯まった楽曲。
HDDの空き容量がない・・・。

そこで、玄箱HG FedoraにSAMBAを構築して、その領域にiTunesも作成してみた。

先ずは、SAMBAのインストール

# yum -y install samba
※設定は省略

iTunesのサーバに仕立てるには、幾つかの方法があるが、今回は「mt-daapd」を利用して
作成してみた。

■用意したもの
mt-daapd-0.2.4-2.hk.src.rpm
avahi-compat-howl
libid3tag
gdbm

# wget http://blog.hide-k.net/src/mt-daapd-0.2.4-2.hk.src.rpm
# yum -y install avahi-compat-howl libid3tag gdbm
# rpm -ivv mt-daapd-0.2.4-2.hk.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bb mt-daapd.spec
# cd ../RPMS/ppc
# ls -l
mt-daapd-0.2.4-2.hk.ppc.rpm

# rpm -ivh mt-daapd-0.2.4-2.hk.ppc.rpm
# vi /etc/mt-daapd.conf

mp3_dir /mnt/share/iTunes ← 共有するディレクトリを指定
servername iTunes Server ← iTunesに表示させる名称

# /etc/rc.d/init.d/avahi-daemon start
# /etc/rc.d/init.d/mt-daapd start

これで準備OK

楽曲のUPは SAMBA経由で・・・
これで楽曲の共有が快適に使えるようになりました。

投稿時間: 20:36

perlモジュールの簡単インストール

色々なサービスをインストールしていくと、個別にperlモジュールをインストールする機会が増えてくる。
mpanコマンドを使ったり、tar玉をGetして「解凍」→「perl ./Makefile.PL」→「make」→「make install」等の作業があったり・・・
Webminの「Perl モジュール」でインストールしたりと、色々な方法があるが、直接組み込む方法には違いない。
必要なときにインストールして、使わなくなったモジュールは削除したい! 等々、管理を「楽」にしたい場合、rpm等のパッケージ管理が出来れば最高ですね。
※Fedoraは以外にrpm化されている場合が多い。

そこで、色々調査してみました。
あるものですね~
自動でrpmパッケージを作成して、インストールまでしてくれる。
もちろん削除も可能!

必要なものは「cpan2rpm」
今回、インストールするサーバはCentOS5。
rpmの有無を確認するが、該当するパッケージは存在しない。
そこで、Fedora6(Fedora7用でも可能かも?)用のcpan2rpmを入手してインストールしてみた。

# wget http://ftp.iij.ad.jp/pub/linux/fedora/extras/6/i386/cpan2rpm-2.028-2.f
c6.noarch.rpm

早速インストール
# rpm -ivh cpan2rpm-2.028-2.fc6.noarch.rpm
rpm -ivh cpan2rpm-2.028-2.fc6.noarch.rpm
警告: cpan2rpm-2.028-2.fc6.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 1ac70ce6
準備中... ########################################### [100%]
1:cpan2rpm ########################################### [100%]

コレで、準備OK。
早速何か試してみよう。

# cpan2rpm --install Compress::Raw::Zlib  ← MT4で必要だったので、試してみた。

-- cpan2rpm - Ver: 2.028 --
Signatures not set up
Upgrade check
Fetch: HTTP

-- module: Compress::Raw::Zlib --
Found: Compress-Raw-Zlib-2.006.tar.gz
At: http://search.cpan.org//CPAN/authors/id/P/PM/PMQS
Retrieving URL
Metadata retrieval
Tarball extraction: [/usr/src/redhat/SOURCES/Compress-Raw-Zlib-2.006.tar.gz]
Generating spec file
SPEC: /usr/src/redhat/SPECS/Compress-Raw-Zlib.spec
Generating package
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.61124
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /usr/src/redhat/BUILD
+ rm -rf Compress-Raw-Zlib-2.006
+ /bin/gzip -dc /usr/src/redhat/SOURCES/Compress-Raw-Zlib-2.006.tar.gz
+ tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd Compress-Raw-Zlib-2.006
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chown -Rhf root .
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chgrp -Rhf root .
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ chmod -R u+w /usr/src/redhat/BUILD/Compress-Raw-Zlib-2.006
+ exit 0
実行中(%build): /bin/sh -e /var/tmp/rpm-tmp.61124
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Compress-Raw-Zlib-2.006
+ LANG=C
+ export LANG
+ unset DISPLAY
+ grep -rsl '^#!.*perl' .
+ grep -v '.bak$'
+ xargs --no-run-if-empty /usr/bin/perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)'
+ CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables'
++ /usr/bin/perl -MExtUtils::MakeMaker -e ' print qq|PREFIX=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr| if $ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ '
+ /usr/bin/perl Makefile.PL
Parsing config.in...
Building Zlib enabled
Auto Detect Gzip OS Code..
Setting Gzip OS Code to 3 [Unix/Default]
Looks Good.
Up/Downgrade not needed.
Checking if your kit is complete...
Looks good
Writing Makefile for Compress::Raw::Zlib
+ /usr/bin/make
cp lib/Compress/Raw/Zlib.pm blib/lib/Compress/Raw/Zlib.pm
AutoSplitting blib/lib/Compress/Raw/Zlib.pm (blib/lib/auto/Compress/Raw/Zlib)
/usr/bin/perl /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap -typemap typemap Zlib.xs > Zlib.xsc && mv Zlib.xsc Zlib.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H Zlib.c
Zlib.xs: In function 'deRef_l':
Zlib.xs:576: warning: value computed is not used
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H adler32.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H crc32.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H infback.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inflate.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H uncompr.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H compress.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H deflate.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inffast.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H inftrees.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H trees.c
gcc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"2.006\" -DXS_VERSION=\"2.006\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H zutil.c
Running Mkbootstrap for Compress::Raw::Zlib ()
chmod 644 Zlib.bs
rm -f blib/arch/auto/Compress/Raw/Zlib/Zlib.so
gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -L/usr/local/lib Zlib.o adler32.o crc32.o infback.o inflate.o uncompr.o compress.o deflate.o inffast.o inftrees.o trees.o zutil.o -o blib/arch/auto/Compress/Raw/Zlib/Zlib.so \
\

chmod 755 blib/arch/auto/Compress/Raw/Zlib/Zlib.so
cp Zlib.bs blib/arch/auto/Compress/Raw/Zlib/Zlib.bs
chmod 644 blib/arch/auto/Compress/Raw/Zlib/Zlib.bs
Manifying blib/man3/Compress::Raw::Zlib.3pm
+ /usr/bin/make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/000prereq....ok
t/01version....ok
t/02zlib.......ok
t/07bufsize....ok
t/18lvalue.....ok
t/99pod........skipped
all skipped: Test::Pod 1.00 required for testing POD
All tests successful, 1 test skipped.
Files=6, Tests=544, 4 wallclock secs ( 4.36 cusr + 0.10 csys = 4.46 CPU)
+ exit 0
実行中(%install): /bin/sh -e /var/tmp/rpm-tmp.98635
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Compress-Raw-Zlib-2.006
+ LANG=C
+ export LANG
+ unset DISPLAY
+ '[' /var/tmp/perl-Compress-Raw-Zlib-2.006-root '!=' / ']'
+ rm -rf /var/tmp/perl-Compress-Raw-Zlib-2.006-root
++ /usr/bin/perl -MExtUtils::MakeMaker -e ' print $ExtUtils::MakeMaker::VERSION <= 6.05 ? qq|PREFIX=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr| : qq|DESTDIR=/var/tmp/perl-Compress-Raw-Zlib-2.006-root| '
+ /usr/bin/make prefix=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr exec_prefix=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr bindir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/bin sbindir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/sbin sysconfdir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/etc datadir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share includedir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/include libdir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib libexecdir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/libexec localstatedir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/var sharedstatedir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/com mandir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share/man infodir=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share/info install DESTDIR=/var/tmp/perl-Compress-Raw-Zlib-2.006-root
Installing /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
auto/Compress/Raw/Zlib/Zlib.so
Installing /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
auto/Compress/Raw/Zlib/Zlib.bs
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
auto/Compress/Raw/Zlib/autosplit.ix
Installing /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
Compress/Raw/Zlib.pm
Installing /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share/man/man3/Compress::Raw::Zlib.3pm
Writing /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
auto/Compress/Raw/Zlib/.packlist
Appending installation info to /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib/perl5/5.8.8/i386-linux-thread-multi/
perllocal.pod
+ cmd=/usr/share/spec-helper/compress_files
+ '[' -x /usr/share/spec-helper/compress_files ']'
+ cmd=/usr/lib/rpm/brp-compress
+ '[' -x /usr/lib/rpm/brp-compress ']'
+ /usr/lib/rpm/brp-compress
+ '[' -e /etc/SuSE-release -o -e /etc/UnitedLinux-release ']'
+ find /var/tmp/perl-Compress-Raw-Zlib-2.006-root -name perllocal.pod -o -name .packlist -o -name '*.bs'
+ xargs -i rm -f '{}'
+ find /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr -type d -depth -exec rmdir '{}' ';'
+ /usr/bin/perl -MFile::Find -le '
find({ wanted => \&wanted, no_chdir => 1}, "/var/tmp/perl-Compress-Raw-Zlib-2.006-root");
print "%doc pod zlib-src private Changes examples fallback README";
for my $x (sort @dirs, @files) {
push @ret, $x unless indirs($x);
}
print join "\n", sort @ret;

sub wanted {
return if /auto$/;

local $_ = $File::Find::name;
my $f = $_; s|^\Q/var/tmp/perl-Compress-Raw-Zlib-2.006-root\E||;
return unless length;
return $files[@files] = $_ if -f $f;

$d = $_;
/\Q$d\E/ && return for reverse sort @INC;
$d =~ /\Q$_\E/ && return
for qw|/etc /usr/man /usr/bin /usr/share|;

$dirs[@dirs] = $_;
}

sub indirs {
my $x = shift;
$x =~ /^\Q$_\E\// && $x ne $_ && return 1 for @dirs;
}
'
+ '[' -z Compress-Raw-Zlib-2.006-filelist ']'
+ /usr/lib/rpm/find-debuginfo.sh /usr/src/redhat/BUILD/Compress-Raw-Zlib-2.006
extracting debug info from /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
auto/Compress/Raw/Zlib/Zlib.so
1049 blocks
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile
+ /usr/lib/rpm/redhat/brp-java-repack-jars
ファイルの処理中: perl-Compress-Raw-Zlib-2.006-1
実行中(%doc): /bin/sh -e /var/tmp/rpm-tmp.29510
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Compress-Raw-Zlib-2.006
+ DOCDIR=/var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share/doc/
perl-Compress-Raw-Zlib-2.006
+ export DOCDIR
+ rm -rf /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share/doc/perl-Compress-Raw-Zlib-2.006
+ /bin/mkdir -p /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share/doc/perl-Compress-Raw-Zlib-2.006
+ cp -pr pod zlib-src private Changes examples fallback README /var/tmp/perl-Compress-Raw-Zlib-2.006-root/usr/share/doc/perl-Compress-Raw-Zlib-2.006
+ exit 0
Provides: Zlib.so perl(Compress::Raw::Zlib) = 2.006 perl(MakeUtil)
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1
Requires: libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.4) perl >= 0:5.004 perl(AutoLoader) perl(Carp) perl(Config) perl(Exporter) perl(File::Copy) perl(VMS::Filespec) perl(bytes) perl(constant) perl(strict) perl(warnings) rtld(GNU_HASH)
ファイルの処理中: perl-Compress-Raw-Zlib-debuginfo-2.006-1
Provides: Zlib.so.debug
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/perl-Compress-Raw-Zlib-2.006-root
書き込み完了: /usr/src/redhat/SRPMS/perl-Compress-Raw-Zlib-2.006-1.src.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/perl-Compress-Raw-Zlib-2.006-1.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/perl-Compress-Raw-Zlib-debuginfo-2.006-1.i386.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.29510
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Compress-Raw-Zlib-2.006
+ '[' /var/tmp/perl-Compress-Raw-Zlib-2.006-root '!=' / ']'
+ rm -rf /var/tmp/perl-Compress-Raw-Zlib-2.006-root
+ exit 0
実行中(--clean): /bin/sh -e /var/tmp/rpm-tmp.29510
+ umask 022
+ cd /usr/src/redhat/BUILD
+ rm -rf Compress-Raw-Zlib-2.006
+ exit 0
RPM: /usr/src/redhat/RPMS/i386/perl-Compress-Raw-Zlib-2.006-1.i386.rpm
SRPM: /usr/src/redhat/SRPMS/perl-Compress-Raw-Zlib-2.006-1.src.rpm
Installing package
準備中... ########################################### [100%]
1:perl-Compress-Raw-Zlib ########################################### [100%]
-- Done --

を~ 勝手にtar玉をGetして勝手にrpm化! 最高ですね~

正常にrpmインストールされているかを確認
# rpm -q perl-Compress-Raw-Zlib
perl-Compress-Raw-Zlib-2.006-1

正常ですね。

では、削除確認。
# rpm -e perl-Compress-Raw-Zlib
# rpm -q perl-Compress-Raw-Zlib
パッケージ perl-Compress-Raw-Zlib はインストールされていません。

きちんと削除されますね。
※必要なので、再度インストールしたことは内緒です(笑

コレは便利。
管理が楽になりますね~~

投稿時間: 23:48

SSHのchrootを試してみた。

最近SSHを許可していないサーバが多いような気がする。
特に共有サーバの場合、他のディレクトリ(他のユーザー領域)が見えてしまう為である。
共有サーバの場合、数十から数百のユーザーが同居するため、情報漏えいになりうるDataがあるからだ。
しかし、シェルが使えないのは結構痛い。
FTPでFile転送して、FTPクライアントでパーミッション設定変更。 非常に面倒。
Telnet同様、暗号化されていないので通信の中身が丸裸!

最悪の状態かも!

って事で、思い腰を上げてSSHのchrootを試すことにした。

ググって見るとココが非常に解りやすかった。
参考にさせてもらった。

今回のインストール環境は次の通り。

■OS:CentOS5
■インストール環境:ネットワーク越しでchrootの環境を構築

先ず、既存のSSHをアンインストールを行う必要があるが、いきなりアンインストールするわけには行かない。
一時的にTelnetをインストールして、chroot対応のSSHを組み込んだ後、Telnetをアンインストールを行う。

既存のシステムでは、yumが使えるので、Telnetがインストールされていない場合はインストールを行う。
先ずは、Telnetの有無確認
# rpm -qa|egrep telnet

該当するパッケージが無いため、インストールを行う
# yum install telnet-server

インストールされたら、Telnet接続が出来るよう環境を整える
※設定内容は割愛

その次に、Telnetにて接続する為のUSERを作成する。 ← 既にUSERを作成している場合は必要ない。
# groupadd user1    
# mkdir /home/user1
# useradd user1 -g user1 -d /home/user1
# passwd user1
 password を2回打ち込む
# chown -Rf user1:user1 /home/user1

この状態で、Telnet接続できるかを確認。

接続確認が出来たら、現在接続しているSSHセッションを切る。
んで、改めてTelnetにて接続。
# su - root
 rootのパスワードを打ち込んで・・・・

ココまできたら、ようやくSSHをアンインストール
先ずは、SSHを停止
# /etc/rc.d/init.d/sshd stop
============================
Stopping sshd: [ OK ]
============================
Opensshを削除
# rpm -e openssh-server
warning: /etc/ssh/sshd_config saved as /etc/ssh/sshd_config.rpmsave

# rpm -e openssh-clients
warning: /etc/ssh/ssh_config saved as /etc/ssh/ssh_config.rpmsave

その他、SSH関連のRPMがインストールされていれば、アンインストールを行っておく。

さて、いよいよchroot対応のSSHの作成を行うが、rpmでは提供されていないようなので、tar玉を用意する。
Get先はここ等辺りから・・・ http://chrootssh.sourceforge.net/download/

今回、利用したバージョンは「openssh-4.5p1」
CentOS5のバージョンより新しい。
では、早速作業してみよう。

# cd /tmp   ← 作業しやすいところで構わない。
# wget http://chrootssh.sourceforge.net/download/openssh-4.5p1- chroot.tar.bz2
# tar jxvf openssh-4.5p1- chroot.tar.bz2

パッケージの再作成
# cd openssh-4.5p1-chroot
# vi openssh-4.5p1-chroot/contrib/redhat/openssh.spec
一部修正を行う

-----------------------------------------------------------------------------
%define no_x11_askpass 0

%define no_x11_askpass 1 ← x11_askpassの無効化
%define no_gnome_askpass 0

%define no_gnome_askpass 1 ← gnome_askpassの無効化
-----------------------------------------------------------------------------

不要ディレクトリ削除
# rm -rf openssh-4.5p1- chroot/contrib/aix/
# rm -rf openssh-4.5p1- chroot/contrib/hpux/
# rm -rf openssh-4.5p1- chroot/contrib/caldera/
# rm -rf openssh-4.5p1- chroot/contrib/suse/
# rm -rf openssh-4.5p1- chroot/contrib/cygwin/
# rm -rf openssh-4.5p1- chroot/contrib/solaris/

名前の変更
# mv openssh-4.5p1-chroot openssh-4.5p1

圧縮
# tar czvf openssh-4.5p1.tar.gz openssh-4.5p1/

RPMパッケージ作成
rpmbuild -tb --clean openssh-4.5p1.tar.gz
※環境によってはパッケージ足らない場合があるかも?
  また、サーバのスペックによりパッケージ作成に掛かる時間は区々・・・。

作成したRPMをインストール
# cd /usr/src/redhat/RPMS/i386
# ls -l
openssh-4.5p1-1.i386.rpm
openssh-server-4.5p1-1.i386.rpm
openssh-clients-4.5p1-1.i386.rpm

一気にインストール
# rpm -Uvh openssh-4.5p1-1.i386.rpm openssh-server-4.5p1-1.i386.rpm openssh-clients-4.5p1-1.i386.rpm

無事インストールできたら、ディレクトリ削除
# rm -Rf openssh-4.5p1

ついでにtar玉も削除
# rm -f openssh-4.5p1.tar.gz

元tar玉も一応削除
# rm -f openssh-4.5p1-chroot.tar.bz2

yumによるupdateからsshを除外しておく。
# vi /etc/yum.conf
exclude=openssh*  ← こんな感じで追加

ココまできたら、あともう少し!
ココ状態で起動すると、えらーが出るらしい。
「Starting sshd:WARNING: initlog is deprecated and will be removed in a future release」

起動スクリプトを一部変更することで回避できるらしい。
# vi /etc/rc.d/init.d/sshd
-----------------------------------------------------------------------------
start()
{
# Create keys if necessary
do_rsa1_keygen
do_rsa_keygen
do_dsa_keygen

echo -n $"Starting $prog:"
#initlog -c "$SSHD $OPTIONS" && success || failure ← #を追加してコメントアウト
$SSHD $OPTIONS && success || failure ← ここに追加する。
RETVAL=$?
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/sshd
echo
}
-----------------------------------------------------------------------------

SSHを起動する前にキーの生成を行う
# ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N "" ← Hostkey(RSA1)再作成です


Overwrite (y/n)? y ← y

# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" ← Hostkey(RSA2)再作成です
です


Overwrite (y/n)? y ← ここも y

# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N "" ← Hostkey(DSA)再作成です


Overwrite (y/n)? y ← これも y

ようやくSSH起動
/etc/rc.d/init.d/sshd start

サーバの再起動を行っても自動起動するようにお呪い・・・
# chkconfig sshd on

さて肝心のconfig設定。
# vi /etc/ssh/sshd_config
-----------------------------------------------------------------------------
#Protocol 2,1

Protocol 2 ← SSH2でのみ接続を許可

#SyslogFacility AUTH

SyslogFacility AUTHPRIV ← ログの格納場所? /var/log/secureでいいとも!!

#PermitRootLogin yes

PermitRootLogin no ← もちろんrootでのログインは禁止でしょ!

#PermitEmptyPasswords no

PermitEmptyPasswords no ← 当たり前のようにパスワードなしはログインを禁止
-----------------------------------------------------------------------------

設定が終わったら、SSHの再起動
# /etc/rc.d/init.d/sshd restart

この状態でSSHにてログインできるかを確認する。
問題なくログインできたら、あともう少し。

簡単にchrootユーザーが作れるようにスクリプトを作成する。
作成する場所はどこでも構わないが、rootディレクトリ辺りに作成しておけば問題ないかな?
# mkdir -p ~/bin
# vi ~/bin/chroot-useradd
-----------------------------------------------------------------------------
#!/bin/bash
#
# Usage: ./chroot-useradd username [shell]
#

# Here specify the apps you want into the enviroment
CMD="bash ls touch mkdir cp mv rm pwd chmod cat vi id rsync ssh scp sftp ping ssh-keygen perl"
APPS=`which $CMD`
APPS="${APPS} /usr/libexec/openssh/sftp-server"

# Sanity check
if [ "$1" = "" ] ; then
echo " Usage: ./chroot-useradd username [shell]"
exit 1
fi

# Obtain username and HomeDir
CHROOT_USERNAME=$1
if [ "$2" = "" ] ; then
useradd $CHROOT_USERNAME
else
useradd -s $2 $CHROOT_USERNAME
fi
usermod -d /home/$CHROOT_USERNAME/./ $CHROOT_USERNAME
passwd $CHROOT_USERNAME
chown $CHROOT_USERNAME /home/$CHROOT_USERNAME
chgrp $CHROOT_USERNAME /home/$CHROOT_USERNAME
rm -f /home/$CHROOT_USERNAME/.* > /dev/null 2>&1
HOMEDIR=`grep /etc/passwd -e "^$CHROOT_USERNAME" | cut -d':' -f 6`
cd $HOMEDIR

# Create Directories no one will do it for you
mkdir -p etc
mkdir -p bin
mkdir -p usr/bin
mkdir -p usr/local/bin
mkdir -p usr/libexec/openssh
mkdir -p public_html     ← ホームページ領域の作成を追加
chown $CHROOT_USERNAME /home/$CHROOT_USERNAME/public_html ← オーナー設定
chgrp $CHROOT_USERNAME /home/$CHROOT_USERNAME/public_html ← グループ設定
MAKEDEV -d dev -x null zero

# Create short version to /usr/bin/groups
# On some system it requires /bin/sh, which is generally unnessesary in a chroot cage
echo "#!/bin/bash" > usr/bin/groups
echo "id -Gn" >> usr/bin/groups
chmod 755 usr/bin/groups

# Add some users to ./etc/paswd
grep /etc/passwd -e "^root" -e "^$CHROOT_USERNAME" > etc/passwd
grep /etc/group -e "^root" -e "^$CHROOT_USERNAME" > etc/group

# Copy the apps and the related libs
for prog in $APPS;
do
cp $prog ./$prog
# obtain a list of related libraryes
ldd $prog > /dev/null
if [ "$?" = 0 ] ; then
LIBS=`ldd $prog | awk '{ print $3 }'`
for l in $LIBS;
do
mkdir -p ./`dirname $l` > /dev/null 2>&1
cp $l ./$l > /dev/null 2>&1
done
fi
done

# From some strange reason these 4 libraries are not in the ldd output, but without them
# some stuff will not work, like usr/bin/groups
cp /lib/libnss_compat.so.2 lib/
cp /lib/libnsl.so.1 lib/
cp /lib/libnss_files.so.2 lib/
cp /lib/ld-linux.so.2 ./lib/
cp /lib/libc.so.6 lib/
cp /lib/libm.so.6 lib/
cp /lib/libpthread.so.0 lib/
cp /lib/librt.so.1 lib/
cp /lib/libthread_db.so.1 lib/

exit 0
-----------------------------------------------------------------------------

出来たスクリプトに実行件を与える
# chmod 755 ~/bin/chroot-useradd

これで、完璧にいけるはず。
念のためUSERを作成してログイン確認
また、chrootがきちんと設定されているかを確認。

ログイン後次のコマンドで確認できるはず。
$ pwd
/


「/」となっていれば、成功です。

また、rootになれないことも確認
$ su - root
-bash: su: command not found

OKですね。

では、不要になったTelnetを削除して、ポートも閉める。

これで、安心してUSERにシェルを渡すことが出来る・・・・・・ と思う~~

投稿時間: 01:24

NFSのマウントが遅い?

iDC内でNFSサーバを立てることになった。
ググるといくつか参考になるサイトが出てきた。

■NFSサーバ
portmapper
nfsd
mountd

上記のサービスが必要。

/etc/exports に設定を入れて・・・・
------/etc/exportsの記述例--------
/home/public 192.168.1.2 (rw,no_root_squash)
--------------------------------

/etc/hosts.allow 許可を行うクライアントのIPを入れる
------/etc/hosts.allowの記述例-----
ALL: 192.168.1.2
--------------------------------

設定が完了したら「rpc.mountd」と「rpc.nfsd」の起動が必要
# exportfs -a
# /etc/rc.d/init.d/nfs restart


■NFSクライアント
元になるディレクトリさ作成
# mkdir /mnt/public

これだけ?


では、マウントしてみよう。
# mount -t nfs 192.168.1.1:/home/public /mnt/public
または、
# mount -t nfs -o rsize=1024,wsize=1024 192.168.1.1:/home/public /mnt/public

マウントに時間が掛かる。
でもマウント出来ないことも無い。

マウントできたものを一旦アンマウント。
そして、再度マウント。

出来ない。
さっきは出来たのに~~~~

そこで再度ググってみたら、クライアント側にも「portmapper」が必要らしい。
クライアント側のportmapを立ち上げると、即効でマウントできるようになった。

lftpやrsyncを使うより、これのほうが色々と応用できそうな気がする。

投稿時間: 19:44

sendmailのSubmission対応(xinetdの場合)

客先から「メールが送れないんだけど・・・!!」っと、担当営業に連絡が入った。
サーバのログを確認しても送受信出来ている。
テストアカウントを作成して送受信のチェックを行っても問題ない。

詳細を確認すると、最近プロバイダーを変更したらしい。
多分OB25P(OutbandBlocking25)の問題だろう。

サーバの環境を確認すると、利用しているMTAは”多分”Sendmail
sendmail.mcに
==================================================
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
==================================================
を追加してsendmail.cfに変換を行えばOKだろう。

# make -C /etc/mail
# /etc/rc.d/init.d/sendmail restart

あれ? 「/etc/rc.d/init.d/sendmail」が無いんだけど(@_@)

psでプロセス確認してもsendmailのデーモンは立ち上がっていない。
おやっ?

# /usr/sbin/alternatives --config mta

でMTAの確認を行っても
=================================================
There are 1 programs which provide 'mta'.

Selection Command
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
=================================================
と出てくる。
多分動いているのはsendmail。
確認までにpostfixやqmailの確認もしてみるが、そんな物は無い。

# chkconfig --list

にて確認。
あれ? sendmailが無い。
 ・
 ・
 ・
 ・
 ・
 ・
あった~~~~
====================
 ・
省略
 ・
 ・
xinetd based services:
sendmail: on
 ・
 ・
省略
 ・
====================
なぜ?xinetdに入ってるの?

確かにメモリ消費を押さえるためにはxinetd経由でサービスを使う方が効率は良いと思うのだが、わざわざxinetd対応にしなくても良いのでは? っと疑問を持ちつつ、てきとー管理者は調査する。

非常に情報は少ないが、xinetd対応のsendmailの使い方は出ていた。
そのサイトでは次のような対策で利用出来ているらしい。

通常、/etc/xinetd.d/sendmailには
===================================
service smtp
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
group = root
server = /usr/sbin/sendmail
server_args = -bs -Am
nice = 5
instances = 10
}
===================================

===================================
service smtp
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
group = root
server = /usr/sbin/sendmail
server_args = -bs -Am
nice = 5
instances = 10
}

service submission
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
group = root
server = /usr/sbin/sendmail
server_args = -bs -Am
nice = 5
instances = 10
}
===================================
のように「service submission」から下を追記し、xinetdを再起動。

これだけで動いた。

投稿時間: 18:15

クラスCのDNS逆引き不具合の解消(^.^)

先日から不具合の出ていたクラスCの逆引きがやっと引けるようになった。サポセンの指示通りに設定していたが、それが大きな間違いだった。

「0-24.XXX.XXX.XXX.in-addr.arpa」や「0/24.XXX.XXX.XXX.in-addr.arpa」
では無く、クラスCで一般的に使われる方法の「XXX.XXX.XXX.in-addr.arpa」であった・・・。

サポセンからは「勉強不足により解決までにお時間を要してしまい・・・・」って、ヲイヲイ!
これって本業じゃないの?

・・・って、俺も本業ジャン!!

投稿時間: 18:36

クラスCのDNS逆引きで悩む・・・(ё_ё)

会社でDNS管理を行っている、てきとー管理者。
ここ最近DNS逆引きの悩んでいる。

過去も現在も、クラスCのネットワークを扱い、正引き・逆引きで問題は発生していなかったが、新たなiDCでクラスCのグローバルIPを取得し正引き設定は問題なく名前解決出来ている。
しかし、逆引きに問題が出ている。

全く逆引きが出来ない。
何度も設定を見直しても、不具合の出そうな所は見当たらないw

iDCやブロバイダーによってzoneの記述が異なることが有る

0-24.XXX.XXX.XXX.in-addr.arpa
だったり
0/24.XXX.XXX.XXX.in-addr.arpa
だったり・・・

今回は前者の0-24.XXX.XXX.XXX.in-addr.arpa

もしや? と思い、0/24.XXX.XXX.XXX.in-addr.arpaに書き換えてみたいするが、全く駄目!
困った!!

サポセンに聞いてみよう~~

投稿時間: 04:02

MTのUPDATE

Version 3.35にしてみた。
コレと言って変わったところは無いような~~

投稿時間: 22:19

Mail relay test

やっと我が家の玄箱にもMTAが入った。
不正relayが気になるところ。

念のためチェックしておこう!

http://www.rbl.jp/svcheck.php

http://www.abuse.net/relay.html
でチェックできる。

ログを見てみると
====================================================================
postfix/smtpd[5297]: fatal: open database /etc/postfix/virtual.db: No such file or directory
postfix/master[2287]: warning: process /usr/libexec/postfix/smtpd pid 5297 exit status 1
postfix/master[2287]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
 ・
 ・
 ・
 ・
 ・
====================================================================

もちろんOKだった。

あれ? ログの時間が1時間ズレてるぞ?
システム時間がいつの間にかズレてるし。。。

投稿時間: 18:45

Postfixのインストール

客先からの依頼を受けてPostfixのインストールを行った。
今回のMTA要件としては次の通り。

POPbeforeSMTPに対応
Virtualdomainに対応

この条件を満たす一番簡単な方法をググってみた。

構成としてはこんな感じ・・・・
1.Postfix = ディストリビューションで提供されるRPMを利用
2.dovecot = ディストリビューションで提供されるRPMを利用
3.qpopper = 4.0.9
4.dtac
5.portmap

この内容で作業してみた。


■Postfix

先ずはPostfixの設定から
/etc/postfix/main.cf の編集を行う。
修正する箇所は次の通り

====================================================================
myhostname = sv.hogehoge.jp ホスト名
mydomain = hogehoge.jp ドメイン名
inet_interfaces = all すべて受信
local_recipient_maps = proxy:unix:passwd.byname $alias_maps ローカルユーザの存在をチェックし、不明なユーザは受信を拒否
mydestination = $myhostname, localhost.$mydomain, $mydomain メールの宛先として受け入れるホスト名の設定
mynetworks_style = subnet IP空間の設定
mynetworks = 127.0.0.0/8 POPbeforeSMTPに対応させるので、基本は自分のみ
smtpd_banner = $myhostname ESMTP $mail_name メールヘッダに記載されるMTAの表示の設定
relay_domains = $mydestination 信頼されない(mynetworks)のクライアント以外のメールは$mydestinationの範囲内しか配送しない。
home_mailbox = Maildir/ 各ユーザのホームディレクトリ内にMaildirをおく Maildirとは1メッセージ=1ファイルの形式にさせる。
====================================================================

設定が終わったら、postfixの再起動
# /etc/rc.d/init.d/postfix restart

参考までに25番portが開いているかを確認
# nmap localhost

が~
nmapがインストールされてないっす。

問題は無いと思うが、セオリー通りチェックしたいのでyumにてインストール
# yum install nmap

改めて確認してみる
# nmap localhost

25/tcp open smtp
↑これが出てくればOK。

次にtelnetで正常に通信できるかを確認
※内部配送確認するためテスト用のアカウントをあらかじめ作成しておく必要が有ります。
 test1
 test2

# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 hogehoge.jp ESMTP Postfix
HELO localhost --->開始メッセージ
250 hogehoge.jp
MAIL FROM: test1@localhost --->送信者
250 Ok
RCPT TO: test2@localhost --->受信者
250 Ok
DATA --->ボディ入力
354 End data with .
Send Test.
. --->メッセージ終了
250 Ok: queued as 2852DFE005
QUIT --->抜ける

ここで実際に配送されているかを確認してみる
test2のホームディレクトリの覗くとMaildirが作成され、その中ににnewが有る
ここにメールが貯まる。
また、/var/log/maillogにもログが残っているかも確認しておこう!!


■drac
POPbeforeSMTPに対応させるためには「drac」が必要

先ず作業ディレクトリまで移動
# cd /usr/local/src
# wget ftp://ftp.cc.umanitoba.ca/src/drac.tar.Z
# mkdir drac
# cd drac
# tar xzvf ../drac.tar.Z

Makefileの修正

====================================================================
INSTALL = install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C
CC = gcc
RANLIB = :
CFLAGS = $(DEFS) -g
LDLIBS = -ldb
TSTLIBS = -L. -ldrac -lnsl
RPCGENFLAGS = -C -I
MANLIB = 3
MANADM = 8
====================================================================

終わったら

# make
# make install
# make install-man
# cp libdrac.a /usr/local/lib
# cp dracd-setup.linux /etc/init.d/dracd

dracdを修正する

daemon rpc.dracd&

daemon /usr/local/sbin/rpc.dracd -i -e 15&

※-iは起動時にdatabaseを初期化。 -eは承認の有効期限を15分に設定

chkconfigにてOS起動時に自動起動させたいが、そのままでは無理!

# vi /etc/init.d/dracd

====================================================================
#!/bin/bash
#
# dracd Startup script for the dracd
#
# chkconfig: - 87 15
# description: dracd
# processname: dracd
#
# Put this file into /etc/rc.d/init.d/dracd
# and link it intot he run levels you want to use it
# by doing "ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc./S99dracd"
#
# dracd-setup
====================================================================
に書き換える必要が有るらしい

# chkconfig --add dracd
# chkconfig --level 345 dracd on

これで、自動起動OKっす

次にdracd.allowを編集
# cp dracd.allow-sample /etc/mail/dracd.allow
# emacs /etc/mail/dracd.allow
====================================================================
#255.255.255.255 192.168.16.8 #<--コメントアウトしておく
255.255.255.255 127.0.0.1
====================================================================

起動してみる
# /etc/init.d/dracd start

# ps ax | grep dracd
7004 ? S 0:00 /usr/local/sbin/rpc.dracd

こんな感じの内容が出れば動いています。

動作テストを行う
# cd /usr/local/src/drac
# ./testing localhost 1.3.5.7 ← 適当なIPを打ち込む
# strings /etc/mail/dracd.db
または # db_dump -p /etc/mail/dracd.db

VERSION=3
format=print
type=btree
HEADER=END
1.3.5.7
1072008984
DATA=END
と出ればOK。15分後にアドレスと時間が消えていればバッチリです。

drac.dbのパーミッションを設定します。
# chmod 600 /etc/mail/dracd.db

■dovecot
標準でdovecotが入っている
そのままだとpopも有効になっているので、一部修正を行う。
/etc/dovecot.confを
protocols = imap imaps → pop3 が付いていたら削除

んで、再起動
# /etc/init.d/dovecot restart

※Imap のみ使えるように dovecotを残しておく。

■qpopper
次にqpopperを設定してみる
作業ディレクトリまでおりる
#cd /usr/local/src/qpopper
# wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.9.tar.gz
# tar xvzf qpopper4.0.9.tar.gz
# cd qpopper4.0.9
# ./configure --enable-drac
# make
# make install

xinetd起動用ファイルの編集
/etc/xinetd.d/popper(qpopper)を作成して下記の内容を記述する
====================================================================
 service pop-3
 {
 disable = no
 socket_type =stream
 wait = no
 user = root
 server = /usr/sbin/popper
 server_args = -s
 }
====================================================================
んで、xinetdを再起動
# /etc/rc.d/init.d/xinetd restart

念のため /etc/hosts.allowにpopper : ALLを記述。

動作テストを行ってみる
# telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Qpopper (version 4.0.9) at pacific starting.
と出ればOK。
quitで抜けます。


この状態でメールクライアントにアカウントを設定して送受信テストを行う。
test1からtest2に送ってみる。
正常に送信確認できた。
次に受信。
test1からtest1(自分から自分に)へ送ってみる。
送信はOK

ん?
受信が出来ないっす。
サーバ内部にはメールは有る
しかし、何度やっても受信できない。
各種Logを確認しても問題ない。
でも、受信だけが出来ない。

多分qpopperの問題だと思うので、ググってみる。

発見! qpopperは標準ではMaildir方式に対応していないらしい。
パッチを当てることでMaildirに対応するらしい。
しかし、簡単に済ませたいのでpostfix側を修正して対応する。
変更はmain.cfを変更
mail_spool_directory = Maildir/

mail_spool_directory = /var/spool/mail

postfixを再起動して、改めてtest1からtest1(自分から自分に)へ送ってみる。
送信はOK
/var/spool/mailにtest1が作成されている

次に受信
OK。

■バーチャルドメイン対応
バーチャルに対応させるためには、Postfixの編集とPortmapの起動が必要。
Portmapは既存の環境でインストール済みだったので、serviceを起動するのみ。
# /etc/rc.d/init.d/portmap start

postfixを編集する

/etc/postfix/main.cf に一行足す。
====================================================================
virtual_alias_maps = hash:/etc/postfix/virtual
====================================================================

/etc/postfix/virtual の編集
hogehoge.com anything
hogehoge.com anything

コレで対応OKっす。

あとは、ユーザー作ってマッピングさせればOKかな?


自分のサーバではMaildir方式に対応させたいっすね~
※qpopper4.0.9の場合、qpopper-mysql-0.15-test.patchが必要らしい。

投稿時間: 23:38

swatchが安定したら、侵入検知でも・・・・

今度はコレかな~~?

投稿時間: 16:41

監視サーバのPCMCIAのハングアップ?の続編

PCMCIAが死ぬと再起動するようになった。
また、PCMCIA再起動前にalertメールも飛んでくる。

しかし、監視している「/var/log/messages」ログローテーションのタイミングで動作がおかしくなるようだ。
古いログを監視し続け、最新のログは見ていない感じ。
※ログローテーションのタイミングで監視が止まってしまう。
 このとき、messages.1を見ていた。

この仕組みでは、MAX1日しか動かない(゜ε゜;)
ログローテーションの時間を調べ、ローテーションが終わった時を見計らって「swatch」を再起動。

しかし、この内容では100%安心できない。
たまたまログのローテーション時間が遅れた場合、1日は監視出来ない事になってしまう。
監視していないときにPCMCIAが死んでしまったら・・・・・

では、どんな方法が有るのだろうか?
ログローテーションのタイミング直後のswatch再起動が好ましい。
っとすると、ローテーションを管理している所で何とかするしかない・・・・

ローテーションを管理しているのは「/etc/logrotate.d/syslog」

このFileの

===================================================
/var/log/messages {
daily
rotate 31
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
===================================================

===================================================
/var/log/messages {
daily
rotate 31
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/etc/rc.d/init.d/swatch restart  ← ここに追加
endscript
}
===================================================
に追加記述

これで、ローテーション直後にswatchを再起動

これで行けるかな?
様子を見てみよう・・・・・・。

投稿時間: 13:16

監視サーバのPCMCIAのハングアップ?

会社で使っている監視サーバは、相当古いノートPCで行っている。
※SHARP Mebius PC-PJ1(CPU:MMX233)

2年前程まえにこの監視サーバ(Nagios)を作成したが、監視する必要が無くなったため、お蔵入りになっていたが、最近サーバ関連の監視が必要になった為、引っ張り出してきた。

2年前に使っていたときも、NICに負荷が掛かると「PCMCIA」が死んでしまう現象が出ていたが、これと言って対策は行っていなかった。
しかし、現在監視しているサーバの特性を考えると24時間365日の監視が必要になる。
監視サーバが死んでしまっては何にもならない・・・・。
っと言うことで、対策を行ってみた。

PCMCIAの死んでしまう原因は「負荷」に有るようで、NICを流れるトラフィックを制限することで回避出来そう。

CBQ(Class-based Queueing)を利用し、トラフィック制限を行ったが一向に改善されない。
通過するトラフィックは制限出来ても、負荷が掛かった状態のようだ。

そこで、負荷により死んでしまったNICを検知し、PCMCIAを再起動させる仕組みを取り入れる。
ググってみると「Swatch」と言うserviceが良いらしい。

最新のswatch-3.2.1.tar.gzをGETし「make」&「make install」するが、テンプレートが無い・・・。
テンプレートが無くても、問題は無いが何となく気持ちが悪い。
※インストール方法はココを参照

再度、swatch-3.1.1.tar.gzをGETし「make」&「make install」
テンプレートも出来ている。

出来たテンプレートを cp -pf swatchrc.personal /root/.swatchrc としてコピー

これで、準備OK

コピーした「.swatchrc」に必要な記述を行えば監視が出来るのだが、どのLogをどの様に関しすれば良いのだろうか?

NICが死んでしまうLogを探してみる。

色々探していると「/var/log/messages」のLogに書き込みされている
書き込み内容はこんな感じ・・・・

============================================
kernel: eth0: next frame inconsistency, 0xaa
last message repeated 26 times
kernel: eth0: Too much work at interrupt, status 0x54
============================================

過去のログを見ても同様の書き込みが有る。
ここでは「kernel: eth0: next frame inconsistency」の書き込みが有ったらアクションを起こさせよう。

watchfor /kernel: eth0: next frame inconsistency/
echo
mail=hogehoge1@hogehoge.com:hogehoge@docomo.ne.jp,subject=pcmcia service reboot
exec /etc/rc.d/init.d/pcmcia restart


監視内容は次の通りです。

「kernel: eth0: next frame inconsistency」がmessageLogに書き込まれたら、アクションを起こす。

今回は1つの内容でアクションを起こさせるが、複数を監視し何れかが該当した場合でも対応可能。
※ /ログ1 | ログ2/

今回指定するアクションは2つ。
メールを送って、コマンド実行。

メールの配送先は、PCを携帯電話へ通知した。
複数有る場合には「:」で区切ることで対応可能。
送るメールにsubjectを付けることも可能。

次にコマンド実行。
今回の現象はPCMCIAが死んでしまう現象。
PCMCIAを再起動すれば復帰する。
そこで「exec /etc/rc.d/init.d/pcmcia restart」を指定して強制的に復帰させる。

このほか、ベルを鳴らしたりすることも可能らしい・・・・

これで、大枠は完了した。

次に、OS再起動の際に自動的にswatchを起動する方法を検討。
方法は2つ。

1,/etc/rc.d/rc.local にswatch -c /root/.swatchrc -t /var/log/messages &を記述する
2,/etc/rc.d/init.d/にswatchを作成して、次の内容を過去込む。

============================================================
#! /bin/sh
#
# chkconfig: 2345 99 99
# description: tcpserver
# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# See how we were called.
case "$1" in
start)
echo -n "Starting Swatch: "
/usr/bin/swatch -c /root/.swatchrc -t /var/log/messages >/dev/null 2>&1 &
RETVAL=$?
echo
;;

stop)
echo -n "Stopping Swatch: "
killproc tail
RETVAL=$?
echo
;;

restart)
$0 stop
$0 start
RETVAL=$?
;;

*)
echo "Usage: swatch {start|stop|restart}"
exit 1

esac
exit $RETVAL
============================================================

そして、chkconfig swatch on

この何れかで行けるはず。

任意にstop&startを行いたいので、今回は「2」の方法を選択した。

では、serviceを起動して様子を見てみよう。。。

/etc/rc.d/init.d/swatch start


これで、NICが死ぬまで待ってみよう・・・(笑


投稿時間: 20:45

玄箱FedoraでS・M・A・R・Tを使ってみよう

先にインストールした玄箱LinuxではS・M・A・R・Tを使い、HDDの監視を行っていた。

同じように監視してみよう。

関係の有るようなパッケージをインストール。

# yum install smart

インストールされるパッケージは2つ

smart-0.42-40.fc6
fedora-package-config-smart-6-8

インストールするも、動かない。

Vineと同じくsmartmontoolsが必要らしい。

# yum install smartmontools

関連のパッケージもインストールされる。
smartmontools
cryptsetup-luks
dbus
dbus-glib
dbus-python
hal
hwdata
kbd
libgcrypt
libgpg-error
libusb
libvolume_id
libxml2-python
pciutils
pm-utils

おーー動いた。
当たり前か!!

Temperature Celsius 36

HDDの温度は36度。 良い感じだね。(冬だから・・・)

投稿時間: 00:37

RAID5EE 初体験。

本日、専用ホスティングServerの依頼があり、会社のデータセンタにあるマシンにLinuxをインストールすることになった。
他のスタッフがWinServerをインストールしていたが、使わなくなったとの事で他のサービスに廻すことにした。
CPUは「Xeon2.4」でちょっと低め。
しかし、HDDが5本も付いている。
勿体無い・・・ 1本は外してしまえ~~~

今回のサービスではHDD3本でRAID5を構築。 安全のためにホットスワップ対応で合計4本構成にした。
早速RAIDを組みなおす作業を行っていたら、「おや?」RAID構成に見たことの無いRAIDがあった。
「RAID0」「RAID1」「RAID1E」「RAID5E」「RAID5EE」

あら? ちょっとおかしくない?

「E」って何? 
「EE」って何よ~~~

色々調べていると、このRAIDはアダプテック製のカードで動くらしい。
通常RAID5を構築する場合は、最低3本で動作する。
ホットスワップにする場合は、プラス1本の合計4本になる。

しかし、ホットスワップHDDは通常動いている3本のHDDに異常が起こったときに切り替わるようになっている。
っと言うことは、異常が無い限り遊んでいるHDDと言うことになる。
これは勿体無いと思ったのか、スワップHDDも使ってしまおうと言うのがRAID5EEらしい・・・。
※俺の認識はあっているのか????

通常のRAID5は読み込みは早いが書き込みが遅いと言う欠点があるが、RAID5EEはパリティを4本に分散するので書き込みも読み込みも早くなるらしい。
※これってRAID6では??? RAID5EEとRAID6の違いは何? あとで調べよう。

早速RAID5EEにて構築。
Linuxも無事インストール。

  ・
  ・
  ・
  ・

悪い癖がでた・・・・

ディスクが壊れたと想定して、HDDを1本外した(笑)

お~アクセスランプがピカピカピカ~~~。
通常のRAID5に構築変更している。
管理TOOLで見てみると「収縮中」だって・・・
2時間程度そのまま放置。
RAID5の構築が終わった。

いよいよRAID5EEに戻す実験。

HDDをブスリと挿してみる。

ピカピカピカ~~~
RAID5EEを再構築している。

すげ~ 久々の感動。

負荷の少ないサービスの場合、ボトルネックになるのはHDDのアクセス。
これならHDDを遊ばせることも無いし、アクセス速度も速くなる。
少々スペックの低いCPUでもこれなら充分行けるはず・・・・

中古HDDも安くなってきたので、資金に余裕があるときはRAID5EEを構築する事にしよう。。。

投稿時間: 00:55

WebminのQMail Configurationが直った!!

我が家の玄箱Linuxには関係ない話だが、日ごろ管理を行っている会社のLinuxServer達のWebminの一部機能が直ったようだ。

ほとんどのLinuxServerで利用しているMTAがQmailで、何かトラブルがあった場合はWebminを使い簡易的に管理を行っている。
バージョンが1.280の時は「QMail Configuration」→「User Mailboxes」の機能が正常に動いていてユーザー宛のメールをチェックすることが出来た。 → 盗聴ではないですよ。 ユーザー領域制限を超えた場合、受信が出来なくなってしまうときがあるので、その時の対応ですから~~ (笑

しかし、バージョンが1.290にUPDATEしてから、なにか不具合があったようで総てのユーザーが見えなくなっていた。
色々調査はしていたが原因不明の為、トラブルがあった場合はSSHでログインして管理・メンテナンスを行う始末。

しか~~~~し、今週初めにバージョンが1.300に上がっていた。

早速UPDATEを行うと、「User Mailboxes」が昔みたいに見えるようになっていた。

「おかえりなさい・・・」

管理者として失格とは思うものの管理するServerが50台を超えると、非常にしんどい。
失格と言われようが、楽に管理できたほうが良いに決まっている。
早く正確に対応することが、管理者にとって一番重要なことだと思っている・・・・

なんと言われようと、Webminを使い続けるぞ!!

投稿時間: 23:59

玄箱にS・M・A・R・Tで安全対策

玄箱でウィルス対策を行っている最中だが、ふと思ったことがあった。

玄箱はHDDが1本
FANは付いていると言っても、HDDを効率良く冷却しているかがわからない。
そこで、S・M・A・R・Tでチェックすることにしよう。

いつものように・・・
# apt-get install smart

該当が無い。
もしかして名称が違うのかと思い、FTPサイトにて確認。
「smartmontools」と言うパッケージになっているらしい。
そこで再度apt-get
# apt-get install smartmontools

無い(ーー;)

再度FTPサイトで確認すると、i386版は用意されているがppc版は無い。
そこで「SRPM」をゲットしてrebuildすることにした。

# wget http://ftp.kddilabs.jp/pub/Linux/packages/Vine/apt/3.1/SRPMS.plus/
smartmontools-5.36-1vl1.src.rpm
# rpm -ivv smartmontools-5.36-1vl1.src.rpm
# cd /usr/src/vine/SPECS
# rpmbuild -bb smartmontools.spec

errorが出る。
libtoolize が必要と警告がでる。

そこで、パッケージを探してみる。
該当するのはlibtoolらしい。
# apt-get install libtool

すると、依存関係でautomakeもインストールされるらしい。

再度rebuild
# rpmbuild -bb smartmontools.spec

問題なくrebuild出来た。
smartmontools-5.36-1vl1.ppc.rpm

早速インストール
# cd /usr/src/vine/rpms/ppc
# rpm -ivh smartmontools-5.36-1vl1.ppc.rpm

インストール完了。

早速チェックする。
# smartctl -a /dev/hda
smartctl version 5.36 [powerpc-unknown-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family: Maxtor DiamondMax Plus 9 family
Device Model: Maxtor 6Y120P0
Serial Number: Y3K4KKZE
Firmware Version: YAR41BW0
User Capacity: 122,942,324,736 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: ATA/ATAPI-7 T13 1532D revision 0
Local Time is: Tue Sep 19 14:11:51 2006 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 39) The self-test routine was interrupted
by the host with a hard or soft reset.
Total time to complete Offline
data collection: ( 242) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
No General Purpose Logging support.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 54) minutes.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
3 Spin_Up_Time 0x0027 203 202 063 Pre-fail Always - 16177
4 Start_Stop_Count 0x0032 253 253 000 Old_age Always - 78
5 Reallocated_Sector_Ct 0x0033 253 253 063 Pre-fail Always - 0
6 Read_Channel_Margin 0x0001 253 253 100 Pre-fail Offline - 0
7 Seek_Error_Rate 0x000a 253 252 000 Old_age Always - 0
8 Seek_Time_Performance 0x0027 253 247 187 Pre-fail Always - 58935
9 Power_On_Minutes 0x0032 189 189 000 Old_age Always - 438h+20m
10 Spin_Retry_Count 0x002b 253 252 157 Pre-fail Always - 0
11 Calibration_Retry_Count 0x002b 253 252 223 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 253 253 000 Old_age Always - 89
192 Power-Off_Retract_Count 0x0032 253 253 000 Old_age Always - 0
193 Load_Cycle_Count 0x0032 253 253 000 Old_age Always - 0
194 Temperature_Celsius 0x0032 253 253 000 Old_age Always - 42
195 Hardware_ECC_Recovered 0x000a 253 252 000 Old_age Always - 40495
196 Reallocated_Event_Count 0x0008 253 253 000 Old_age Offline - 0
197 Current_Pending_Sector 0x0008 253 253 000 Old_age Offline - 0
198 Offline_Uncorrectable 0x0008 253 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0008 199 199 000 Old_age Offline - 0
200 Multi_Zone_Error_Rate 0x000a 253 252 000 Old_age Always - 0
201 Soft_Read_Error_Rate 0x000a 253 252 000 Old_age Always - 12
202 TA_Increase_Count 0x000a 253 052 000 Old_age Always - 0
203 Run_Out_Cancel 0x000b 253 252 180 Pre-fail Always - 10
204 Shock_Count_Write_Opern 0x000a 253 252 000 Old_age Always - 0
205 Shock_Rate_Write_Opern 0x000a 253 252 000 Old_age Always - 0
207 Spin_High_Current 0x002a 253 252 000 Old_age Always - 0
208 Spin_Buzz 0x002a 253 252 000 Old_age Always - 0
209 Offline_Seek_Performnce 0x0024 189 189 000 Old_age Offline - 0
99 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
100 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
101 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0

SMART Error Log Version: 1
No Errors Logged

当然のごとく、今は問題ない。

一般的は使い方でオプションの指定がある
=====================================
-a すべての情報を表示する。
-i ハードディスクのS.M.A.R.T.サポート状況を表示する。
-l エラーのログを表示する。
-v 温度やシークエラーなどの状況を表示する。
-t テストを実行する。
-h オプション一覧と使用例を表示する。 ヘルプですね。
=====================================

しかし、vineのsmartmontoolsは若干違うようだ。
「-v」が、smartmontoolsでは「-A」になっているようです。

再度、見てみる。
# smartctl -A /dev/hda
smartctl version 5.36 [powerpc-unknown-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
3 Spin_Up_Time 0x0027 203 202 063 Pre-fail Always - 16177
4 Start_Stop_Count 0x0032 253 253 000 Old_age Always - 78
5 Reallocated_Sector_Ct 0x0033 253 253 063 Pre-fail Always - 0
6 Read_Channel_Margin 0x0001 253 253 100 Pre-fail Offline - 0
7 Seek_Error_Rate 0x000a 253 252 000 Old_age Always - 0
8 Seek_Time_Performance 0x0027 253 247 187 Pre-fail Always - 59034
9 Power_On_Minutes 0x0032 189 189 000 Old_age Always - 438h+36m
10 Spin_Retry_Count 0x002b 253 252 157 Pre-fail Always - 0
11 Calibration_Retry_Count 0x002b 253 252 223 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 253 253 000 Old_age Always - 89
192 Power-Off_Retract_Count 0x0032 253 253 000 Old_age Always - 0
193 Load_Cycle_Count 0x0032 253 253 000 Old_age Always - 0
194 Temperature_Celsius 0x0032 253 253 000 Old_age Always - 42
195 Hardware_ECC_Recovered 0x000a 253 252 000 Old_age Always - 40495
196 Reallocated_Event_Count 0x0008 253 253 000 Old_age Offline - 0
197 Current_Pending_Sector 0x0008 253 253 000 Old_age Offline - 0
198 Offline_Uncorrectable 0x0008 253 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0008 199 199 000 Old_age Offline - 0
200 Multi_Zone_Error_Rate 0x000a 253 252 000 Old_age Always - 0
201 Soft_Read_Error_Rate 0x000a 253 252 000 Old_age Always - 18
202 TA_Increase_Count 0x000a 253 052 000 Old_age Always - 0
203 Run_Out_Cancel 0x000b 253 252 180 Pre-fail Always - 10
204 Shock_Count_Write_Opern 0x000a 253 252 000 Old_age Always - 0
205 Shock_Rate_Write_Opern 0x000a 253 252 000 Old_age Always - 0
207 Spin_High_Current 0x002a 253 252 000 Old_age Always - 0
208 Spin_Buzz 0x002a 253 252 000 Old_age Always - 0
209 Offline_Seek_Performnce 0x0024 189 189 000 Old_age Offline - 0
99 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
100 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
101 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0

こんな感じで表示される。

温度のみ出力したい場合は・・・
# smartctl -a /dev/hda | grep Temp
194 Temperature_Celsius 0x0032 253 253 000 Old_age Always - 42

これを見ると、現在42℃って事ですね。
玄箱で使っているHDDは「Maxtor 6Y120P0」でデータシートを見てみると動作時の温度が「5~55」となっている。
もっと温度を下げたいところだが、許容範囲内なので問題はないでしょう。
時間があるときにでも、玄箱内部の熱対策を行うことにしよう。
※排気FANの改善(交換)
※HDDやCPUの廃熱改善

次にやらなければならないのが、問題が出る前に何かしらの予兆があるはず。
それをデーモンで監視して、アラートを出すようにすれば完全にクラッシュする前にデータを救う事が出来るでしょう。

そこで、次のような設定を行いました。

# vi /etc/smartd.conf

  #/dev/hdc -H -m admin@example.com
となっている所のコメントを外して修正する
  /dev/hda -H -m root

そしてデーモンを自動起動。
# chkconfig smartd on

デーモンスタート
# /etc/rc.d/init.d/smartd start


これでOKかな?
でも、メールの設定を行っていないのでアラートは飛んできませんね ^^;

投稿時間: 23:58

CentOS4.4のNIC不具合?

ココのところ業務で使っているLinuxServerのUPDATEを行っている。
CentOSが4.3から4.4になっている。
いつものように「yum」でUPDATEを行った。

しかし、Serverによっては4.4にUPしてからNICの調子が悪いようだ。
再起動するとNICが立ち上がらない。

設定ファイルが書き換わったの? っと思いながらネットワーク関連の設定FILEを覗いてみる。
書き換えられている様子が無い。

NICを強制的に再起動してみる
# /etc/rc.d/init.d/network restart

立ち上がる。 問題ないようだ。
そこで、再度再起動してみるが立ち上がらない。
# /etc/rc.d/init.d/network restart
立ち上がる。

はにゃ? 

該当するところを散々除いてみるが問題ない。
そこで、ググッて見ると4.4にUPDATEすることでNICの不具合が出ているようだ。

しかし、すべてのServerでこの現象が出ているわけではない。
一部のServerのみ。

そこで、該当するServerのchipを調べてみると共通してbroadcomのNICを使っている。
※broadcomのNICを使っていても問題が出ていないServerもある。

4.3から4.4にUPDATEすることで問題が出ている。
NIC系を触るアプリケーションがあるのかも知れない。
調べてみるが該当するようなものは無い。
唯一怪しいのかkernelかな?

ん~~ kernelの再構築で対応できるのかも知れないが、時間が掛かる。
もしかして直せないかも知れない。

ん~ kernelのバージョンアップを待って様子を見ることにするか。

稀にしか再起動は行わないし、このままでも問題はないだろう。

投稿時間: 21:22

玄箱でウィルス対策 インストール其の参

問題なく「clamav」のインストールが出来たので、管理を簡単にする上でwebminに「Clam Antivirus」を入れて、尚且つ日本語対応にしてみよう。

先ずは、「Clam Antivirus」の日本語についてググッてみよう。
するとHIT。
Marijuanaさんのサイトに日本語パッチがあるらしい。

早速、clamd_pack.tar.gzをダウンロードして解凍。
READMEを見てみると「wbmclamav0.6.2」「ClamAV 0.87.1以上」との内容。

最新バージョンは「wbmclamav-0.7.1」となっているが、READMEでは「wbmclamav0.6.2」になっているので、あえて「wbmclamav0.6.2」をインストールすることにする。

おっと、その前に「HTML::Entities」が必要になるとの事なので、CPANから「HTML::Entities」をもってきてインストール

ダウンロード後、webminの「Webmin」→「Webminの設定」→「Webminモジュール」にてインストールを行う。

その後、日本語パッチを当てる。
# tar xvfz clamd_pack.tar.gz
# cd clamd_pack
# cp ja_JP.euc /usr/libexec/webmin/clamav/lang/

これで日本語OK
Clam Antivirusのモジュール設定を行う。

っが、「Date::Manip」と「Compress::Zlib」が足りたいと警告。

いつものようにCPANからもってくる。

これで管理が簡単になる?

投稿時間: 00:26

玄箱でウィルス対策 インストール其の弐

昨日に引き続き設定作業を行う。

clamd設定
# vi /usr/local/etc/clamd.conf

#Example →コメントアウトする。
LogSyslog      →コメントアウトを消す
LogFile /var/log/clamd.log →コメントアウトを消してディレクトリを変更
FixStaleSocket   →コメントアウトを消す
MaxThreads 10   →コメントアウトを消す
User clamav    →コメントアウトを消して「clamav」に変更

ウィルス・データベース更新時のログファイルを生成しておく。
# touch /var/log/clam-update.log
# chown clamav. /var/log/clam-update.log
# touch /var/log/clamscan.log
# chown clamav. /var/log/clamscan.log
# touch /var/log/clamd.log
# chown clamav. /var/log/clamd.log

念のため、ログが吐き出されるかを確認。
# /usr/local/bin/freshclam --log=/var/log/clam-update.log
# ls /var/log/clam-update.log
-rw-r--r-- 1 clamav clamav 375 Sep 17 05:13 /var/log/clam-update.log

正常に吐き出されている・・・・。

Cronに登録しましょう
#crontab -u clamav -e
0 */3 * * * /usr/local/bin/freshclam --quiet -l /var/log/clam-update.log

非力は玄箱なので、3時間毎の更新にしておこう。

デーモンの起動サンプルスクリプトをコピーする。
# cp contrib/init/RedHat/clamd /etc/rc.d/init.d/
# chmod 744 /etc/rc.d/init.d/clamd
# chkconfig --add clamd
# chkconfig clamd on

起動してみる。
# /etc/rc.d/init.d/clamd start

確認してみる。
# ps axf
2862 ? S 0:00 /usr/local/sbin/clamd

こんな感じで出ていればOK

今日はココまで!!

投稿時間: 05:28

玄箱でウィルス対策 インストール其の壱

玄箱をメールServerにしようと考えているが、その前にウィルス対策を行っておこうと思う。

玄箱のCPUがご存知の通りPPC。
PPC版Linuxとウィルスでググッて見るが、導入している実績が少ないようだ。
その中で、最も多いウィルス駆除が「clamav」

今まではSOPHOSを使っていたが、PPCで使えないようだ。
仕方が無いので「clamav」に挑戦してみよう。

早速、http://www.clamav.net からダウンロード。

インストールを行う。
参考にさせていただいたサイトは「Hodakaの居場所」「Clam Antivirusに関するメモ」「釣ったよ!」を主に参考にさせていただきました。

 あざ~~す!!

今回ダウンロードしたバージョンは「clamav-0.88.4.tar.gz」

先ずはグループとユーザーを作成
# groupadd clamav
# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

作業を行うディレクトリに移動する。
# /usr/local/src

ソースをダウンロード
# wget http://keihanna.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz

解凍する
# tar xvfz clamav-0.88.4.tar.gz

所有者をrootに変更
# chown -R root:root clamav-0.88.4

makeしてinstall
# cd clamav-0.88.4
# ./configure
# make
# make install

無事installが終わったら設定してワクチンをUPDATE

# vi /usr/local/etc/freshclam.conf
Example  →をコメントアウト。
DNSDatabaseInfo current.cvd.clamav.net  →コメントアウトを消す
DatabaseMirror db.jp.clamav.net   →コメントアウトを消して修正
DatabaseMirror database.clamav.net  →コメントアウトを消す
LogSyslog  →ログに残すのでコメントアウトを消す
DatabaseOwner clamav  →コメントアウトを消す
NotifyClamd  →コメントアウトを消す

そしてUPDATE
# /usr/local/bin/freshclam -v

正常にスキャンできるかを確認。 すべてのディレクトリをスキャンしてみる。
# clamscan -r /

すげー時間が掛かったが、問題なく動いているようだ。

今日はココまで (-_-)zzz

投稿時間: 01:30

玄箱にPHPアクセラレータ導入 其のⅡ BenchMark編

eAcceleratorも導入できたので、実力を試してみる。

cubi9.comのココを参考にベンチマークを取るための準備をする。

お手本通りに、test.phpを作成

===================================
<?php
require_once "Benchmark/Timer.php";
$timer = new Benchmark_Timer;
$timer->start();
$timer->setMarker('Mark 1');
for($i = 0; $i < 10; $i++) {
include("a.inc");
}
$timer->setMarker('Mark 2');
for($i = 0; $i < 10; $i++) {
include("b.inc");
}
$timer->setMarker('Mark 3');
for($i = 0; $i < 10; $i++) {
include("c.inc");
}
$timer->stop();
$timer->display();
?>
===================================
※一部消えてしまうので、大文字で表記しています。

次に読み込む為のデータの作成。

===================================
<?php
$a = 1;

  ・
  ・
  ・    3万行分作成
  ・
  ・

$a = 1;
?>
===================================

これを、「a.inc」「b.inc」「c.inc」として保存。

作ったFILEを玄箱に上げて、test.phpにアクセス。

何も出ない・・・・
スクリプトの記述を見ても間違いは無い。
何度やっても、出ない・・・・^_^;

お~~ 1つ作業が抜けている。
PHP Paer の BenchMark が無いようだ。

早速、作業。
# /usr/bin/pear install Benchmark

んで、test.phpにアクセス。

でたでたでた~~~

早いのか、遅いのか解らない・・・
control.phpを確認すると、キャッシュ用の16MB をすべて使い切っている。

そこで、php.iniに昨日書き足した部分をコメントアウト。
eAcceleratorが無い状態で再度テスト。

おー 遅い。

やはり、eAccelerator導入でこれだけ変る。
eAcceleratorのキャッシュを16MBから32MBに上げればもっと早くなる??
このテストは次回暇なときにでも行おう。
 

投稿時間: 23:57

玄箱にPHPアクセラレータ導入

非力ば玄箱HGに少しでも快適にアクセスできるようにアクセラレータを導入することにした。

今まではPHPAなる物を導入していたが、PPCな玄箱では使えないようだ。
※PPC版もあるようだが、glibc-2.3.3らしく今回は使えない。。。

そこで、他のアクセラレータを導入するべく、ググッてみる。

様々なアクセラレータが存在するようたが、ネットでの評判が良い"eAccelerator"を導入することにする。

参考にYosiさんの「Vine Linuxで自宅サーバー」を参考にさせていただいた。

早速最新版のeaccelerator-0.9.5-rc1.tar.bz2をゲット。

wgetでダウンロードする
# wget http://jaist.dl.sourceforge.net/sourceforge
/eaccelerator/eaccelerator-0.9.5-rc1.tar.bz2  ← 実際は1行で入力

解凍する
# tar zxvf eaccelerator-0.9.5-rc1.tar.bz2
# cd eaccelerator-0.9.5-rc1

phpizeの在り処を探す・・・
# find / -name phpize -print
     無いようだ・・・。

apt-getでdevelをインストール
# apt-get install php-devel

再度、phpizeを探す
# find / -name phpize -print
/usr/bin/phpize
      あった!

phpizeを実行する。
# /usr/bin/phpize
Configuring for:
PHP Api Version: 20020918
Zend Module Api No: 20020429
Zend Extension Api No: 20050606

php-configを探す。
# find / -name php-config -print
/usr/bin/php-config
     あった。

準備が整ったのでconfigureを行う。
# ./configure --enable-eaccelerator=shared
--with-php-config=/usr/bin/php-config  ← 実際は1行で入力

  ・
  ・
  ・
  ・
  ・

checking for best semaphores type... configure: error: "You need to pass the
user id eaccelerator will be running under when using sysvipc semaphores"
と言うエラーが出て怒られる。
実行するユーザーの指定が必要なのか?
そこで、useridを追加して再度実行
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config --with-eaccelerator-userid=apache

お~無事に終わった。
次に・・・make
# make

これもclearではinstall
# make install
Installing shared extensions: /usr/lib/php4/

へ? これだけ?

# ls /usr/lib/php4/eaccelerator.so
/usr/lib/php4/eaccelerator.so*
     確認OK

キャッシュを確認(付属のWEBインターフェイス)するためのphpをコピーする。
# cp control.php /home/httpd/html/

キャッシュディレクトリを作成
# mkdir /tmp/eaccelerator

アクセス権限をapacheに変更
# chown apache:apache /tmp/eaccelerator/

php.iniの修正(編集)
# vi /etc/php.ini

一番最後に追加する。

[eAccelerator]
zend_extension = "/usr/lib/php4/eaccelerator.so"
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"

んで、apacheの再起動。

組み込みの確認はinfo.phpを作成して確認してみる。

# cd /home/http/html
# vi info.php

 <? phpinfo(); ?>  ← 「<」&「>」は半角英数 

を保存して、WEBで確認。
http://ドメインまたはIPアドレス/info.php

================================================
This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
================================================
と言う内容から
================================================
Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with
eAccelerator v0.9.5-rc1, Copyright (c) 2004-2006 eAccelerator,
by eAccelerator
================================================

に変っていれば、組み込まれている。

次に先ほどコピーした付属のWEBインターフェイスの確認をしてみよう。
http://ドメインまたはIPアドレス/control.php

その前にユーザーPASSを変更しておこう。
デフォルトでは[ユーザー名:admin] [パスワード:eAccelerator]
になっているので、エディタで修正。
# vi /home/http/html/control.php

修正が終えたら、早速control.phpにアクセス。

おー 出た出た。

これで、非力な玄箱でも快適に稼動することが出来るだろう!!
 

投稿時間: 23:49

LinuxでDB2クライアント

「Linux側からDB2に接続できん!」と連絡が入った。

早速問題のLinuxで接続テストをしてみた。

DB2のクライアントUSERである「db2inst1」にてログイン

SQLコマンドを打ってみる
$ db2 connect to XXdb user XXuser using XXXX
$ select * from XXtest
正常に接続できる。。。

     ※一部「X」の伏字にしてあります。

っと言うことは、Linuxそのものの接続障害は出ていない。
って事は、apache+php+DB2の時に障害が出ている可能性がある。

今回の環境はDB2のServerがWindowsServer2003でクライアントとしてCentOS4を使っている。
メンテナンスを簡単にするために、オリジナルのRPMを一部カスタマイズしてインストールしている。
※セキュリティバグがあった際に簡単にUP出来るように・・・

DB2接続テスト用のphpを用意して確認するが、接続できない。
apacheを再起動しても接続できない・・・・。
困った。

そういえば、LinuxのDB2クライアントの設定を行った際にphpでの接続テストは行っていなかった。
もしかすると、RPMのカスタマイズが不完全なのかも知れない。

CentOSのUPDATEを確認するとphpのバージョンが上がっている。
※php-4.3.9-3.9 → php-4.3.9-3.15
ついでなのでrpmbuildの時にバージョンアップも行ってしまおう。
CentOSのサイトから「php-4.3.9-3.15.src.rpm」を持ってくる。

rootにて
# rpm -ivv php-4.3.9-3.15.src.rpm

展開されたディレクトリに移動
# cd /usr/src/redhat/SPECS/

元となる設定FILEをコピーしておく
# cp php.spec php_db2.spec

設定FILEをDB2用に書き換える。
(DB2用のパッケージにするにはODBCの部分を一部書き換える。DB2専用になってしまうが、問題はないだろう。)

# vi php_db2.spec

先ずはバージョンを解りやすいように書き換える
Release: 3.15 と言うところを
  ↓
Release: 3.15.DB2 に変更


BuildRequires: unixODBC-devel と言う所を
  ↓
#BuildRequires: unixODBC-devel コメントアウト


--with-unixODBC=shared,%{_prefix} \ と言うところを
  ↓
--with-ibm-db2=shared,/opt/IBM/db2/V8.1 \ に変更

この3つを書き換えたら
# rpmbuild -bb php_db2.spec

しばらくすると、RPMが出来上がる。

現在インストールされているphpを念のためすべて削除し、改めて今回カスタマイズしたRPMをインストール。

php-odbcのインストール時で「libdb2.so.1 is needed by php-odbc-4.3.9-3.15.DB2」と言うエラーが出るが強制的にインストール。
# rpm -ihv --nodeps php-odbc-4.3.9-3.15.DB2.i386.rpm

必要なパッケージをインストールしたら一旦apacheを再起動して、テスト用のPHPを参照してみる。

  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・
  ・

繋がらない・・・・・(ーー;)

えっ! なんで~~~

もしかしてPHPのrebuildの失敗ではなく、他に原因があるのかも知れない。
もしかして、apache起動時にDB2も起動しているが、その部分に問題がありそうだ。

以前正常にDB2接続できたapacheのバージョンは1.3.33だった。
今回のapacheは2.0.52だ。

今までは
/etc/rc.d/init.d/httpd の先頭の方に・・・

. /home/db2inst1/sqllib/db2profile
LANG=ja_JP.eucJP
export LANG

を追加していたが、apache2では使えないのかも知れない。
そこで、/usr/sbin/apachectl に

. /home/db2inst1/sqllib/db2profile
LANG=ja_JP.eucJP
export LANG

を書いてみた。

# /etc/rc.d/init.d/httpd restart

繋がらない・・・・

では、これでどうだ!!

# /usr/sbin/apachectl restart

(^^)v 繋がった。

でも、問題が・・・
apache1.3.33の起動スクリプトとapache-2.0.52の起動スクリプトの違いが解らない。
/usr/sbin/apachectl を見比べても解らない・・・・
OS起動時にapacheを起動しているが、DB2を呼び出すことが出来ない。

# chkconfig httpd off

でapacheの自動起動を停止。
仕方が無いので、OS再起動時は/usr/sbin/apachectl start するようにしよう。

これも、管理者の宿命ですね・・・・。

投稿時間: 00:03

Outbound Port25 Blocking(submission port)対応

ここ最近、SMTPを閉めているプロバイダが増えているようだ。
社内で利用しているメールServerは社員以外に外注先スタッフに使わせることもあり、
制限の厳しいプロバイダはメール送信が出来なくなっているようです。

■2006/7時点で解っているプロバイダ一覧
AEON NET
BIGLOBE
DION
DTI
hi-ho
IIJ
Infosphere
OCN
ODN, SpinNet
SANNET
Sharp/BB Space Town
SoftBank
So-net
TikiTiki
WAKWAK
WILLCOM
ツインインターネット
ZAQ
@nifty
ぷらら
フリービット

しかし、やり方によっては抜け道があるに違いない。
ネットで探すと以外にも簡単に出来そうだ。

submission port「587」が一般的に使われているので「587」に来たものを「25」へポートフォワードするように設定を追加

2、iptableにちょっとした細工。
※こんな感じ・・・ iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to ”IPアドレス”:25
3、iptableの再起動(適応)

単にこれだけ?

outlook express で試してみる。
・・・送信完了・・・
制限の掛かっている環境で、試験してみたがOKのようです。

メールサーバのセキュリティはどうなっているの?
色々試すが大丈夫みたい。
念のため「http://www.ordb.org/」にテストを申し込んでみる。


検査の結果が来た。


------------------------------------------------------

This is an automatically generated email

The host you submitted at ORDB.org (221.249.xxx.xxx), has been thoroughly
checked, and does not seem to permit relaying.

Please note however, that this may be caused by extreme delays at
the servers end.

Should we at a later time receive one of our testing emails from the
server you submitted, you will receive another email, telling you that
the server is in fact an open relay. In that case, please disregard this
email.

If you know for a fact that the host you submitted is
an open relay, please resubmit it via http://www.ORDB.org/submit/.
Additionally, some administrators have been known to block our ip-address
in various firewalling devices, which may also cause our test to fail.

If your host was marked as an open relay, it has now been removed from our
database, and will be removed from the relays.ORDB.org-zone during the next
zone-rebuild.

This email is sent from an unattended mailbox, so please do not
reply to it. To find information about how to contact ORDB.org,
please visit http://ORDB.org/contact/.

Have a nice day, thank you for using ORDB.org

PS. Need this mail translated? Have a look at:
http://ORDB.org/translation/#not_a_relay

------------------------------------------------------


おーっ! 大丈夫のようだ。

しばらくメールの配信ログを監視してみよう。
ログの確認より、利用しているユーザーに連絡をすることのほうが大変かな??

投稿時間: 02:08